版本号不使用SVN内部版本号

时间:2013-07-12 18:29:28

标签: wix wix3.7

我不确定它是否缺乏理解,但我在我的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版本号...我错过了什么/做错了什么?

1 个答案:

答案 0 :(得分:1)

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

  • 变种
  • ENV。
  • SYS。

Documentation

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

更新:

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

在任何情况下,您都必须使用var.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 info之类的任务,使用{{1}用一些XML处理,......