Destiny
|
Posted: Wed Mar 19, 2025 17:02 Post subject: |
|
|
 Вот полный код ресурсов для нашего тестового приложения FontsListing, которое я уже ранее вам отсылал.
Code: | // Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef APSTUDIO_INVOKED
#include "targetver.h"
#endif
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Русский (Россия) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_FONTSLISTING ICON "FontsListing.ico"
IDI_SMALL ICON "small.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDC_FONTSLISTING MENU
BEGIN
POPUP "&Файл"
BEGIN
MENUITEM "Вы&ход", IDM_EXIT
END
POPUP "&Справка"
BEGIN
MENUITEM "&О программе...", IDM_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_FONTSLISTING ACCELERATORS
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "О программе FontsListing"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,14,14,21,20
LTEXT "FontsListing, Версия 1.0",IDC_STATIC,42,14,114,8,SS_NOPREFIX
LTEXT "(c) 2023",IDC_STATIC,42,26,114,8
DEFPUSHBUTTON "ОК",IDOK,113,41,50,14,WS_GROUP
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
END
#endif // APSTUDIO_INVOKED
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#ifndef APSTUDIO_INVOKED\r\n"
"#include ""targetver.h""\r\n"
"#endif\r\n"
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,0,77
PRODUCTVERSION 1,7,0,77
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", "'YA MOGU' LLC"
VALUE "FileDescription", "Main GUI application of local FONTs operation toolkit, 32-bit Release"
VALUE "FileVersion", "1.7.0.77"
VALUE "InternalName", "FontsListing"
VALUE "LegalCopyright", "Copyright (C)2022-2025 'YA MOGU' LLC"
VALUE "LegalTrademarks", "Windows is a trademark of Microsoft Corporation"
VALUE "OriginalFilename", "FontsListing.exe"
VALUE "ProductName", "Tool for integrating an additional fonts into OS"
VALUE "ProductVersion", "1.7.0.77"
END
BLOCK "041904E3"
BEGIN
VALUE "CompanyName", "ООО 'Я МОГУ'"
VALUE "FileDescription", "Основное GUI приложение инструментария работы с локальными ШРИФТами, 32-bit Release"
VALUE "FileVersion", "1.7.0.77"
VALUE "InternalName", "FontsListing"
VALUE "LegalCopyright", "Copyright (C)2022-2025 ООО 'Я МОГУ'"
VALUE "LegalTrademarks", "Windows является товарным знаком корпорации Майкрософт"
VALUE "OriginalFilename", "FontsListing.exe"
VALUE "ProductName", "Инструмент для интеграции дополнительных шрифтов в ОС"
VALUE "ProductVersion", "1.7.0.77"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252, 0x419, 1251
END
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_APP_TITLE "FontsListing"
IDC_FONTSLISTING "FONTSLISTING"
END
#endif // Русский (Россия) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Английский (США) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
IDR_VERSION2 VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "TODO: <Название компании>"
VALUE "FileDescription", "TODO: <Описание файла>"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "FontsLis.exe"
VALUE "LegalCopyright", "Copyright (C) 2024"
VALUE "OriginalFilename", "FontsLis.exe"
VALUE "ProductName", "TODO: <Имя продукта>"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // Английский (США) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
|
ЕСЛИ я всё верно вижу, и вы тоже это видите, то ВСЕ ресурсы, за исключением версионности (она вроде как
представлена в двух языках) заключены под тегом РУССКОГО языка.
Но при просмотре в плагине - даже в последней версии - я вижу что плагин считает, что это не так, что все
ресурсы лишь англоязычные! У кого ошибка и в чем её суть?
С двуязычностью версионности тоже вопрос. Хотя в связи с прошедшем временем может и я сам уже запутался...
Но, имхо, ЕСЛИ эта структура находится именно под тегом ЯЗЫКОВ, то отчего ваш плагин ОБЪЕДИНЯЕТ её в одну
структуру, а не выводит ДВУМЯ разными элементами в дереве ресурсов? Чтобы одна структура была отмечена
одним языком, а другая другим? Ведь языка же всё же два поддерживаются! Если верить нашему файлу RC...
И!
ЕСЛИ взять за основу mediacreationtool.exe файл, то там именно так и сделано - в узле дерева ресурсов Version
находится 37 различных ПОД-элементов, соответствующих разным 37 языкам, разным 37 структурам StringFileInfo!
Ровно то и так, что нами и ожидалось увидеть. Почему для нашего ехе-файла это так же тогда не выводится?
В виде двух под-элементов...
Quote: | По умолчанию 0, но можно явно задать. Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)".
|
Ещё лишь вопрос на этой почве возникает, к сожалению....
 Вот полный код ресурсника для версионности этого проекта. Рассмотрим для примера лишь этот тип ресурсов.
Code: | #define MY_VS_FFI_FILEFLAGSMASK 0x0000003FL
#define MY_VOS_NT_WINDOWS32 0x00040004L
#define MY_VOS_CE_WINDOWS32 0x00050004L
#define MY_VFT_APP 0x00000001L
#define MY_VFT_DLL 0x00000002L
// #include <WinVer.h>
#ifndef MY_VERSION
#include "7zVersion.h"
#endif
#define MY_VER MY_VER_MAJOR,MY_VER_MINOR,MY_VER_BUILD,0
#ifdef DEBUG
#define DBG_FL VS_FF_DEBUG
#else
#define DBG_FL 0
#endif
#define MY_VERSION_INFO(fileType, descr, intName, origName) \
LANGUAGE 9, 1 \
1 VERSIONINFO \
FILEVERSION MY_VER \
PRODUCTVERSION MY_VER \
FILEFLAGSMASK MY_VS_FFI_FILEFLAGSMASK \
FILEFLAGS DBG_FL \
FILEOS MY_VOS_NT_WINDOWS32 \
FILETYPE fileType \
FILESUBTYPE 0x0L \
BEGIN \
BLOCK "StringFileInfo" \
BEGIN \
BLOCK "040904b0" \
BEGIN \
VALUE "CompanyName", "Igor Pavlov" \
VALUE "FileDescription", descr \
VALUE "FileVersion", MY_VERSION \
VALUE "InternalName", intName \
VALUE "LegalCopyright", MY_COPYRIGHT \
VALUE "OriginalFilename", origName \
VALUE "ProductName", "7-Zip" \
VALUE "ProductVersion", MY_VERSION \
END \
END \
BLOCK "VarFileInfo" \
BEGIN \
VALUE "Translation", 0x409, 1200 \
END \
END
#define MY_VERSION_INFO_APP(descr, intName) MY_VERSION_INFO(MY_VFT_APP, descr, intName, intName ".exe")
#define MY_VERSION_INFO_DLL(descr, intName) MY_VERSION_INFO(MY_VFT_DLL, descr, intName, intName ".dll")
|
Как мы видим для него заданы лишь две константы. 0x409, 1200 (или 0x04B0)
ВОПРОС - а откуда плагин смог вытащить и показать тогда значение 0x04E4???
Даже если задать поиск этого значения по всему проекту (вдруг где-то константой вшит странным образом),
то ничего нигде не находится....
Так где и чем в этом проекте 0 был заменен на 0x04E4, который вы показываете?
Исходники тут https://sourceforge.net/projects/sevenzip/files/7-Zip/24.09/7z2409-src.7z/download если что...
Last edited by Destiny on Wed Mar 19, 2025 19:09; edited 4 times in total |
|