Почему не отображается информация о версии

#c #windows #windres

#c #Windows #windres

Вопрос:

Итак, я разрабатывал свое приложение на C , когда наткнулся на файлы ресурсов Windows (.rc), мое приложение на португальском языке Португалии, поэтому я написал свой файл следующим образом:

 MAIN ICON "icon.ico"
MAIN VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "081604b0"
        BEGIN
            VALUE "Comments", "Tenta a tua Sorte!"
            VALUE "CompanyName", "Adsglobal"
            VALUE "FileDescription", "Jogo Simples"
            VALUE "FileVersion", "1.0.0.0"
            VALUE "InternalName", "Tenta a Sorte"
            VALUE "LegalCopyright", "Copyright © Rodrigo Santos 2020"
            VALUE "OriginalName", "Tenta a Sorte"
            VALUE "ProductName", "Tenta a Sorte"
            VALUE "ProductVersion", "1.0.0.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0816, 1200
    END
END
  

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

Комментарии:

1. Что именно вы подразумеваете под «не является не»? Вы имеете в виду, что она отображается, а ее не должно быть? Потому что это то, что там написано. Пожалуйста, уточните.

Ответ №1:

Вы указываете неправильный идентификатор для VERSIONINFO ресурса. Согласно VERSIONINFO документации, идентификатор должен быть 1 , а не MAIN :

Существует два способа форматирования инструкции VERSIONINFO:

 versionID VERSIONINFO fixed-info  { block-statement . . . }
  

— или —

 versionID VERSIONINFO 
fixed-info
BEGIN
block-statement
...
END
  

Параметры

versionId

Версия-идентификатор информационного ресурса. Это значение должно быть 1.

Итак, попробуйте это вместо:

 MAIN ICON "icon.ico"
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "081604b0"
        BEGIN
            VALUE "Comments", "Tenta a tua Sorte!"
            VALUE "CompanyName", "Adsglobal"
            VALUE "FileDescription", "Jogo Simples"
            VALUE "FileVersion", "1.0.0.0"
            VALUE "InternalName", "Tenta a Sorte"
            VALUE "LegalCopyright", "Copyright © Rodrigo Santos 2020"
            VALUE "OriginalName", "Tenta a Sorte"
            VALUE "ProductName", "Tenta a Sorte"
            VALUE "ProductVersion", "1.0.0.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0816, 1200
    END
END
  

В качестве альтернативы вы можете использовать VS_VERSION_INFO макрос, который предварительно определен в <winver.h> , например:

 #include <winver.h>

MAIN ICON "icon.ico"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "081604b0"
        BEGIN
            VALUE "Comments", "Tenta a tua Sorte!"
            VALUE "CompanyName", "Adsglobal"
            VALUE "FileDescription", "Jogo Simples"
            VALUE "FileVersion", "1.0.0.0"
            VALUE "InternalName", "Tenta a Sorte"
            VALUE "LegalCopyright", "Copyright © Rodrigo Santos 2020"
            VALUE "OriginalName", "Tenta a Sorte"
            VALUE "ProductName", "Tenta a Sorte"
            VALUE "ProductVersion", "1.0.0.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0816, 1200
    END
END