7

ビルド スクリプトの一部として、自分の Delphi プロジェクトのバージョンを別のプロジェクト (Delphi ではない) と同じに設定する必要があります。IDE を介さずにバージョン番号を制御する方法はありますか? たとえば、コンパイラのコマンド ライン パラメータなどです。ありがとう

4

2 に答える 2

15

のような行を含めます

{$R 'version.res'}

あなたのプロジェクトで。バージョン情報を含む version.rc ファイルを作成します。古いバージョンの Delphi では、brcc32 を使用して自分でリソースをビルドする必要があります。新しい Delphi バージョンでは、使用できます

{$R 'version.res' 'version.rc'}

IDE が自動的にビルドするようにします。

最も単純な version.rc は次のようになります。

1 VERSIONINFO
FILEVERSION 9999, 9999, 99, 18048
PRODUCTVERSION 9999, 9999, 99, 18048
FILEOS 0x00000004L // comment: VOS_WINDOWS32
FILETYPE VFT_APP
{
 BLOCK "VarFileInfo"
 {
  VALUE "Translation", 0x409, 0x4E4 // comment: 0x4E4 = 1252
 }

 BLOCK "StringFileInfo"
 {
  BLOCK "040904E4"
  {
   VALUE "CompanyName", "Company Name\0"
   VALUE "FileVersion", "9999.9999.99.18048\0"
   VALUE "LegalCopyright", "Copyright \0"
   VALUE "ProductName", "Product Name\0"
   VALUE "ProductVersion", "9999.9999.99.18048\0"
   VALUE "Homepage", "http://www.mydomain.com\0"
  }
 }
}

詳細については、MSDN のVERSIONINFO構造体を参照してください。

于 2013-01-09T19:10:49.600 に答える
2

マルジャンは上で優れた答えを出していますが、私の答えは答えをもう少し進めています。次の RC ファイルを検討してください。

VS_VERSION_INFO VERSIONINFO

#include "..\Ver_Num_Application.txt"
#define APPLICATION_NAME    "My amazing project\0"
#define VER_NUM_ARTWORKS    4
#include "..\Libraries\Paslib32\Ver_Num_Library.txt"
#define COMPANY_NAME        "My company\0"

FILEVERSION    VER_NUM_ARTWORKS, VER_NUM_LIBRARY, VER_NUM_APPLICATION, 1000
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x9L
#else
 FILEFLAGS 0x8L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", COMPANY_NAME
            VALUE "FileDescription", APPLICATION_NAME
            VALUE "LegalCopyright", "Copyright (C) "COMPANY_NAME
            VALUE "ProductName", APPLICATION_NAME
        END
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
        VALUE "Translation", 0x409, 1200
    END 
END

いくつかの #INCLUDE ステートメントを使用する利点は、RC ファイルをそのままにして、次のような *.txt インクルード ファイルを単純に変更 (または自動生成) できることです。

Ver_Num_Application.txt:
  #define VER_NUM_APPLICATION 6

Ver_Num_Library.txt:
  #define VER_NUM_LIBRARY 156

ビルドを実行する前に *.res ファイルを削除して、リンカーが (変更された可能性がある) バージョン番号からファイルを再生成するようにする必要があることに注意してください。

于 2013-01-10T15:02:55.897 に答える