2009-06-10 12 views
4

バイナリのプロパティを表示できるオプションがWindowsにあり、作成者、バージョン番号、会社などの情報が表示されます。これを自動コンパイルシステムに入れたいと思います。バイナリがコンパイルされた後、バイナリにこのバージョン情報を取得することが望ましいですが、これがどのように行われたかについての情報は役に立ちます。もちろん、これはプログラム的である必要があります。毎日5000バイナリの情報をリソースハッカーに手動で入力することに煩わされることはありません。バージョン情報をWindowsバイナリに埋め込むにはどうすればよいですか?

これまでにこれまで行ったことがありますか?どのようにそれを行うことができますか?

答えて

10

RCファイルを使用するのが最善の解決策です(少なくとも私たちの場合)。 .RESにコンパイルされ

1 VERSIONINFO 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904E4" 
     BEGIN 
      VALUE "File Version",  "1.0.4" 
      VALUE "Build Number",  "3452" 
     END 
    END 
END 

は、オブジェクトファイルの残りの部分でリンクされている

rc.exe /fo Results/version.res version.rc 

を提出します。

+0

この解決策は正しいものとしてマークされなければなりません –

+3

'BLOCK" 040904E4 "'とは何ですか?それは魔法の数字ですか?おそらくRCファイル定義のための良いリソースにリンクしたいと思っていますか? – Kissaki

+1

そのマジックナンバーをすばやくGoogleで検索すると、文字列の言語設定を指定するために使用されていることがわかります。 'BLOCK" 040904E4 "// Lang =米国英語、CharSet = Windows Multilingual 残念ながら私はできませんでしたそれに関する他の文書を見つけることができます。 – rpetti

3

プロジェクトにAssemblyInfo.csを探します。

しかし、これは編集前に記入する必要があります。しかし、多くのバイナリ間で1つのAssemblyInfo.csを共有することができます。そして、あなたはこの正確なファイル名に縛られていないので、情報をより多くのファイルに分割することができます。会社に関する一般的なファイル1つ、製品に関するもの、バイナリのバージョン番号1つ。

/ Individual Information 
[assembly: AssemblyTitle("")] 
[assembly: AssemblyDescription("")] 

// Version information 
[assembly: AssemblyVersion("1.0.*")] 
[assembly: AssemblyInformationalVersion("1.0.0.0")] 

// General Information 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("")] 
[assembly: AssemblyProduct("")] 
[assembly: AssemblyCopyright("")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyCulture("")] 
[assembly: NeutralResourcesLanguage("en")] 
+0

これは解決策ですが、私たちのバイナリのほとんどは実際には.NETではありません。もっと一般的なものがありますか? – rpetti

+0

ああ、C++です。これは良い質問です、私も答えを知りたいです。 – stimms

0

仮定窓PEバイナリは、バージョン情報は、場所の下IMAGE_OPTIONAL_HEADERセクションで、PEヘッダに格納されている:this documentation言う

WORD MajorImageVersion 
WORD MinorImageVersion 

どの:

ユーザ定義フィールド。これにより、異なるバージョンのEXEまたはDLLを使用することができます。これらのフィールドは、リンカ/ VERSIONスイッチで設定します。たとえば、 "LINK /VERSION:2.0 myobj.obj"

1

これは昨日CodeProjectの上に現れた:

Simple Version Resource Tool for Windows

それは、コマンドラインツールですが、それは簡単にスクリプトから操作する必要があります。

関連する問題