0
我正在为我们的某个产品创建安装程序。安装程序是在早些时候使用WISE完成的,但我们希望将此版本更改为wix。在安装新版本之前,我们的用户卸载旧版本产品很重要,因此我需要检查旧安装程序创建的注册表中的密钥(在卸载旧版本时密钥会被删除)。Wix安装程序查找不存在的注册表项
我有像这样的WXS条件检查:
<!-- Check if older version of Product has been installed. Must be removed by user-->
<!-- The key below is set by the old installer. If it exists, the old version is there.-->
<Property Id="OLDKEY">
<RegistrySearch Id="OldRegKey" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Company Product för Product" Name="DisplayName" Type="raw"></RegistrySearch>
</Property>
<Condition Message="You need to uninstall the old version of Product before installing this one.">
OLDKEY
</Condition>
你会在那里发现一个瑞典字符。我怀疑这可能是一些问题的原因。这是我配置的方式,因为我必须处理瑞典字符:
<Product
Id="*"
Name="$(var.Manufacturer) $(var.ApplicationName)"
Language="1033"
Version="!(bind.FileVersion.Product.exe)"
Manufacturer="$(var.Manufacturer) AB"
UpgradeCode="[GUID]"
Codepage="1252"
>
请注意1252代码页。
当我在机器上安装并使用旧版本时,我在注册表中找到了密钥,安装程序会向我显示消息。如果我删除旧版本,我可以看到注册表项消失,但安装程序仍然会显示消息并退出。我尝试重新启动(你永远不知道)无济于事。
我用尽了想法...任何想法?
详细日志说什么? – 2012-02-10 12:30:20
创建安装日志以获取详细信息。我的猜测是,不知何故该属性设置。 – Ciprian 2012-02-10 12:32:57
Wise安装程序是否也是MSI? (你引用的关键不是)。但是如果是这样的话,你可以使用升级来找到以前的。 – 2012-02-10 12:46:18