2013-08-16 47 views
16

WiX Bundle中的「版本」屬性顯示在程序和功能中。因此,這應該與我的實際應用程序的版本號相同,對嗎?如何使WiX Bundle版本與我的應用程序版本相同

假設他們應該是相同的,但似乎並不明顯如何自動進行此更新。根據this question,我得到MSI,但不是Bundle/Bootstrapper位。我如何讓Bootstrapper Bundle執行相同的操作並讀取MSI版本號?

回答

22

要回答你的第一個問題,這裏沒有硬性規定。因此,更新您的WIX捆綁軟件版本並不一定要將其與您的MSI版本進行匹配。

至於第二個問題,我不太確定。不過你可以試試這個粘結劑變量:

!(bind.packageVersion.PackageID) 

編輯與您正在安裝的程序的元素「id」屬性替換PackageID。喜歡的東西:Version="!(bind.packageVersion.MyAppName)"

<MsiPackage SourceFile="SomePath\MyAppName.msi" Id="MyAppName"/> 

在本POST提及。另請檢查WIX documentation瞭解更多聯編程序變量。

編輯 2017年5月11日 - 看起來像有一圈包標識應該是什麼樣的困惑,我已經編輯基於鮑勃·魯茨答案回答以下。

+3

對於正在訪問的用戶,請用正在安裝的程序的*名稱*替換'PackageID'。它應該看起來像'Version =「!(bind.packageVersion.MyAwesomeApp)」'(至少爲我工作..) – Default

+0

其實它不是應用程序的名稱,但它的ID。請參閱Bob對此相同問題的回答:http://stackoverflow.com/a/25828610/118878 – DenNukem

+0

'!(bind.packageVersion.PackageID)'獲取'PackageID'表示的msi文件的包版本號。爲了使這個數字與你的應用程序版本號相同,你的* msi配置文件*('Product'元素的屬性)中需要'Version =「!(bind.FileVersion.MyAppID)」'。 –

11

爲了補充Isaiah4110的答案(我還不能發表評論,我的編輯被拒絕):

的包標識來自於封裝類型(如MsiPackage,ExePackage ...)的ID值的鏈。所以要引用版本號 <MsiPackage SourceFile="SomePath\MyMsi.msi" Id="MyMsi"/> 您可以使用!(bind.packageVersion.MyMsi)。

如果你沒有Id(像我一樣),你需要定義一個。

+1

這應該是被接受的答案。 –

相關問題