我发现了许多使用Team build安装环境自动递增内部版本号的方法,但没有一种方法能让我满意,因为我有一个C++ MFC应用程序,其中大多数方法都不起作用。
所以我想到了另一个解决方案,它可能适用于我们的团队(因为它不是那么大):
我想要一个这样的内部版本号:
$(major).$(minor).$(buildnumber) <!-- where buildnumber is like YYMMDDHHMM -->我认为可以从命令行使用预处理器变量来设置$(major)和$(minor) (或者执行构建前任务,比如从文件中提取它们并将它们放入变量中),但是构建号应该是基于构建的唯一构建号。
此方法适用于本地计算机上的每个开发人员以及CI环境中的每个开发人员(在我们的示例中为TFS)。
有没有办法做到这一点?或者,有没有另一个想法可以自动生成我还没有看到的增加的内部版本号(不一定是基于时间戳)?
发布于 2012-04-05 22:49:18
此要求的实现包括两个部分:
1)生成ProductVerion属性的构建自动化
2)将此属性传递到WiX构建的构建自动化。
对于第一点,我喜欢使用TFS Versioning,但是有很多解决方案可以满足你的需求。
对于#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属性。对于本地开发人员的构建,MSI的版本仅为0.1.0 (这是一个很好的指示,表明它不是官方构建)。
发布于 2013-03-28 03:34:06
我用找到here的"verbuild.exe“实用程序解决了这个问题
按照该页面中的步骤执行操作:
VERSION_FILE))的更改来替换.rc文件中的正确版本的更改
在构建项目之前,将
verbuild以更新内部版本号:
https://stackoverflow.com/questions/10030325
复制相似问题