Как вставить информацию о версии в двоичный файл Windows? - PullRequest
4 голосов
/ 10 июня 2009

Вы, вероятно, знаете, что в Windows есть такая опция, где вы можете просматривать свойства двоичного файла, и он будет отображать информацию об авторе, номере версии, компании и т. Д. ... Мы хотели бы включить это в нашу систему автоматической компиляции , Получение этой информации о версии в двоичный файл после компиляции двоичного файла является предпочтительным, но любая информация о том, как это делается, будет полезна. И конечно, это должно быть программно; мы не можем потрудиться вручную вводить информацию в хакер ресурсов для 5000 бинарных файлов каждый день.

Кто-нибудь когда-нибудь делал это раньше? Как это можно сделать?

Ответы [ 4 ]

10 голосов
/ 10 июня 2009

Похоже, что лучшим решением (по крайней мере для нас) является использование файла RC.

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

Который скомпилирован в файл .res

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

Который затем связывается с остальными объектными файлами.

3 голосов
/ 10 июня 2009

Найдите AssemblyInfo.cs для вашего проекта.

Но это должно быть заполнено до компиляции. Но вы можете поделиться одним AssemblyInfo.cs между многими двоичными файлами. И вы не привязаны к этому точному имени файла - так что вы можете разделить информацию на несколько файлов ... один общий файл о компании, один о продукте, один для номера версии двоичного файла.

/ 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" )]
1 голос
/ 11 июня 2009

Это только что появилось на CodeProject вчера:

Простой инструмент ресурсов версии для Windows

Это инструмент командной строки, но им легко управлять из скрипта.

0 голосов
/ 10 июня 2009

В предположении двоичных файлов Windows PE информация о версии сохраняется в заголовке PE в разделе IMAGE_OPTIONAL_HEADER под расположениями:

WORD MajorImageVersion
WORD MinorImageVersion

О чем в этой документации говорится:

Определяемое пользователем поле. Это позволяет вам иметь разные версии EXE или DLL. Вы устанавливаете эти поля через переключатель компоновщика / VERSION. Например, «LINK /VERSION:2.0 myobj.obj»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...