【问题标题】:Modifying product version in Wix在 Wix 中修改产品版本
【发布时间】:2018-04-26 15:10:16
【问题描述】:

我正在尝试从我的 exe 文件中绑定文件版本以用作产品版本。关注:How can I set the WiX installer version to the current build version?

问题是我的程序集以例如 2018.0.0.0 的格式构建。主要升级需要最大 255 的版本号,这意味着我必须先从我的 productVersion 变量中删除前两个数字,然后才能将其设置为 ProductVersion 属性。有没有办法通过 xsl 或其他方式修改变量?

无法通过自定义操作进行修改,因为我希望在 msi 文件中设置属性。

感谢您对这个 djungle 的任何帮助,

 <?define productVersion= !(bind.FileVersion.MyExe.Exe) ?>

 <Product Id="*" 
       UpgradeCode="12345678-1234-1234-1234-123456789123" 
       Name="My Application" 
       Language ="1033" 
       Version="$(var.productVersion)"
       Manufacturer="My Company" >

【问题讨论】:

  • 您可以更改您的 EXE 版本以匹配语义版本控制标准吗?
  • 在这种情况下,由于某些条件,我想将其保留在语义版本控制标准之外。
  • 2018.0.0.0是你的程序集版本还是你的程序集文件版本?
  • 程序集版本和程序集文件版本都设置为此。也许可以通过 powershell 脚本来做到这一点,但我不想用不必要的“hacks”来超载 cake 脚本。我一直在寻找一种通过预处理器运算符从 !(bind.FileVersion.MyExe.Exe) 获取子字符串的方法。但它似乎不支持。
  • 仅供参考-AssemblyVersion 用于强名称/gac 目的,AssemblyFileVersion 等同于 win32 FileVersion 并用于跟踪目的。仅在重大更改时更改 AssemblyVersion 并在每次构建时更改 AssemblyFileVersion 是很常见的。例如,这就是 .net 基类库的修补方式。也许如果你这样做,你可以绑定到后者。 (见下面的答案)

标签: version-control wix windows-installer


【解决方案1】:

如果您无法从程序集中绑定/推断,那么您将需要让构建自动化将 wix 变量传递到 candle.exe 并使用它而不是您的绑定语句。

在托管代码/vsts/tfs 环境中,我的典型流程是构建定义是事实的来源,它会在构建过程中递增并设置一个内部版本号。 powershell 脚本基于此更新我的 AssemblyInfo 文件中的所有 AssemblyFileVersion 属性,并且我的 wixproj (votive/msbuild) 对此变量进行正则表达式匹配以将其传递给蜡烛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多