【问题标题】:Product Version in WiX 3.5 and Visual Studio WiX ProjectsWiX 3.5 和 Visual Studio WiX 项目中的产品版本
【发布时间】:2012-05-03 08:46:34
【问题描述】:

在另一个关于为 WiX 安装程序 (How can I set the WiX installer version to the current build version?) 设置产品版本属性的问题中,投票最多的答案(我已经尝试过并且有效)建议:

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

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

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

【问题讨论】:

    标签: c# visual-studio-2010 wix wix3.5


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我们使用我们的构建系统来控制所有版本控制,并将其作为 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)" 引用它。如果您的构建系统还控制您的二进制文件的版本控制,这将起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-24
        • 2016-08-08
        • 1970-01-01
        相关资源
        最近更新 更多