2
我正在爲我們的軟件創建WIX安裝程序,現在我從以前的Windows Installer打包軟件升級時遇到了一些問題。WIX安裝程序無法從以前安裝的Windows安裝程序升級SW
在問題出現之前,從一個WIX打包軟件升級到另一個WIX打包軟件實際上工作正常,我可以卸載舊版本並安裝新版本。當舊版本是Windows Installer打包(這是我們當前的解決方案)並且較新版本是WIX打包時,會出現真正的問題。基本上我的WIX安裝程序無法發現已經安裝了舊版本,所以新版本將在不卸載舊版本的情況下安裝。
我如何建立WIX安裝程序和Windows安裝程序之間的連接:我將WIX的UpgradeCode設置爲與Windows安裝程序一樣。我也在網上查看一些例子,他們建議我現在的解決方案應該可以工作。這是我.wxs升級部分文件的一部分:
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="yes" Minimum="$(var.VersionNumber)" Property="NEWPRODUCTFOUND" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="$(var.VersionNumber)" Property="UPGRADEFOUND" IncludeMaximum="no" />
</Upgrade>
<CustomAction Id="PreventDowngrading" Error="A software with newer version number is found on this machine" />
<InstallUISequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>
有一件事可能是值得一提的是我們的SW實際上是一個Windows服務,我不知道這是否重要。謝謝你的幫助!
謝謝您的回覆。雖然我沒有將我的Wix安裝程序安裝範圍設置爲perMachine,這與舊版Windows安裝程序相同。無論如何,事實證明,舊的Windows安裝程序是一個32位SW,新的Wix安裝程序是一個64位SW。當我用32位構建WIX安裝程序並嘗試安裝時,它確實會成功卸載舊版本並安裝。 – tete
我錯過了大多數人創建一個32位軟件包。另外,你可能知道64位軟件包不能安裝在32位機器上。 –
是否有可能強迫它不這樣做?我有一個老的安裝程序,可以讓用戶選擇做 - 但是仍然安裝在「程序文件」中的每用戶模式下。他們試圖安裝在彼此之上,並且一塌糊塗。 –