msbuild - 无论如何要在 WIX wxs 文件中创建自定义 MSBuild 属性吗?

标签 msbuild wix version-numbering auto-build

我的目标是在 WIX 3.6 项目中使用版本号自动命名输出 msi 文件。我找到这个链接: Automated installer version numbers for WiX, revisited但我们的情况略有不同:我们不想通过引用任何程序集的版本号来控制我们的产品版本号。相反,我们只想将其分配到 wix 文件中。具体来说,我有一个 wxi 文件,它定义了如下属性:

<?define VersionNumber = "1.1.2000" ?>  

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

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

任何帮助将不胜感激!

最佳答案

在安装项目属性的“构建”选项卡中选择“所有配置”和“所有平台”后定义预处理器变量。

您可以通过将 .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"/>

关于msbuild - 无论如何要在 WIX wxs 文件中创建自定义 MSBuild 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13233143/

相关文章:

c# - TeamCity - 将工件依赖项的文件路径映射到系统属性

Wix 中的 C# 自定义操作

用于解压缩文件的 Wix 自定义操作

wix - 如何为多个实例创建/从何处获取 Wix Bootstrapper

java - 查询请求: EC2 Version

android - 如何以编程方式在 Android 设备中获取设备 (AOSP) 内部版本号?

c# - 自定义 MSBuild 任务 : how to flush logging in VS2012 output window while task is still running?

visual-studio-2010 - 在 Visual Studio IDE 的输出窗口中生成或打包期间显示 MSBuild 命令?

visual-studio - 使用 MSBuild.exe 通过 cmd 行将 ASP.NET MVC 4 项目设置为 "Publish"

maven - 如何为使用 Maven 构建的 Eclipse 插件自动化版本号更新过程