2015-08-21 120 views
-2

我一直在使用WIX建立了一個MSI安裝程序。根據要求,我必須爲下一次構建提供升級。所以,我檢查了升級,升級類型,其實施步驟,發現主要升級將適合我們。所以,按照我的步驟在項目的主要.wxs文件改變包裝代碼,商品代碼和版本號(增加版本),並生成正確的升級版本(對於我在註冊表檢查,控制面板,等...) 。在爲主要版本升級提示用戶升級

主要升級版本是正確遷移功能,但用戶沒有安裝信息是否升級或做了全新安裝。我預計會有一條消息,例如「安裝程序從V1.0.0.0升級到V2.0.0.0,您是否想要繼續」,因爲用戶正在進行安裝。

注意:在我的項目中,我只有2個自定義對話框,其餘的所有對話框(e.x.歡迎對話框,EULA對話框,InstallDir對話框等)都默認來自WixUIExtension.dll。

我探討幾個環節&有關重大升級的博客,但我並沒有得到與此相關的妥善解決。請分享您的寶貴意見&這是最好的方式/做法。

回答

0

您可以通過檢查UPGRADINGPRODUCTCODE特性檢測的重大升級。然後,您需要一個自定義操作來查詢MSI以獲取該已安裝產品的ProductVersion。最後,你必須詢問用戶並繼續或中止。

你打算如何處理上靜默安裝?只需自動繼續或要求他們傳遞一個屬性,如AGREETOUPGRADE = 1?

0

當你做了重大升級,假設你正在使用的WiX的majorupgrade標籤,然後將WIX_UPGRADE_DETECTED屬性設置。您可以使用它來調整要顯示的對話框。該屬性值將較舊的產品的產品代碼,所以你會做這樣的事情MsiGetProductInfo(產品代碼,.... INSTALLPROPERTY_VERSIONSTRING ....)來獲取它的版本。該對話框大概需要取消以中止升級。

您可能會遇到的問題,因爲檢索的ProductVersion可能需要提升。一般來說,沒有人會因此而驗證升級,因爲您的客戶比這更聰明。他們知道安裝是否正在升級新產品,而您問的問題越少,他們就越開心。