2015-02-09 153 views
-1

我創建了一個WiX的安裝與Product Version1.0.0如何在WiX安裝程序中添加「升級」配置?

<Product Id="*" Name="My Application" Language="1033" Version="1.0.0" Manufacturer="My Client" UpgradeCode="182bbc7d-8cc2-4014-9e1c-29312598bxc0"> 

我使用MajorUpgrade元素升級安裝程序如下:

<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 

方案:

Scenario 1:安裝版1.0.0已安裝版本1.0.0

在安裝相同的版本時,安裝程​​序要求修復或刪除,這是我想要的,並且工作正常。

Scenario 2:上已經安裝了1.0.1版

安裝1.0.0版本上安裝的舊版本,安裝程序將引發上單擊確定錯誤,我的應用程序的更新版本已安裝並退出。

我希望我的安裝程序,以顯示這個錯誤,並通過刪除版本1.0.1和1.0.0安裝

Scenario 3:安裝版本1.0.1on已經安裝了1.0.0版本

上安裝更高繼續安裝版本,安裝程序不會問任何問題,並通過刪除1.0.0和安裝1.0.1來繼續安裝。

我希望我的安裝程序要求確認是升級到更高版本還是取消安裝

這怎麼實現?

回答

0

要降級,您需要在MajorUpgrade元素中設置屬性「AllowDowngrades」。從下面的鏈接中瀏覽MajorUpgrade元素中的所有屬性。

WiX MajorUpgrade

0

升級的默認行爲是,他們只是發生。我認爲這樣的假設是,大多數人知道他們在安裝升級(或降級)時所做的工作,並且將干預措施降到最低是件好事,而且在靜默升級安裝中,無論如何都無法要求確認 - 它恰好發生。

因此,除了允許降級之外,您還需要添加一個基於屬性WIX_UPGRADE_DETECTED的確認對話框,可能會添加一個在該屬性上顯示條件的升級對話框。這有點尷尬,因爲你知道的只是你正在升級的產品代碼(這是WIX_UPGRADE_DETECTED的價值),沒有關於已經安裝的版本的其他信息。所以你只能說你正在升級(或者甚至降級)安裝的版本。要獲取已安裝產品的相關信息,您需要使用類似Win32 MsiGetProductInfo()API的方式向系統查詢該產品代碼的名稱和版本。這可能需要特權(即使你是管理員,UI序列也不會提升),所以事情變得非常棘手。

這是一個相當普遍的問題,所以有人可能已經做了一些事情,但快速搜索沒有找到任何東西。

相關問題