如何使WiX捆绑版本与我的应用程序版本相同

32

在WiX Bundle中,“Version”属性显示在“程序和功能”中。因此,这应该与我的实际应用程序的版本号相同,对吗?

假设它们应该是相同的,那么如何使它自动更新似乎并不明显。我已经按照this question的方法让MSI来执行它,但不知道怎样让Bundle/Bootstrapper也执行同样的操作,并读取MSI的版本号。

2个回答

40

回答你的第一个问题,这方面没有硬性规定。因此,没有必要更新WIX捆绑版本并与MSI版本匹配。

至于第二个问题,我不是很确定。但你可以尝试使用这个绑定变量:

!(bind.packageVersion.PackageID) 

编辑:将PackageID替换为正在安装的程序的元素“ID”属性。类似于:Version="!(bind.packageVersion.MyAppName)"

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

根据这篇帖子所述。此外,请查看WIX文档以获取更多绑定变量。

编辑 2017年5月11日 - 看起来有些人对packageID的设置存在疑惑,我已经根据Bob Lutz的回答进行了编辑。


5
访问者需要将“PackageID”替换为您正在安装的程序的名称。它应该类似于Version="!(bind.packageVersion.MyAwesomeApp)"(至少对我有效...) - default
实际上这不是应用程序的名称,而是它的ID。请参阅Bob在同一问题中的答案:https://dev59.com/qmMl5IYBdhLWcg3wmn44#25828610 - DenNukem
!(bind.packageVersion.PackageID) 获取由 PackageID 表示的 msi 文件的软件包版本号。为了使该数字与您的应用程序版本号相同,您还需要在 msi 配置文件Product 元素的属性)中添加 Version="!(bind.FileVersion.MyAppID)" - Ian Goldby

19

补充 Isaiah4110 的回答(我还不能评论,我的编辑被拒绝了):

PackageID 来自于你的 Chain 中某个包类型(例如 MsiPackage、ExePackage……)的 Id 值。因此,要引用以下 MsiPackage 的版本号: <MsiPackage SourceFile="SomePath\MyMsi.msi" Id="MyMsi"/> 您可以使用 !(bind.packageVersion.MyMsi)。

如果你没有一个 Id(就像我一样),你需要定义一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接