2014-11-04 60 views
4

我們的產品使用WIX安裝程序,只有我們的支持團隊執行安裝例程。 一個用於升級的必由之路包含兩個步驟:是否需要對所有產品版本使用獨特的WIX產品ID(如果不支持升級)

  1. 刪除已安裝的應用程序的任何以前的版本。我們所有的產品GUID的列表,使我們可以刪除所有可能的版本(MSIEXEC/X GUID)
  2. 安裝了舊版本的方案最新的一個

升級,維修或安裝將永遠不會被用於此產品(這是不可能的,因爲部署是由腳本執行的)。

如果我們不使用升級功能,或者可以保留相同的產品和升級ID,是否有必要使產品ID在所有新版本中都是唯一的?

回答

6

ProductCode property的文檔:此ID必須因不同的版本和語言而有所不同。因此,通常只需在Product元素中設置Id="*",以便它對於您生成的每個安裝程序包都是唯一的。

我想不出你爲什麼要讓這個ID保持不變,以適應不同版本的安裝程序;這會混淆Windows安裝程序,例如當您嘗試安裝較新的軟件包而未卸載上一個軟件包時,您可能會收到修復對話框。

只有當您使用MajorUpgrade時,升級代碼應該是相關的,但聽起來您並未使用該代碼。

編輯:好的,所以你想保持產品id相同,以便更容易卸載與msiexec /x {GUID}

另一種方法是讓安裝程序本身在某處記錄產品代碼GUID。例如。通過creating an uninstall shortcut。或者,您可以將產品Guid寫入註冊表中的固定位置,然後您可以編寫一個腳本來讀取該值以進行卸載。

+0

其實我們並不期望較舊版本的軟件包安裝更新,它是受限的(問題更新)。 – 2014-11-04 13:13:57

1

您的兩個步驟過程正是主要升級所做的。但是,你說你不支持升級。這對我沒有意義。

正確創作的安裝程序可以通過腳本以無提示的方式執行,以自動將任何以前版本的軟件升級到當前版本。

-2

我建議你保持相同的產品ID。更改同一產品的產品ID不是一種好的做法。保持相同的產品ID。在安裝之前,像現在這樣使用腳本「msiexec/x GUID」進行卸載,然後再次安裝設置。據我所知,產品應該始終有唯一的ID。

+1

產品代碼應該針對每個版本進行更改;將其視爲包標識符,而不是「產品」的標識符。從[ProductCode屬性]的文檔(http://msdn.microsoft.com/en-us/library/aa370854(v = vs.85).aspx):*此ID必須因不同的版本和語言而有所不同。* – 2014-11-14 10:00:47