shmuz / Spring

Far Manager macros in Lua
Other
4 stars 1 forks source link

Забавный глюк MS Help Workshop 4.1 при просмотре CHM манов LuaFAR #16

Closed VictorVG closed 11 years ago

VictorVG commented 11 years ago

В некоторых случаях собранные в MS Help Workshop 4.1 СHM маны выдают ошибку "Navigation Canceled...". Я её поучил скачав из ночнушек маны отдельно, и в то же время если взять всю. SVN копию. репозитария она у меня не воспроизвелась. Я сталкивался с таким его поведением когда в HTML файле он встречает ссылку на отсутствующую индексную страницу. Попробую покопаться и устранить эффект. Но выглядит он не слишком "приятно": http://s60.radikal.ru/i168/1210/6b/cc6d182119aa.png . Как сделаю рабочий вариант добавлю сюда - зачем два раза одну и ту же работу будем делать? Похоже придётся проверить файлы оглавления - обычно причина сидит в их структуре. Сделаю - скажу точно.

shmuz commented 11 years ago

Я сталкивался с этим тоже, но пока причину выяснить не удалось. Если докопаешься - будет интересно (и полезно, разумеется).

nightroman commented 11 years ago

Скачанные из инета файлы CHM надо разлочивать. ПКМ -> Unblock.

shmuz commented 11 years ago

У меня на XP даже такой опции в ПКМ нет. Скачал и можно сразу запускать. А чем объясняется залочивание?

nightroman commented 11 years ago

Скачивающим софтом, который добавляет специальный альтеративный поток. Может, и еще есть факторы. Если файл не залочен, то ПКМ и не показывает кнопку Unblock.

Совет распространителям CHM - делать это только в архивах или баг репортов не оберешься. К сожалению, в нашем случае даны прямые ссылки из свн..

nightroman commented 11 years ago

А, и я имел в виду, конечно, ПКМ - Properties - Unblock

shmuz commented 11 years ago

Спасибо, подумаю. Мне кажется, что в ночных сборках лучше было бы, но не все разделяют это мнение.

VictorVG commented 11 years ago

nightroman

Это кстати я уже так подумал - система обычно блокирует файл по хендлу, такую. блокировку можно сеять либо например UNLOCKER www.emptyloop.com/unlocker он работает на Windows 2000 / XP / 2003 / Vista / Windows 7, либо в том же Process Hacker (Ctrl+F, - вводим первые буквы, Find, он выдаёт нам список хендлов, Del) (моя сборка с документацией тут http://narod.ru/disk/61347667001.997ac9eaa43f4604dd6c2818d09f947f/Process_Hacker_2.29_SVN-r5089-bin.7z.html там и Zip архив - установка не нужна, и устанавливаемый вариант. Оба для x86/x64, минимально нужна WinXP SP3, а уже SVN 5090 судя по всему потребует минимально от семёрки - сборка в MS VC 2012) или всё а механизм блокировки альтернативным потоком сейчас погляжу - самому интересно как они формируют запрос на запуск файлов из каталога загрузки. Не просто так ведь система выдаёт запрос на их запуск оттуда. Должны же быть признаки по которым он активируется?

Да, есть скрытый поток с именем Zone.Identifier содержащий запись:

[ZoneTransfer] ZoneId=3

хендла на файл в системе нет. Проверил РН. Поток виден с помощью плагина NTFS File Infofmation - Metadata information:

╔════════════════════════════════ NTFS File Information ════════════════════════════════╗ ║ File: E:\Down\macroapi_manual.chm ║ ╟─────────────────────┬─────┬─────────┬─────────┬─────────┬─────────────────────────────╢ ║ Type│RXCES│Data Size│Disk Size│Fragments│Name/Data ║ ╟─────────────────────┼─────┼─────────┼─────────┼─────────┼─────────────────────────────╢ ║ STANDARD_INFORMATION│R │ 72│ │ │ ║ ║ FILE_NAME│R │ 90│ │ │1E:\Down\MACROA~1.CHM ║ ║ FILE_NAME│R │ 104│ │ │2E:\Down\macroapi_manual.chm ║ ║ OBJECT_ID│R │ 16│ │ │ ║ ║ DATA│ C │ 27,669│ 22,016│ 1│ ║ ║ │ │ 27 KB│ 21.5 KB│ │ ║ ║ DATA│R C │ 26│ │ │3Zone.Identifier ║ ╟─────────────────────┼─────┼─────────┼─────────┼─────────┼─────────────────────────────╢ ║ Non-Resident Total│ │ 27,669│ 22,016│ │ ║ ║ │ │ 27 KB│ 21.5 KB│ │ ║ ╚═════════════════════╧═════╧═════════╧═════════╧═════════╧═════════════════════════════╝

Похоже он за это дело и отвечает. Тогда разве что как решение просто отдельно выкладывать фалы в Zip/7z архиве чтобы система при запуске распаковала его во временный каталог - тогда этот поток "теряется".

А насчёт опции - и у меня ХР, а там такого механизма нет. Блокировка по хендлам после завершения блокирующего приложения это известная ошибка NTOSKRNL.EXE тянущаяся ещё с времён Windows NT 3.5, но до сих пор не исправленная. Она возникла уже после получения Микрософт исходных текстов ОС Windows NT 3.1 разработанной для них в DEC как кросплатформенный вариант DEC Open VMS. Дальше уже они сами код переписывали - Дэвида Солмона который его создал в DEC от проекта отстранило руководство Микрософт.

shmuz commented 11 years ago

Тогда разве что как решение просто отдельно выкладывать фалы в Zip/7z архиве чтобы система при запуске распаковала его во временный каталог

Уже не надо, т.к. эти мануалы всё-таки решили поместить в ночные сборки (папка Documentation\misc).

shmuz commented 11 years ago

Закрываю, так как не специфично для данного проекта.