Page 120 of 150

arclite — работа с архивами на основе 7-Zip

Posted: Sun 15 Aug, 2010 22:26
by 2useven10
Тема для обсуждения arclite — нового альтернативного плагина архиватора 7-Zip для Far.
("Старый" плагин 7zipalt обсуждается в прежней теме.)

Внимание:
Начиная с билда 1762 плагин входит в комплект поставки юникодной версии FAR'а, заменяя собой Multiarc.
В arclite не реализованы некоторые функции, присутствовавшие в Multiarc, в частности упаковка в RAR.

Обсуждение: arclite вместо MultiArc в комплекте Far 2











Кодек LZHAM

arclite — работа с архивами на основе 7-Zip

Posted: Sat 02 Jun, 2018 00:45
by DV

Latest post of the previous page:

С build 5200 тоже воспроизводится. Регрессия по отношению к build 5005, который я продолжал использовать до этого :)

arclite — работа с архивами на основе 7-Zip

Posted: Sat 02 Jun, 2018 03:06
by 2useven10
DV wrote: Fri 01 Jun, 2018 23:05 Похоже, что в arclite
Не уверен, что дело в арклайт, но баг есть. Диалога у меня тоже не видно. Если копировать не Far.exe - всё ок.

arclite — работа с архивами на основе 7-Zip

Posted: Sat 02 Jun, 2018 10:34
by DV
2useven10 wrote: Sat 02 Jun, 2018 03:06Не уверен, что дело в арклайт, но баг есть. Диалога у меня тоже не видно. Если копировать не Far.exe - всё ок.
Похоже, как-то связано с нажатием Enter при запросе копирования/распаковки любого .exe файла.
Изначально я проблему воспроизвёл при попытке обновить проигрыватель 1by1 путём замены имеющихся файлов новыми из архива, в котором 3 файла: 1by1.exe, License.txt и Readme.htm. Я выделил все три, нажал F5 и 3 раза нажал Enter на вопрос о перезаписи. С третьим нажатием Enter случилось то, что я описал.

arclite — работа с архивами на основе 7-Zip

Posted: Sat 02 Jun, 2018 10:40
by DrKnS
DV wrote: Fri 01 Jun, 2018 23:05закрался какой-то жуткий баг
HaRT wrote: Fri 01 Jun, 2018 23:27кнопка Фара в таскбаре покраснела (от стыда?)
Плагин пытается показать диалог "Overwrite file".
Однако, он зачем-то пытается это делать из другого треда, что ни к чему хорошему привести не может:

Code: Select all

>	Far.exe!pluginapi::apiDialogRun(void * hDlg=0x00000000035a8750) Line 1084	C++
 	arclite.dll!0000000063f35bdc()	Unknown
 	arclite.dll!0000000063eda4d6()	Unknown
 	arclite.dll!0000000063eda77a()	Unknown
 	arclite.dll!0000000063efbd60()	Unknown
 	7z.dll!000000001e7657a2()	Unknown
 	7z.dll!000000001e765a67()	Unknown
 	7z.dll!000000001e70c12b()	Unknown
 	7z.dll!000000001e708813()	Unknown
 	7z.dll!000000001e75d4cb()	Unknown
 	7z.dll!000000001e75e86d()	Unknown
 	7z.dll!000000001e70c31b()	Unknown
 	msvcrt.dll!_endthreadex()	Unknown
 	msvcrt.dll!_endthreadex()	Unknown
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 07:34
by 2useven10
DrKnS wrote: Sat 02 Jun, 2018 10:40 он зачем-то пытается это делать из другого треда
Распаковка в последних версиях 7z сильно более многопоточная...

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 08:42
by DrKnS
2useven10 wrote: Mon 04 Jun, 2018 07:34Распаковка в последних версиях 7z сильно более многопоточная...
Надо или даунгрейдить, или отключать, а в перспективе UI показывать в основном треде через ACTL_SYNCHRO.

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 13:12
by Shmuel
Захожу в 7z-архив, там в подпапке файл базы данных sqlite3, нажимаю Enter, файл открывается плагином Polygon, делаю изменение в базе. Во временном файле, создаваемом плагином Arclite, видно, что дата файла базы данных изменилась на текущую. Выхожу из базы данных, Arclite удаляет временный файл, не предлагая обновить архив. Это нормально?

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 13:52
by 2useven10
Shmuel wrote: Mon 04 Jun, 2018 13:12Это нормально?
Видимо нет. Но причём здесь арлайт?

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 13:59
by 2useven10
DrKnS wrote: Mon 04 Jun, 2018 08:42 в перспективе UI показывать в основном треде через ACTL_SYNCHRO.
Надо будет запускать распаковку в отдельном потоке (чтобы основной тред был свободен для UI)?

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 14:17
by DrKnS
2useven10 wrote: Mon 04 Jun, 2018 13:59 Надо будет запускать распаковку в отдельном потоке (чтобы основной тред был свободен для UI)?
Наверное. А как там сейчас в авторском плагине сделано?

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 14:25
by 2useven10
DrKnS wrote: Mon 04 Jun, 2018 14:17 А как там сейчас в авторском плагине сделано?
ТамЗдесь просто зовется inArc->Extract(..., extractor) в основном потоке.
Колбеки идут через extractor, тот в котором проверяется необходимость перезаписи
теперь не всегда в основном потоке.
Как Там - не смотрел, но подозреваю что точно также - проверю...

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 16:40
by 2useven10
Там тоже зовётся диалог из неосновного потока.
Но он нормально отрабатывает.

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 17:20
by zg
потому что там нет критической секции при вызове экспортов.

arclite — работа с архивами на основе 7-Zip

Posted: Mon 04 Jun, 2018 19:56
by 2useven10
zg, да, если убрать - диалог нормально показывается.
это самый простой способ вернуть плагин к более адекватному поведению.
даже если проблемы с filefind которые прибиваются этой критической секцией не устранены - они
гораздо меньшее зло чем текущее затыкание. делать перенос всего UI Из колбэков в основной поток
может и правильно, но на такой подвиг у меня времени нет, если кто-то готов - велкам...

arclite — работа с архивами на основе 7-Zip

Posted: Tue 05 Jun, 2018 07:27
by 2useven10
b289
Оставил одну критическую секцию в GetOpenPanelInfoW().
Диалог показывается и FileFind вроде не падает.

arclite — работа с архивами на основе 7-Zip

Posted: Tue 05 Jun, 2018 08:24
by okaa2
Если я правильно понял, сломали вывод пути при разархивировании.
У меня настроены file association на открытие файлоа *.fb2 в fbreader.
При входе в архив и нажатии f3 fbreader открывает файл *.fb.
В последних сборках fbreader не видит файла *.fb из архива.
В сборке Far30b5200.x64.20180502.7z все работало нормально.
Предположительно, перестали передавать полный путь к разархивированному файлу.
В сборке Far30b5200.x64.20180502.7z выдается строка:
"FBReader.exe C:\Users\*****\AppData\Local\Temp\F3T83C6.tmp\file.fb2
А в сборке Far30b5225.x64.20180604.7z - только:
FBReader.exe file.fb2
Это можно исправить?