Ресурс версии в DLL не виден правой кнопкой мыши - PullRequest
10 голосов
/ 12 мая 2009

Я пытаюсь сделать что-то, что очень легко сделать в обычном MSVC, но не поддерживается в VC ++ Express.

В VC ++ Express нет редактора ресурсов. Поэтому я добавил файл с именем version.rc в мой проект DLL. Файл имеет содержимое ниже, которое компилируется компилятором ресурсов и добавляется в конечную DLL. Этот ресурс доступен для просмотра в DLL с помощью reshacker, но не при щелчке правой кнопкой мыши на DLL в проводнике Windows.

Чего не хватает в моем файле RC, чтобы он появлялся при щелчке правой кнопкой мыши?

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "something Application"
            VALUE "FileVersion", "1, 0, 0, 1"
            VALUE "InternalName", "something"
            VALUE "LegalCopyright", "Copyright (C) 2008 Somebody"
            VALUE "OriginalFilename", "something.exe"
            VALUE "ProductName", "something Application"
            VALUE "ProductVersion", "1, 0, 0, 1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

Ответы [ 3 ]

15 голосов
/ 17 мая 2009

Я смог увидеть (используя reshacker) одно различие между моим ресурсом и ресурсами, которые появляются при щелчке правой кнопкой мыши, и это было имя ресурса. Поэтому я изменил VS_VERSION_INFO на 1; и теперь ресурс виден при щелчке правой кнопкой мыши.

1 VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "something Application"
            VALUE "FileVersion", "1, 0, 0, 1"
            VALUE "InternalName", "something"
            VALUE "LegalCopyright", "Copyright (C) 2008 Somebody"
            VALUE "OriginalFilename", "something.exe"
            VALUE "ProductName", "something Application"
            VALUE "ProductVersion", "1, 0, 0, 1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
9 голосов
/ 27 марта 2015

Правильное решение - добавить в начало вашего файла .rc:

#include <windows.h>
3 голосов
/ 12 мая 2009

Попробуйте изменить свои ресурсы на:

 FILEFLAGSMASK 0x3fL

и

    BLOCK "040004e4"

и

VALUE "Translation", 0x400, 1252
...