在WiX Bundle中,“Version”属性显示在“程序和功能”中。因此,这应该与我的实际应用程序的版本号相同,对吗?
假设它们应该是相同的,那么如何使它自动更新似乎并不明显。我已经按照this question的方法让MSI来执行它,但不知道怎样让Bundle/Bootstrapper也执行同样的操作,并读取MSI的版本号。
在WiX Bundle中,“Version”属性显示在“程序和功能”中。因此,这应该与我的实际应用程序的版本号相同,对吗?
假设它们应该是相同的,那么如何使它自动更新似乎并不明显。我已经按照this question的方法让MSI来执行它,但不知道怎样让Bundle/Bootstrapper也执行同样的操作,并读取MSI的版本号。
回答你的第一个问题,这方面没有硬性规定。因此,没有必要更新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的回答进行了编辑。
补充 Isaiah4110 的回答(我还不能评论,我的编辑被拒绝了):
PackageID 来自于你的 Chain 中某个包类型(例如 MsiPackage、ExePackage……)的 Id 值。因此,要引用以下 MsiPackage 的版本号:
<MsiPackage SourceFile="SomePath\MyMsi.msi" Id="MyMsi"/>
您可以使用 !(bind.packageVersion.MyMsi)。
如果你没有一个 Id(就像我一样),你需要定义一个。
Version="!(bind.packageVersion.MyAwesomeApp)"
(至少对我有效...) - default!(bind.packageVersion.PackageID)
获取由PackageID
表示的 msi 文件的软件包版本号。为了使该数字与您的应用程序版本号相同,您还需要在 msi 配置文件(Product
元素的属性)中添加Version="!(bind.FileVersion.MyAppID)"
。 - Ian Goldby