2012-07-20 80 views
11

我有一個MSI安裝程序是這樣的:如何使用刻錄/ WiX的時候做重大升級3.6

<Product Id="*" ... UpgradeCode="4207FF3B-5E0D-4311-9DFC-B41AA8DE2965" /> 
    <MajorUpgrade DowngradeErrorMessage="Can't downgrade" /> 

它按預期工作:

  1. 安裝產品
  2. 重新編譯(有效地產生新的Id)
  3. 啓動新的msi文件會彈出更改視圖,我可以修復或卸載該產品。

好。但後來就燒了。

我創造了最簡單的捆綁一件事情。我用的是標準bootrapper,只是增加一個單一MsiPackage:

<MsiPackage SourceFile="$(var.Setup.TargetPath)" /> 

的問題是,每次重新編譯後,我可以再次安裝該產品已經安裝好的產品旁邊,在不改變任何東西!這會導致重複的ARP條目!

如果我不重新編譯並運行bundle exe文件兩次,我得到修改設置屏幕,如預期。我可以做什麼來像燒傷一樣擁有和MSI一樣的行爲?

回答

7

遞增捆綁版本號並且Burn將升級以前的版本並將其刪除。

+3

是的,謝謝。但是,如果不增加版本號,是否真的沒有辦法阻止並行安裝?我想與MSI包具有相同的行爲。 – 2012-07-22 15:26:33

+2

引導程序應用程序可以通過更改OnPlanRelatedBundle中的請求狀態來覆蓋默認的無操作行爲。 – 2012-07-22 15:52:39

+0

你會重寫請求狀態以使其工作?當下? – 2012-12-18 09:42:30