Вопрос о возможности добавления дополнительных полей в информацию о версии файла исполняемых программ актуален для разработчиков, которые хотят предоставить пользователям более подробные сведения о программном продукте. В частности, разработчики, использующие среду Lazarus для программирования на Object Pascal, могут захотеть добавить информацию о версиях используемых инструментов, таких как FPC (Free Pascal Compiler), версию Lazarus, а также информацию о последнем коммите из репозитория Git.
Стандартные поля версии файла
Согласно документации по Windows, существуют стандартные поля, которые можно использовать для хранения информации о версии файла. К ним относятся:
Name
Comments
CompanyName
FileDescription
FileVersion
InternalName
LegalCopyright
LegalTrademarks
OriginalFilename
PrivateBuild
ProductName
ProductVersion
SpecialBuild
Добавление пользовательских полей
Для добавления пользовательских полей в информацию о версии файла необходимо модифицировать блок StringFileInfo в структуре VS_VERSION_INFO. Это можно сделать, добавив новые элементы VALUE с уникальными именами и соответствующими значениями. Например:
VALUE "FPCVersion", FPC_VERSION_STR
VALUE "LazarusVersion", LAZARUS_VERSION_STR
VALUE "GitCommit", GIT_COMMIT_STR
где FPC_VERSION_STR, LAZARUS_VERSION_STR, GIT_COMMIT_STR - это строковые константы, содержащие соответствующие значения версий и коммитов.
Пример кода
Давайте рассмотрим пример кода, который демонстрирует, как можно добавить пользовательские поля в информацию о версии файла:
#define VER_FILEVERSION 3,10,349,0
#define VER_FILEVERSION_STR "3.10.349.0\0"
#define VER_PRODUCTVERSION 3,10,0,0
#define VER_PRODUCTVERSION_STR "3.10\0"
#define VER_FPC_VERSION 1,0,10,0
#define VER_FPC_VERSION_STR "1.0.10\0"
#define VER_LAZARUS_VERSION 2,0,0
#define VER_LAZARUS_VERSION_STR "2.0\0"
#define VER_GIT_COMMIT "abcdefg"
#define VER_GIT_COMMIT_STR "abcdefg\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4" // английский язык, кодовая страница ANSI
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
VALUE "FPCVersion", VER_FPC_VERSION_STR
VALUE "LazarusVersion", VER_LAZARUS_VERSION_STR
VALUE "GitCommit", VER_GIT_COMMIT_STR
END
END
// ... другие блоки и поля ...
END
Подтвержденный ответ
Добавление пользовательских полей в информацию о версии файла действительно возможно. Эти поля будут отображаться в свойствах файла в Windows Explorer и могут быть извлечены с помощью функции FileVersionInfo в программном обеспечении.
Альтернативный ответ
На основе ответа на вопрос о настройке пользовательских полей в проектах C++, можно утверждать, что добавление информации в блок StringFileInfo позволит отобразить дополнительные данные в диалоге свойств файла в Windows Explorer. Однако, для подтверждения видимости этих полей, потребуется дополнительная проверка.
Заключение
Добавление пользовательских полей в информацию о версии файла - это эффективный способ предоставить пользователям дополнительные сведения о программном продукте. Разработчикам, работающим в среде Lazarus, рекомендуется использовать данный подход для улучшения информированности о версиях, используемых инструментах и истории разработки.
Улучшение информированности о версиях программных продуктов через настройку пользовательских полей в исполняемых файлах Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS