2013-07-12 62 views
0

我不知道是否理解或不是缺乏,但我已经在我的WiX的安装程序执行以下代码版本号不使用SVN版本号

<?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修订版号...我错过了什么/做错了什么?

+0

svn不是一个内置的变量前缀(即:var,env和sys)。它必须在预处理器扩展中定义。你在用吗?如果没有,它肯定可以成为将这些信息加入到你的项目中的一种方式。 – Netfangled

回答

1

变量必须有三个前缀之一,这取决于它们是如何创建的:

  • 变种。
  • env。
  • sys。

Documentation

这哪里是 “svn.BUILD_NUMBER” 是从哪里来的?

UPDATE:

从您的评论,好像你需要从你的项目之外拿到版本号并把它里面。 有很多方法可以做到这一点。一些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 

你可以得到很多发烧友,根据您的需要:生成维克斯包括(.wxi),使用的MSBuild(看到你引用的文章)来运行任务,例如执行svn info,使用snv info --xml与一些XML处理,....

+0

为了100%诚实,我记得前段时间试图做这件事,偶然发现了这个注释,我似乎无法找到原始来源。然而,其背后的想法是,svn.BUILD_NUMBER是从SVN给出的项目文件夹的版本号派生出来的......回想起来,我意识到这将永远不会奏效。然而,我尝试实现我在这里找到的东西(http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/),但我仍然没有运气 – Jimmy