View previous topic :: View next topic |
Author |
Message |
BeTeP

Joined: 31 Mar 2005 Posts: 125 Location: Санкт-Петербург
|
(Separately) Posted: Sat Mar 22, 2025 17:12 Post subject: |
|
|
Давно хотел написать, но всё времени не было.
В общем проблемка такая.
Начиная с версий плагина 3.0.17.х при просмотре цифровой подписи файла, данные в этой вкладке появляются с задержкой до 35 сек.
Если повторно открыть тот же файл, то данные в этой вкладке отображаются сразу.
В версиях плагина 3.0.16.х и ранее такой проблемки нет. На любом файле данные в этой вкладке появляются моментально.
ТС: 11.51 (х86)
ОС: Win 7 (x64) и Win 10 (x64). _________________ «The Truth Is Out There» |
|
Back to top |
|
 |
iteg
Joined: 01 Dec 2011 Posts: 95
|
(Separately) Posted: Sat Mar 22, 2025 23:24 Post subject: |
|
|
BeTeP
Иногда такое замечал, но зависание было несколько секунд, а не десятков. Буду искать причину. Спасибо за участие в проекте. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 272
|
(Separately) Posted: Mon Mar 24, 2025 16:51 Post subject: |
|
|
iteg
В целом какие-то чудеса получаются. И только лишь из-за того, что я собираю 2019 студией?
Собственно файл FontsListing у вас уже есть. Я же присылал вам его ранее. Вы же не удаляете такие файлы
и они же хранятся для перепроверки каких-то багов, для которых они и были присланы?
Он и другие были в присланном вам ссылкой архиве usedFiles.rar.
Но в нем я вижу именно то что описывал... Если что....
Сейчас попробую найти этот проект. Пересобрать всё заново.
Тут на саму студию за всё время пришло куча обновлений. Может что-то и было сломано/починено?
Касательно "Никакого упоминания 0x04E4 я тоже не нашел" - дык это же ваши изначально слова:
iteg wrote: | но можно явно задать. Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)". |
Т.е. это вы сами уже нашли и увидели эту пресловутую константу. А я лишь наоборот - пишу что именно и не могу ее найти.
Так если теперь мы найти в исходниках её не можем - то как вы в скомпилированном варианте "нашли"?
Ну, точнее плагин смог прочесть. Или Гислер вот прям наглухо спецом менял все подобные константы под себя что ли?
iteg wrote: | Если замените идентификатор IDR_VERSION2 на VS_VERSION_INFO, то получите такую же структуру |
И это при пересборке учтем, чтобы уж точно понять - что и как можно воспроизводить и делать....
Добавлено спустя 2 минуты:
BeTeP wrote: | при просмотре цифровой подписи файла, |
Беру тот же TotalCmd64.exe как пример - там есть подпись - и открываю соответствующую вкладку.
Секунды 2 понадобилось, чтобы она открылась.
И Винда и Тотал - 64 битные. Винда и 10 и 11. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 272
|
(Separately) Posted: Mon Mar 24, 2025 20:29 Post subject: |
|
|
iteg
После пересборки вроде наверное бОльшая часть вопросов отошла.
Сейчас реально есть видимость и Английского И Русского языков.
И мы теперь реально можем показать древо версионности на энных языках,
спрятанных под одним лишь идентификатором VS_VERSION_INFO.
Но что осталось - это та самая кодовая страница)))
Ведь вроде как, подняв историю переписки тут, я вижу, что и в ваших тестах:
iteg wrote: | Добавлено: Сб Дек 28, 2024 15:43
.......
Тестовый пример:
LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
//LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
//LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
//LANGUAGE LANG_RUSSIAN, 3
103 DIALOGEX 0, 0, 292, 218, 0
STYLE WS_POPUP | WS_BORDER
EXSTYLE WS_EX_RIGHT | WS_EX_RTLREADING | 0x00400000
CAPTION "Error!"
FONT 8, "MS Shell Dlg", 0
BEGIN
CTEXT "Select One:", 1, 10, 10, 280, 12
PUSHBUTTON "&Retry", 2, 75, 30, 60, 12
PUSHBUTTON "&Abort", 3, 75, 50, 60, 12
PUSHBUTTON "&Ignore", 4, 75, 80, 60, 12
END
- LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
0x0019 (25) (Russian), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
0x0419 (1049) (Russian (Russia)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
0x0819 (2073) (Russian (Moldova)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, 3
0x0C19 (3097) (Language Neutral), 0x0000 (0) (ANSI - Cyrillic)
Для ресурса DIALOGEX изменяется только значение поля Language, а CodePage остается 0. |
добиться контролируемого изменения значения этого Компонента - не удалось. Всегда 0.
И похоже, что макрос вида LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT отвечает ТОЛЬКО лишь
за факт смены/выставления языка, но никак не кодовой страницы ресурса.
Ну и далее вы пишите, что вроде как это нормально - по умолчанию так и есть. НО, типа, можно
вроде как и принудительно выставить то, что надо. И вот как раз приводите в пример:
Quote: | Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)". |
Но мы же видели, что в исходниках проекта этого значения нет! Возможно Гислер при компиляции под себя
ЧТО-ТО и ДОнастроил... НО вот вопрос тогда - ТАК ЧТО можно настраивать, чтобы это поле принимало реально
другие значения, а не этот раздражающий 0? В вашем тестовом примере WindowsAppTest тоже же всё с нулём.
Вот сможете что-то ЭДАК перевыставить в этом проекте, чтобы к примеру, так же СР=1252 получилось?
Ну, или для нас более ближний вариант - 866? Или вообще юникод 1200?
Вот что есть в инете:
 на инглише (я понимаю, что вы и так это знаете - скорее заметка для меня) Languages and Code Pages
The Language level of the Resource Table represents the language of the resources. Language identifiers consist of a primary language identifier and a sublanguage identifier, representing the language and the country/region, respectively.
Code pages are used to map character sets for non-Unicode applications. The code page for a resource is given in the IMAGE_RESOURCE_DATA_ENTRY structure. Information about a code page can be retrieved using the GetCPInfoEx function in the Windows API.
It is important to note that while language identifiers and code pages provide a way to support localization in Windows applications, they represent different aspects. Language identifiers are about linguistics while code pages are about character encoding.
Т.е. "читать" вроде как это можно даже на уровне API. Ну а где же тогда храниться функционал "записи" этой инфы?
Что вот Гислер смог-таки это сделать.... Ведь этот пресловутый файл TC7Z64.DLL он-таки как-то собрал сам! А не взял откуда-то готовый.
Last edited by Destiny on Thu Apr 03, 2025 13:07; edited 1 time in total |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 272
|
|
Back to top |
|
 |
iteg
Joined: 01 Dec 2011 Posts: 95
|
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 272
|
(Separately) Posted: Sun Apr 20, 2025 22:50 Post subject: |
|
|
Благодарю за попытку....
Вот в этом-то и цымус, что плагин/код/алгоритм вроде как вполне себе валидно умудряется
считывать эти "ненули" в некоторых случаях некоторых ресурсов.
А вот взять и выставить при компиляции мы почему-то не можем. И в итоге крякозяблы...
А что касается цифровых подписей - где смог - проверил и очень стабильно быстро получил просмотр. |
|
Back to top |
|
 |
BeTeP

Joined: 31 Mar 2005 Posts: 125 Location: Санкт-Петербург
|
(Separately) Posted: Mon Apr 21, 2025 01:18 Post subject: |
|
|
iteg
Проверил на нескольких файлах просмотр цифровых подписей. Пока все нормально.
Спасибо за исправление. _________________ «The Truth Is Out There» |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 272
|
(Separately) Posted: Mon Apr 28, 2025 14:42 Post subject: |
|
|
iteg
Есть директория %LOCALAPPDATA%\Microsoft\WindowsApps\
А в ней есть спецссылки типа IO_REPARSE_TAG_APPEXECLINK.
Сама Винда на глубоком уровне обрабатывает их. А нам, простым смертным,
даже и увидеть ничего нельзя. НО любопытство - двигатель прогресса!!
https://github.com/JFLarvoire/SysToolsLib/blob/master/Docs/Catalog.md
там есть утилита (и главное есть полный исходный код), которая уже
умеет "видеть" настоящие пути до реальных ЕХЕ файлов, которые же
и скрываются за нулевыми ссылками в этой директории: truename.exe.
Предложение - внести в плагин возможность УВИДЕТЬ правильные полные
пути до реальных ЕХЕ файлов, при попытке открыть путь-спецссылку вида
%LOCALAPPDATA%\Microsoft\WindowsApps\pwsh.exe, который должен сам
трансформироваться в настоящий путь до:
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.5.0.0_x64__8wekyb3d8bbwe\pwsh.exe
Ну и далее плагин уже работает по своей прямой специальности...
просто из той библиотеки можно вытащить код, который уже корректно
разбирается со всеми этими IO_REPARSE_TAG_****
Ну и в плагине соответственно ввести новую строку в блоке информации,
которая бы описывала эту ситуацию. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|