2012-02-10 123 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 

​​

,它是固定的。

相關問題