2
如果沒有組件更改,升級工作正常,但任何時候組件更改升級失敗並需要用戶手動卸載並重新安裝。Wix主要升級,我做錯了什麼?
一些片段:
<Product Id="*" Name="My Application" Language="1033" Version="!(bind.FileVersion.ClientEXE)" Manufacturer="My Company" UpgradeCode="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
<Package Id="*" Description="My Installer" Comments="Copyright My Company 2008" InstallerVersion="200" Compressed="yes" />
<Upgrade Id="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
<UpgradeVersion Language="1033" Property="UPGRADEFOUND" Minimum="0.0.0.0" Maximum="99.99.99.99" IncludeMinimum="yes" IncludeMaximum="yes" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
此外,與下面的註冊表項,有時不刪除在卸載了一些問題,我不明白爲什麼:
<Component Id="InstalledRegistry" Guid="SOMEGUID-0a17-4c6b-983d-8f3feb3a7724">
<RegistryKey Id="InstalledRegKey" Root="HKMU" Key="SOFTWARE\MyCompany\Client" Action="createAndRemoveOnUninstall">
<RegistryValue Name="Version" Type="string" Value="!(bind.FileVersion.ClientEXE)" KeyPath="yes"/>
</RegistryKey>
</Component>
這就是引導程序檢查知道是否使用「REINSTALL = ALL REINSTALLMODE = vamus」啓動msiexec,因此如果它被卸載但註冊表項沒有被刪除,安裝程序會嘗試執行升級並以靜默方式失敗。
讓我知道是否需要
編輯任何詳細信息:有一些其他的問題以後,只有一些文件被更新。將RemoveExistingProducts更改爲After =「InstallValidate」並解決該問題。使它慢一點,因爲它完全刪除了以前的安裝,而不僅僅是升級改變了的文件(它似乎沒有正確檢測到),但它完成了工作。
我明白了,因此重大升級不需要REINSTALL = ALL和REINSTALLMODE。我認爲這可能是問題所在。驗證後會接受 – Davy8 2009-03-02 19:42:10