0

我找到了许多使用 Team build setup 环境自动增加内部版本号的方法,但没有一个让我满意,因为我有一个 C++ MFC 应用程序,其中大多数方法都不起作用。

所以我想到了另一种解决方案,它可能对我们的团队有用(因为它不是那么大):

我想要一个这样的内部版本号:

$(major).$(minor).$(buildnumber) <!-- where buildnumber is like YYMMDDHHMM -->

我认为$(major)并且$(minor)可以使用命令行中的预处理器变量进行设置(或预构建任务,例如从文件中提取它们并将它们放入变量中),但是构建号应该是基于构建唯一的那个。

这种方法适用于每个开发人员在他的本地机器上以及 CI 环境(在我们的例子中是 TFS)。

有没有办法做到这一点?或者是否有另一个想法来自动生成增加的构建号(不一定基于时间戳)我还没有看到?

4

2 回答 2

2

该要求的实施涉及两个部分:

1) 构建自动化生成 ProductVerion 属性

2) 将此属性传递给 WiX 构建的构建自动化。

对于#1,我喜欢使用TFS 版本控制,但有很多解决方案可以满足您的需求。

对于#2,我将这样的代码放在 .wixproj 中:

 <PropertyGroup>
   <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">0.1.0</MSIProductVersion>
 </PropertyGroup>

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
   <DefineConstants>Debug;WiXProductVersion=$(MSIProductVersion)</DefineConstants>
 </PropertyGroup>
 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
   <DefineConstants>WiXProductVersion=$(MSIProductVersion)</DefineConstants>
 </PropertyGroup>

在实际的 wxs 中,我这样做:

 <Product Id="*" Name="IsWiX" Language="1033" Version="$(var.WiXProductVersion)"
          Manufacturer="ISWIX LLC" UpgradeCode="some upgrade code">
   <Package InstallerVersion="200" Compressed="yes" />

这个概念是 TFS 在 MSIProductVersion 中传递,它被传递到编译器并映射到 Version 属性。对于本地开发人员构建的 MSI,只需获取 0.1.0 作为版本(这是一个很好的指标,表明它不是官方构建)。

于 2012-04-05T14:49:18.103 回答
0

我使用此处找到的“verbuild.exe”实用程序解决了它

按照该页面中的步骤操作:

  1. 创建初始版本头文件:verbuild <version header file> -c
  2. 创建一个资源 (.rc) 文件:
    1. 包含步骤 1 中的头文件
    2. 包括使用头文件中的更改替换 .rc 文件中的正确版本(例如,VERSION_FILE
  3. 在构建项目之前将构建更改为调用verbuild以更新内部版本号:
    • 我运行一个批处理文件来增加内部版本号:verbuild <version header file> %1 -xFP
于 2013-03-27T19:34:05.597 回答