2

我的目标是在 WIX 3.6 项目中使用版本号自动命名输出 msi 文件。我找到了这个链接: WiX 的自动安装程序版本号,重新访问,但我们有一个稍微不同的场景:我们不想通过引用任何程序集的版本号来控制我们的产品版本号。相反,我们只是想在 wix 文件中分配它。具体来说,我有一个 wxi 文件,它定义了这样的属性:

<?define VersionNumber = "1.1.2000" ?>  

因此,我可以在 Product.wxs 文件中的任何位置使用这个 VersionNumber 变量。但由于重命名输出 msi 文件的最简单方法似乎是在 MSBuild 中添加一个 postbuild 任务,因此我必须将此 VersionNumber 传递给 MSBuild 项目文件。这就是阻止我的原因。

我尝试了相反的方法,即在 MSBuild 中定义 VersionNumber 常量并在 WIX 中使用它。它工作得很好,除了我必须为不同的构建/平台组合保持这个常数。我们在 VS IDE 中构建我们的软件,这意味着如果我们在 IDE 窗口中修改版本号,它将仅适用于特定的构建/平台组合,其他组合将保持不变(我知道如果我是从命令行构建的,我可以只需传递一个版本号来覆盖现有的)。这就是我不想看到的。我喜欢只在一个地方定义版本号以避免任何可能的错误的想法。

任何帮助将不胜感激!

4

1 回答 1

2

在设置项目属性的 Build 选项卡中选择“All Configurations”和“All Platforms”后定义预处理器变量。

您可以通过将 .wixproj 中的元素添加到只保留版本号的项目中来实现此目的。您将修改 .wixproj,但只修改一次。您可以通过合理的操作(无?)将此属性文件添加到 .wixproj 本身,以便您可以在 IDE 中对其进行修改。

就像是:

版本属性

<?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"/>

于 2012-11-05T13:52:56.607 回答