使用WIX自动增加内部版本号

时间:2010-06-21 09:58:03

标签: installer wix version

我正在使用WIX工具为我们的项目创建安装文件。

我想拥有动态(增量)内部版本号。所以任何人都可以指导我。

请不要提供像1.0.0。*这样的解决方案,因为这会给出任何动态数字。我希望它增量像1.0.0.1,1.0.0.2,1.0.0.3,.....

2 个答案:

答案 0 :(得分:1)

你无法在本机上使用WiX。

但是,您可以将版本定义为变量。 e.g:

<Product Id="*"
         UpgradeCode="$(var.Property_UpgradeCode)"
         Name="!(loc.ApplicationName)"
         Language="!(loc.Property_ProductLanguage)"
         Version="$(var.version)"
         Manufacturer="!(loc.ManufacturerName)" >

然后您可以在命令行上传递版本号。以下是使用Nant

的示例
<candle
          out="${dir.obj}\"
          rebuild="true"
          extensions="WixUIExtension;WixNetFxExtension">
            <defines>
                <define name="ProcessorArchitecture" value="${release.platform}" />
                <define name="SourceDir" value="${dir.source}" />
                <define name="version" value="${version}" />
                <define name="releasetype" value="${release.type}" />
                <define name="Language" value="${language}" />
            </defines>

            <sources>
                <include name="*.wxs" />
            </sources>
        </candle>

然后您只需按照与应用程序相同的方式处理版本号:)

答案 1 :(得分:1)

您可以使用msbuild community tasks版本类 例如

<PropertyGroup>

    <MinorIncrement Condition=" '$(ReleaseType)' == 'Internal' ">None</MinorIncrement>
    <MinorIncrement Condition=" '$(MinorIncrement)' == '' ">Increment</MinorIncrement>
    <BuildIncrement>Increment</BuildIncrement>
    <BuildIncrement Condition=" '$(MinorIncrement)' == 'Increment' ">Reset</BuildIncrement>
</PropertyGroup>

<Target Name="BumpVersion">
    <Version VersionFile="version.txt" MinorType="$(MinorIncrement)" BuildType="$(BuildIncrement)">
        <Output TaskParameter="Major" PropertyName="Major"/>
        <Output TaskParameter="Minor" PropertyName="Minor"/>
        <Output TaskParameter="Build" PropertyName="Build"/>
        <Output TaskParameter="Revision" PropertyName="Revision"/>
    </Version>

    <AssemblyInfo CodeLanguage="CS" OutputFile="VersionInfo.cs" AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"/>
    <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>

在上面的部分中,我设置了版本类型的值。不幸的是,这些似乎只在代码中记录。

CruisControl.Net正在外部设置ReleaseType。

如果我们有一个ReleaseType为'Internal',那么未完成次要增量但是构建号被碰撞,如果不是,那么我们递增次要编号并重置构建号。

Version元素将从version.txt中读取版本,格式为“1.0.1.3”,然后对其进行操作,然后将其读入一些变量,这些变量就是输出位的内容(我认为!)用于修改装配信息的位