0

チーム ビルド セットアップ環境でビルド番号を自動的にインクリメントする方法をいくつか見つけましたが、ほとんどのアプローチが機能しない C++ MFC アプリケーションを使用しているため、どれも満足のいくものではありませんでした。

そこで、私たちのチームでうまくいくかもしれない別の解決策を考えました(それほど大きくないため):

次のようなビルド番号が必要です。

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

$(major)コマンドラインからプリプロセッサ変数を使用して設定できると思います$(minor)(または、ファイルからgrepして変数に入れるなどのビルド前のタスク)が、ビルド番号はビルドに基づいて一意にする必要があります。

このアプローチは、各開発者が自分のローカル マシンでも CI 環境 (この場合は TFS) でも機能します。

これを達成する方法はありますか?または、まだ見たことのない、増加したビルド番号を自動的に生成する別のアイデアがありますか (タイムスタンプに基づいている必要はありません)。

4

2 に答える 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" />

概念は、MSIProductVersion での TFS パスであり、これはコンパイラに渡され、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. build を call に変更してverbuild、プロジェクトをビルドする前にビルド番号を更新し ます。
    • バッチ ファイルを実行してビルド番号をインクリメントします。verbuild <version header file> %1 -xFP
于 2013-03-27T19:34:05.597 に答える