3

Delphi 2007 のプロジェクトで、SVN に保存されています。

「プロジェクト設定 - バージョン情報」 - プロジェクトのバージョンが保存されます。プロジェクトのバージョンを変更する場合 *.dproj ファイルと *.res ファイルが変更されます。そして、プロジェクトのバージョンが変更されるたびに、それらを SVN にコミットする必要があります。

プロジェクトのバージョンをSVNで管理したい。たとえば、「1.12.2」という名前の svn タグとリビジョン 12993 からプロジェクトをビルドする場合、バージョン 1.12.2.12993 のバイナリ *.exe ファイルを取得したいと考えています。

これを作成するには、バージョン情報のテキスト表示を含む *.rc ファイルを作成する必要があります。次に *.res ファイルを作成し、それを {$R version.res} でプロジェクトに含めます

*.rc ファイルには何を書き込めばいいですか? その構造はどのように見えるべきですか?ホワイトの例をお願いします。

ありがとう。

4

3 に答える 3

5

VERSIONINFOリソースはMSDNで文書化されています。一般的なリソース スクリプトは次のようになります。

1 バージョン情報
ファイルバージョン 1,12,2,12993
製品バージョン 1,12,2,12993
ファイルオス 0x40004L
ファイルタイプ 0x1L
始める
  ブロック "StringFileInfo"
  始める
    ブロック "000004E4"
      始める
        VALUE "会社名", "私の会社\0"
        VALUE "FileDescription", "マイ プログラム\0"
        VALUE "FileVersion", "マイ プログラム\0"
        VALUE "LegalCopyright", "私の会社 2012\0"
      終わり
  終わり
  ブロック "VarFileInfo"
  始める
    VALUE "翻訳", 0x0000 0x04E4
  終わり
終わり
于 2012-10-16T17:16:29.960 に答える
2

VERSIONINFO も使用しますが、ビルド番号の代わりに SVN リビジョン番号を使用します。これは、SubWCRev ユーティリティを使用したキーワード置換によって提供できます。詳細については、 Tortoise doxを参照してください。特定の .exe に対応する SVN から適切なソース スナップショットを取得できます。

于 2012-10-16T21:20:58.643 に答える
2

方法は次のとおりです。

「公式」バイナリをビルドし、svn にチェックインする専用のビルド マシンがあります。バイナリは、.res および .bdsproj と共に、特別なコメント タグ [プロジェクト ファイルの追加][Res ファイルの追加] を使用して svn にチェックインされます。

開発者は、機能的な変更が行われていない限り、.bdsproj および .res ファイルをチェックインしないように指示されています。その場合、特別なタグを使用する必要があります。

SVN は pre-commit フックを使用して、特別なタグなしで .res および .bdsproj チェックインをブロックします。

新しいプロジェクト ブランチを作成すると、一致するように .bdsproj ファイル内のすべてのバージョン情報を更新するユーティリティ (FindAndReplace.exe だと思います) があります。

この一部として SVN ビルドを組み込んでいないため、これはまさにあなたが探しているものではありません。しかし、この方法論の延長として、それは可能です。

于 2012-10-16T17:26:05.610 に答える