簡體   English   中英

使用WIX升級MSI

[英]Upgrade MSI using WIX

我正在使用WIX創建一個MSI安裝程序。 很好,我能夠創建自己的產品並創建所有東西。

但是當我想創建一個升級時,它就無法正常工作。

我使用了以下代碼,其中$(var.ProductUpgradeCode)被定義並用作product元素中的升級代碼。

        <Upgrade Id="$(var.ProductUpgradeCode)">
        <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND"
            Minimum="$(var.ProductVersion)" IncludeMinimum="yes"
            Maximum="$(var.ProductVersion)" IncludeMaximum="yes" />
        <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND"
            Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
    </Upgrade>


    <CustomAction Id="AlreadyUpdated" Error="[ProductName] has already been updated to [ProductVersion] or newer." />
    <CustomAction Id="NoDowngrade" Error="A later version of [ProductName] is already installed." />

    <InstallExecuteSequence>
        <Custom Action="AlreadyUpdated" After="FindRelatedProducts">SELFFOUND</Custom>
        <Custom Action="NoDowngrade" After="FindRelatedProducts">NEWERFOUND</Custom>
        <RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
    </InstallExecuteSequence>

在舊的MSI中,產品ID =“ =” GUID1“版本=” 1.0.0“

在新的MSI中,產品ID =“ =” GUID2“版本=” 1.0.1“

當安裝了舊版本,而我嘗試安裝新版本時。 啟動舊的MSI,並詢問“更改/修復/刪除”對話框。 但是我想繼續安裝,當按“ Install”(在progressDlg之前)時,我想卸載舊版本。

在1.0.0和1.0.1之間只有一個文件更改。 我所有的文件都有自己的組件和自己的GUID集(不是自動的)。

怎么了 ? 新的WIX版本是否有用? 我昨天下載了最新的。

假設新MSI中的其他所有內容都正確,那么我看到的錯誤是升級設置中只有OnlyDetect = yes。 正如WiX文檔所述:“設置為“是”以檢測產品和應用程序,但不卸載”。 因此,首先要進行更改。

請注意,使用MajorUpgrade元素更為常見,該元素負責設置。 沒有冗長的日志,其他一切都正確(例如MSI中的FindRelatedProducts)並不明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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