2012-05-03 42 views
1

在有关设置产品版本属性的WiX的安装程序(How can I set the WiX installer version to the current build version?)另一个问题,最投票的答案(我已经尝试和作品)建议:产品版本在维克斯3.5和Visual Studio的WiX项目

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

...这是伟大的,但使用的是FILEID的维克斯VS项目的收集能力的可执行威力变化时,会出现在Visual Studio的WiX项目略带脆性。

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

回答

2

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

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> 

和参考的是,在维克斯源与Product/@Version="$(var.InstallerVersion)"。如果你的编译系统也控制你的二进制文件的版本控制,那就行了。