2016-07-11 14 views
-1

Я пишу код в Lazarus Я хочу добавить дополнительную информацию, например, версию FPC, версию Lazarus, Git Commit и т. Д.Поддерживает ли Windows дополнительные пользовательские поля в информации о версии файла исполняемого файла?

Возможно ли добавить такие поля в проект?

Информация на https://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx дает эти поля в качестве стандартных.

Name 
Comments 
CompanyName 
FileDescription 
FileVersion 
InternalName 
LegalCopyright 
LegalTrademarks 
OriginalFilename 
PrivateBuild 
ProductName 
ProductVersion 
SpecialBuild 

Существует также пример кода, как

#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" 

#ifndef DEBUG 
#define VER_DEBUG     0 
#else 
#define VER_DEBUG     VS_FF_DEBUG 
#endif 

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_DLL 
FILESUBTYPE  VFT2_UNKNOWN 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904E4" 
     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 "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR 
      VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR 
      VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR 
      VALUE "ProductName",  VER_PRODUCTNAME_STR 
      VALUE "ProductVersion", VER_PRODUCTVERSION_STR 
     END 
    END 

    BLOCK "VarFileInfo" 
    BEGIN 
     /* The following line should only be modified for localized versions.  */ 
     /* It consists of any number of WORD,WORD pairs, with each pair   */ 
     /* describing a language,codepage combination supported by the file.  */ 
     /*                  */ 
     /* For example, a file might have values "0x409,1252" indicating that it */ 
     /* supports English language (0x409) in the Windows ANSI codepage (1252). */ 

     VALUE "Translation", 0x409, 1252 

    END 
END 

Можно ли добавить свои собственные дополнительные поля, как я описал выше, который будет отображаться, когда пользователь нажимает на файл в Windows Explorer, или быть извлечена функцией FileVersionInfo в программе.

+0

Просьба уточнить ваш вопрос. – Dai

+0

https://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx –

+0

Посмотрите [Показать название приложения, версию и компанию] (http: // wiki .freepascal.org/Show_Application_Title, _Version, _and_Company) – Abelisto

ответ

0

От ответа на вопрос Custom field in file version in C++ project возможно, добавив дополнительную информацию к блоку StringFileInfo из образца в вопрос. В этом ответе указывается, что информация должна отображаться в диалоговом окне свойств файла в проводнике Windows, но мне нужно будет это проверить.