2012-02-10 121 views
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代码页。

当我在机器上安装并使用旧版本时,我在注册表中找到了密钥,安装程序会向我显示消息。如果我删除旧版本,我可以看到注册表项消失,但安装程序仍然会显示消息并退出。我尝试重新启动(你永远不知道)无济于事。

我用尽了想法...任何想法?

+0

详细日志说什么? – 2012-02-10 12:30:20

+0

创建安装日志以获取详细信息。我的猜测是,不知何故该属性设置。 – Ciprian 2012-02-10 12:32:57

+0

Wise安装程序是否也是MSI? (你引用的关键不是)。但是如果是这样的话,你可以使用升级来找到以前的。 – 2012-02-10 12:46:18

回答

1

如果找不到密钥,那么注册表搜索会返回1。因此,我改变

OLDKEY 

​​

,它是固定的。

相关问题