因此,我有一個windows服務,可以在一臺服務器上安裝多個實例。安裝程序需要能夠升級單個實例。安裝程序使用實例轉換,但我不確定如何根據需要進行主要升級。WiX - 對多實例安裝進行重大升級
對於重大升級的工作,我的理解是,我應該有產品代碼的變化,所以實例以這種形式定義:
<Instance ProductCode="*"
UpgradeCode="{SOMEGUID}"
ProductName="Instance 1"
Id="Instance1"/>
微星可以啓動通過安裝一個新的實例:
msiexec.exe /i "installer.msi" TRANSFORMS=:Instance1 MSINEWINSTANCE=1
然而,經過一番搜索,我發現運行在特定的情況下升級的唯一途徑是這樣的格式:
msiexec.exe /i "installer.msi" /n {PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus
這個問題是,如果產品代碼是自動生成的主要升級,那麼我不知道它是什麼,所以我不能傳遞給命令參數。
有沒有辦法使用實例的UpgradeCode或InstanceID或ProductCode啓動升級?因爲這兩者都會保持靜態。或者,我可以啓動沒有參數的msi,在UI對話框中選擇現有實例(通過檢查註冊表),並設置適當的屬性以強制msi進入該實例的升級模式?
您可能會發現這有幫助:http://sklyarenko.net/blog/2011/09/14/revisited-multiple-instance/ –
在我看來,一旦每個實例安裝,它是一個產品的產品代碼。如果你正在進行升級,那麼你的新產品只需要進行一次無聊的重大升級,然後用升級表填充升級表,以替換以前應該替換的任何產品。並不是說我對實例有很多瞭解,但是您是否嘗試了使用升級表的傳統方法,這些升級表會導致您的新實例升級您的每個舊實例。你是否說你不能單獨升級每個產品,因爲它們都具有相同的升級代碼?同一版本? – PhilDW
只是爲了讓您知道,您可以通過PowerShell在給定機器上獲得**產品代碼**,**升級代碼**和**產品名稱**的完整列表** ** [**我找到安裝的MSI文件的升級代碼?**](https://stackoverflow.com/questions/46637094/how-can-i-find-the-upgrade-code-for-an-installed-msi-file/46637095#46637095)。 –