1

在另一个关于为 WiX 安装程序设置产品版本属性的问题中(如何将 WiX 安装程序版本设置为当前构建版本?),投票最多的答案(我已经尝试过并且有效)建议:

“您可以使用Product/@Version="!(bind.FileVersion.<FileId>)"Light.exe 将使用 FileId 引用的文件版本填充该值。”

...这很好,但在使用 WiX VS 项目的收获功能时,在 Visual Studio WiX 项目中显得有些脆弱,因为可执行文件的 FileId可能会发生变化。

除了使用 FileVersion 预处理器扩展 ( http://wixfileversionext.codeplex.com/ )之外,还有更安全的方法可以从 Visual Studio 中自动生成的 .wxs 文件中引用特定文件吗?

4

2 回答 2

2

-t您可以通过 XSL 转换(的选项)运行生成的 .wxs 文件,该转换heat.exe将自动生成的文件 ID 替换为您选择的 ID。因此,您将能够从其他地方安全地引用它。

于 2012-05-03T10:36:41.073 回答
1

我们使用我们的构建系统来控制所有版本,并将其作为 msbuild 属性传递给 WiX 项目。

<PropertyGroup>
    <version_major Condition=" '$(version_major)' == '' ">0</version_major>
    <version_minor Condition=" '$(version_minor)' == '' ">0</version_minor>
    <build_number Condition=" '$(build_number)' == '' ">0</build_number>
    <build_vcs_number Condition=" '$(build_vcs_number)' == '' ">0</build_vcs_number>
    <InstallerVersion>$(version_major).$(version_minor).$(build_number).0</InstallerVersion>
</PropertyGroup>

并在 WiX 源代码中使用Product/@Version="$(var.InstallerVersion)". 如果您的构建系统还控制二进制文件的版本控制,这将起作用。

于 2012-05-08T16:11:49.673 回答