我的目标是在WIX 3.6项目中使用版本号自动命名输出msi文件。我找到这个链接: Automated installer version numbers for WiX, revisited但我们的情况略有不同:我们不希望通过引用任何程序集的版本号来控制我们的产品版本号。相反,我们只是想在wix文件中分配它。具体来说,我有一个wxi文件,它定义了这样的属性:
<?define VersionNumber = "1.1.2000" ?>
因此,我可以在Product.wxs文件中的任何位置使用此VersionNumber变量。但由于重命名输出msi文件的最简单方法似乎是在MSBuild中添加一个postbuild任务,我必须将此VersionNumber传递给MSBuild项目文件。这就是阻止我的原因。
我尝试了相反的方法,即在MSBuild中定义VersionNumber常量并在WIX中使用它。它工作正常,但我必须保持不变的不同构建/平台组合。我们正在VS IDE中构建我们的软件,这意味着如果我们在IDE窗口中修改版本号,它将仅适用于特定的构建/平台组合,其他组合将保持不变(我知道如果我从命令行构建我可以只需传递一个版本号来覆盖现有的版本号。这就是我不想看到的。我喜欢只在一个地方定义版本号以避免任何可能的错误的想法。
任何帮助将不胜感激!
答案 0 :(得分:2)
在安装项目属性的Build选项卡中选择“All Configurations”和“All Platforms”后定义预处理器变量。
您可以通过将.wixproj中的元素添加到只保留版本号的项目来实现此目的。你修改.wixproj,但只修改一次。您可以使用合理的操作(无?)将此属性文件添加到.wixproj本身,以便您可以在IDE中对其进行修改。
类似的东西:
Version.properties
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<WhateverTheVersionPropertyNameIs>x.x.x.x</WhateverTheVersionPropertyNameIs>
</PropertyGroup>
</Project>
在你最后添加的.wixproj文件中
<Import Project="Version.properties"/>