簡體   English   中英

使用WIX希望制作一個程序包,該程序包將更新現有安裝並也首次安裝該應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM