[英]Using WIX want to make a package that will update an existing installation and also install the application for the first time
在不同的地方,我都讀過類似於“如果特定用戶沒有安裝較早版本的產品,則打包為完整MSI軟件包的更新可以作為首次安裝”。
但是事實證明很難做到這一點。
我有一個安裝包,可以很好地安裝。 但是,當我在下面添加Upgrade元素時,它不會再進行首次安裝。
<Upgrade Id="DE3F65C6-FAAF-4FE0-8D3A-87E4A1F5E36F">
<UpgradeVersion OnlyDetect="no" Minimum="4.1.0.0" IncludeMinimum="yes" Maximum="5.0.0.7" IncludeMaximum="no" Property="PREVIOUSVERSIONFOUND" />
</Upgrade>
上面的ID與Product元素的UpgradeCode屬性相同。 我敢肯定我應該在“升級”元素中做些什么,但是誰能告訴我什么?
您可能在這里看到的一個潛在問題是Windows Installer只關心版本號中的前3個值。 微軟表示,第四個數字純粹用於內部構建跟蹤,因此發布的安裝程序不應該在意它。
因此,Windows Installer將5.0.0.1視為與5.0.0.30相同的版本。
另外,除非您需要某種復雜的升級邏輯,否則我建議您改用MajorUpgrade
元素,因為它消除了僅編寫將執行標准Major MajorUpgrade
的程序包的許多MajorUpgrade
。 關於它的文檔可以在這里找到
另一個令人困惑的事實是,雖然在幕后安裝程序實際上會將主要升級視為卸載,然后重新進行全新安裝,但您設置的UI可能不會以相同的方式運行,特別是如果您只是在使用默認的UI對話框集之一。
StackOverflow是否授予“宣稱自己是白痴的額頭”的徽章?
問題不在我所期待的地方。 為了讓其他任何人找到我的問題的答案,真正的答案是包括我在問題中提到的那個元素(顯然,Id和版本號已針對您的特定情況進行了修改)。
我的包裹也有
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
它可能不是絕對必要,但可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.