0

我不确定它是否缺乏理解,但我在我的 WiX 安装程序中实现了以下代码

<?ifdef svn.BUILD_NUMBER?>
  <?define PRODUCTVERSION="1.0.$(svn.BUILD_NUMBER).0"?>
<?else?>
  <?define PRODUCTVERSION="1.0.1.0"?>
<?endif?>

<Product Id="*" Name="My Installer" Language="1033" Version="$(var.PRODUCTVERSION)" Manufacturer="My Corporation" UpgradeCode="170e2710-5690-4433-8787-7bcd0a922fbc">

但是无论我尝试什么,我都无法让安装程序使用 SVN 修订号……我是否遗漏了什么/做错了什么?

4

1 回答 1

1

变量必须具有以下三个前缀之一,具体取决于它们的创建方式:

  • 变种。
  • 环境。
  • 系统。

文档

这个“svn.BUILD_NUMBER”来自哪里?

更新:

根据您的评论,您似乎需要从项目外部获取修订号并将其带入内部。有很多方法可以做到这一点。一些 CI 服务器将为提供修订号的构建设置环境变量。

var.在任何情况下,您都必须使用or来更正预处理器变量的使用env.

<?ifdef env.BUILD_NUMBER?>
  <?define PRODUCTVERSION="1.0.$(env.BUILD_NUMBER).0"?>
<?else?>
  <?define PRODUCTVERSION="1.0.1.0"?>
<?endif?>

如果您需要先创建环境变量,运行如下命令即可:

set BUILD_NUMBER=
for /F "tokens=1,2"  %t  in ('svn info') do ^
    @if "%t"=="Revision:" set BUILD_NUMBER=%u

根据您的需要,您可以得到更多花哨的东西:生成 WiX 包含 (.wxi),使用 MSBuild(请参阅您引用的文章)来运行任务,例如执行svn infosnv info --xml与一些 XML 处理一起使用,......

于 2013-07-12T19:29:49.037 回答