Visual C++ でビルドのたびにバージョン情報をインクリメントする方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:237870
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
Visual C++ プロジェクトの各ビルド後に、バージョン リソース情報を自動的にインクリメントする機能はありません。このような機能を提供する 1 つの方法について説明します。
詳細
ここで説明した手順を使用する代わりに、リソース コンパイラ (.rc) ファイルを変更するプログラムを作成することができます。RC ファイルは、Visual C++ の管理下です。Visual C++ はセーブ中に RC ファイルを変更し、バージョン リソースに影響する可能性があります。このセクションに記述した方法は、どの Visual C++ プロジェクトにも適用可能です。この例では、Microsoft Foundation Classesプロジェクトを使用します。

MFC (EXE)、Appwizard を使用して新しいプロジェクトを作成をして、 MyProject.MyProject、MyProject.rc2 を含む MyProject.rc ファイルが生成されます。.Rc2 ファイルは、リソースのユーザー定義のものです。各ビルド後の MyProject のバージョン情報をインクリメントする次の手順に従います。
  1. .Rc ファイルのバージョン リソースを削除し、.rc2 ファイルに配置。

    1. (Res フォルダーにあります)、MyProject.rc2 と MyProject.rc の両方をテキスト エディターで開きます。Visual C++ エディターを使用するには、] をクリックします。 オープン 上、 ファイル メニューを選択 テキスト で、 として開く MyProject.rc ファイルの一覧です。
    2. MyProject.rc 内のバージョン リソースのステートメントを見つけます。下記のようなものです。
      /////////////////////////////////////////////////////////////////////// // // Version// VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS 0x1L#else FILEFLAGS 0x0L#endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0LBEGIN    BLOCK "StringFileInfo"    BEGIN        BLOCK "040904b0"        BEGIN            VALUE "Comments", "Sample Application\0"            VALUE "CompanyName", "Microsoft Corp.\0"            VALUE "FileDescription", "MyProject MFC Application\0"            VALUE "FileVersion", "1, 0, 0, 1\0"            VALUE "InternalName", "MyProject\0"            VALUE "LegalCopyright", "Copyright (C) 1999\0"            VALUE "OriginalFilename", "MyProject.EXE\0"            VALUE "ProductName", "MyProject Application\0"            VALUE "ProductVersion", "1, 0, 0, 1\0"        END    END    BLOCK "VarFileInfo"    BEGIN        VALUE "Translation", 0x409, 1200    ENDEND							
    3. MyProject.rc ファイルからバージョン リソースを切り取り、"編集したリソースを手動でここに追加する。" コメントの下の MyProject.rc2 ファイルに貼り付けます。リソース フィールドのいずれかの意味については、ヘルプ内の VERSIONINFO リソース ステートメントを参照してください。
  2. FILEVER と PRODUCTVER マクロ、ファイルバージョンと PRODUCTVERSION のデータを置き換えます。同様に、STRFILEVER と STRPRODUCTVER は、マクロで、ファイルバージョンと ProductVersion の文字列データを置き換えます。
  3. 追加、#include VersionNo.h 直前の VS_VERSION_INFO リソースのステートメントです。バージョン リソースがようになります。
    /////////////////////////////////////////////////////////////////////// // // Version// #include "VersionNo.h"VS_VERSION_INFO VERSIONINFO FILEVERSION FILEVER PRODUCTVERSION PRODUCTVER FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS 0x1L#else FILEFLAGS 0x0L#endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0LBEGIN    BLOCK "StringFileInfo"    BEGIN        BLOCK "040904b0"        BEGIN            VALUE "Comments", "Sample Application\0"            VALUE "CompanyName", "Microsoft Corp.\0"            VALUE "FileDescription", "MyProject MFC Application\0"            VALUE "FileVersion", STRFILEVER            VALUE "InternalName", "MyProject\0"            VALUE "LegalCopyright", "Copyright (C) 1997\0"            VALUE "OriginalFilename", "MyProject.EXE\0"            VALUE "ProductName", "MyProject Application\0"            VALUE "ProductVersion", STRPRODUCTVER        END    END    BLOCK "VarFileInfo"    BEGIN        VALUE "Translation", 0x409, 1200    ENDEND					
  4. プロジェクトと同じディレクトリに VersionNo.h と呼ばれるヘッダー ファイルを作成します。このファイルには手順 2 で使用するマクロの定義は、次のステートメントが含まれます。
    #define FILEVER        1,0,0,1#define PRODUCTVER     1,0,0,1#define STRFILEVER     "1, 0, 0, 1\0"#define STRPRODUCTVER  "1, 0, 0, 1\0"						
    注意: 最終行にライン フィード文字および復帰文字を追加します。

    を MyProject.rc2、を含む MyProject.rc ファイルを MyProject.rc2 ファイルには VersionNo.h が含まれます。
  5. マクロ Visual Basic スクリプトを使用して VersionNo.h ファイルの内容が変更されます。マクロ以下ハンドル、Visual C++ BuildFinish のイベントをビルドが完了するまでは発生しませんので。この VB のスクリプト コードが呼び出されるたびに最初を一定のヘッダー ファイル内のバージョン番号をインクリメントし、ファイルを保存し、終了します。それ以降のビルド中に実行可能ファイルには新しいバージョン番号が含まれます。

    インストールし、VB スクリプト コードを使用するには、は、次の手順で行います。

    1. DSM (マクロ) の既存のファイルを開くまたは Visual C++ で DSM の新しいファイルを作成します。新しいファイルを作成するには、] をクリックします。 新しい 上、 ファイル メニューの [選択] マクロファイル 上、 ファイル タブで、名前を付けてをクリックしてください OK.
    2. 次の VB のスクリプト コードを貼り付けます (Visual C++ で、空の DSM ファイルをインストールできません。 次の手順のインストールについて説明します。
      Function GetProjectDir(FullName)'VC++ doesn't provide any method for getting the path of the active project'See the VB Script reference for more information on the VB Script functions 'used in this functionDim proj_pathproj_path = Split(StrReverse(FullName),"\",-1,1)Dim countcount = UBound(proj_path)Dim full_pathfull_path = ""Dim ifor i = 1 to count 	full_path = full_path & "\" & proj_path(i)nextGetProjectDir = StrReverse(full_path)End FunctionSub ReplaceText(selection, count, incrementby)'selection represents the TextSelection object'count represents the position of the version number to be incremented'incrementby represents a number that will be added to the existing version numberselection.WordRight dsMove, countselection.WordRight dsExtend, 1Dim strstr = selection.Textstr = str + incrementbyselection.Text = strEnd SubSub Application_BuildFinish(numError, numWarning)'This event will be triggered after every build of a project'You can check numError and/or numWarning to determine if you want to continue'If numError <> 0 Then    'exit sub'Obtain the full path of the active projectDim full_pathfull_path = GetProjectDir(ActiveProject.FullName)full_path = full_path & "versionno.h"'Open the VersionNo.h fileDocuments.Open full_path'Obtain the TextSelection objectDim selectionset selection = ActiveDocument.Selectionselection.StartOfDocument 'Increment the version informationReplaceText selection, 9, 1selection.LineDownselection.StartOfLineReplaceText selection, 9, 1selection.LineDownselection.StartOfLineReplaceText selection, 10, 1selection.LineDownselection.StartOfLineReplaceText selection, 10, 1ActiveDocument.SaveActiveDocument.Close End Sub								
      注: このコードは、サポートされていないサンプルです。ご自身のビルド シナリオに合わせて変更して下さい。
    3. インストールされていない場合、DSM ファイルをインストールします。をインストールするには、] をクリックします。 カスタマイズ 上、 ツール メニューをクリックします アドインおよびマクロ ファイル DSM ファイルを選択し、クリックして [参照] タブ 終了.
  6. 選択 MyProject.exe を構築します。 から、 ビルド メニューです。ビルドが完了したら、VersionNo.h ファイルを開きます。次のステートメントが格納されます。
    #define FILEVER        1,0,0,2#define PRODUCTVER     1,0,0,2#define STRFILEVER     "1, 0, 0, 2\0"#define STRPRODUCTVER  "1, 0, 0, 2\0"						
    コードをビルドする場合、実行可能ファイルをこのバージョンの情報に含まれているし、バージョン情報がインクリメントされます。バージョン番号をインクリメントする場合、ビルド エラーを生成するように説明したマクロの一部のコードを導入できます。
関連情報
Visual C++ オブジェクト モデルの詳細については MSDN ライブラリの次のトピックを参照してください。
VB スクリプト マクロの詳細については、MSDN ライブラリの次のトピックを参照してください。
VB スクリプト言語の詳細については、MSDN ライブラリの次のトピックを参照してください。
Visual C++ の VERSIONINFO リソース ステートメントの詳細については、MSDN ライブラリの次のトピックを参照してください。

警告: この記事は自動翻訳されています

プロパティ

文書番号:237870 - 最終更新日: 12/05/2015 15:18:14 - リビジョン: 6.0

Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtja
フィードバック