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

Здесь можно обсудить ваш любимый плагин.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

Тема для обсуждения arclite — нового альтернативного плагина архиватора 7-Zip для Far.
("Старый" плагин 7zipalt обсуждается в прежней теме.)

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

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











Кодек LZHAM
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Latest post of the previous page:

Kirillony wrote: Fri 23 Feb, 2018 19:483. Жмём ещё раз ESC
Вот в этом месте плагин возвращает из AnalyseW -1.
Согласно Писанию, любой описатель, отличный от NULL, считается валидным описателем.
Поэтому фар отдает этот описатель обратно в CloseAnalyseW, где плагин делает ему delete static_cast<Archives*>(info->Handle);

EXCEPTION_ACCESS_VIOLATION - Memory at FFFFFFFF could not be read - абсолютно ожидаемый в этом случае результат.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

Да с такими настройками ПлагМанагера всё плохо.

Собственно проблема в этом:
DrKnS wrote: Fri 23 Feb, 2018 20:27любой описатель, отличный от NULL, считается валидным описателем.
Для:
Kirillony wrote: Fri 23 Feb, 2018 19:482. Оп-паньки, пароль-то мы не знаем - жмём ESC:
Нет смысла вообще показывать меню - пароль от этого не вспомнится.
А способа сообщить об этом из AnalyzeW нет.

Для других настроек пришлось прокидывать -2 в Open и уже там возвращать фар -2 = PANELSTOP.
Здесь без переделок в анализе кода возврата придётся анализировать настройки и возвращать NULL,
тогда падать не будет, но будет ненужная попытка открыть архив через ассоциации или другой плагин.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

2useven10 wrote: Fri 23 Feb, 2018 23:16будет ненужная попытка открыть архив через ассоциации или другой плагин
Это всяко лучше, чем падать.

Однако, если это поведение вам дорого, кто мешает плагину:
- ничего не делать в OpenW, если OpenInfo.OpenFrom == OPEN_ANALYSE && OpenAnalyseInfo.Handle == -1;
- ничего не делать в CloseAnalyseW, если OpenAnalyseInfo.Handle == -1

?
Kirillony
Posts: 232
Joined: Tue 24 Jan, 2006 18:49
Has thanked: 6 times
Been thanked: 4 times

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

Post by Kirillony »

По Ctrl-PgDn почти такой же эффект, только:
2.

Code: Select all

╔═ Выбор плагина ══╗
║  arclite         ║
╚══════════════════╝
3. Интересно, что если здесь вместо ESC нажать Enter, то всё ок. (В первом случае так же)
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

Kirillony wrote: Sat 24 Feb, 2018 02:403. Интересно, что если здесь вместо ESC нажать Enter, то всё ок. (В первом случае так же)
ожидаемо
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

DrKnS wrote: Fri 23 Feb, 2018 23:45Это всяко лучше, чем падать.
Однако, если это поведение вам дорого, кто мешает плагину:
Убрать падение, конечно,не проблема.
Но хочется при отказе от ввода пароля (нажатии Esc) вообще не открывать архив, а не отказываться потом от ввода пароля в multiarc, а потом ещё и в том что открывает архив по системным ассоциациям (это и дорого).
Проблемы возникают, если пароль закрывает имена файлов, тогда его приходится запрашивать в Analyze(), а у него PANEL_STOP не предусмотрен. Поэтому пришлось делать вид, что архив успешно открыт arclite, а потом в Open() возвращать PANEL_STOP.
Так можно убедить фар отказаться от открытия при [ ] Even if only one plugin found.
Но при [x] Even if only one plugin found (если убрать падение) эффект будет обратным - мало того что немедленного отказа не будет, так ещё и arclite будет в меню для выбора способа открытия архива.
Вместо всего этого цирка можно просто сделать особый код возврата Analyze() - PANEL_STOP, так как уже сделано в Open().
Last edited by 2useven10 on Sat 24 Feb, 2018 07:30, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

а пароль спрашивать обязательно в analyze?
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

zg wrote: Sun 25 Feb, 2018 14:09а пароль спрашивать обязательно в analyze?
Без серьёзных переделок arclite - да.
Analyze() в конце концов вызывает open(), через 7z, а тот для архивов с шифрованным заголовком в callback просит пароль.
Хотя, чисто теоретически, наверное можно было бы спросить: это архив с закрытым заголовком, пароль помнишь (Y/N) ?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

2useven10 wrote: Sun 25 Feb, 2018 17:39Analyze() в конце концов вызывает open(), через 7z, а тот для архивов с шифрованным заголовком в callback просит пароль.
и если вернуть неверный пароль — тип архива не определиться?
2useven10 wrote: Sun 25 Feb, 2018 17:39Хотя, чисто теоретически, наверное можно было бы спросить: это архив с закрытым заголовком, пароль помнишь (Y/N) ?
и что это даст?
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

zg wrote: Sun 25 Feb, 2018 19:38и если вернуть неверный пароль — тип архива не определиться?
будет одна из ошибок открытия.
zg wrote: Sun 25 Feb, 2018 19:38и что это даст?
в принципе открывать по-честному необязательно, можно вернуть что-то а открыть потом.
но если неожиданно потребовавшийся пароль действительно неизвестен, смысла продолжать работу с архивом нет.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

2useven10 wrote: Sun 25 Feb, 2018 21:45в принципе открывать по-честному необязательно, можно вернуть что-то а открыть потом.
но если неожиданно потребовавшийся пароль действительно неизвестен, смысла продолжать работу с архивом нет.
так и надо делать и смысл как раз в этом есть. в analize плагин должен вернуть информацию о том, может ли он потенциально открыть архив. спрашивать пароль в этот момент - вредно.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

Согласен. Если дело дошло до ввода пароля, анализ можно считать успешным.
И сделать вроде будет не сложно.
Zzzz
Posts: 108
Joined: Sat 13 Oct, 2007 10:12
Been thanked: 1 time

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

Post by Zzzz »

Запускаю far.exe -m -ro -s %TEMP%\farprofile\%RANDOM% -pPlugins\ArcLite , жму ctrl-pgdn на архиве и пытаюсь скопировать любой файл на диск FAT32:
╔════════════════ arclite ═════════════════╗ ║ The parameter is incorrect. (0x80070057) ║ ║ V:\Saga 044-000.jpg ║ ║ sysutils.cpp:213 ║ ╟──────────────────────────────────────────╢ ║ { Ignore } [ Ignore All ] [ Cancel ] ║ ╚══════════════════════════════════════════╝
В этот момент существует неповрежденный "V:\Saga 044-000.jpg", который удаляется при выборе любого варианта.
7-Zip (a) 18.01 (x64) ошибок не показывает.
https://anonfile.com/H858N5ddb0/Saga_04 ... Thoth_.cbz
W7U SP1 x64
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

достаточно любой файл, у которого год в одной из дат меньше 1980 распаковать на fat*.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

Ok. Учту когда буду править #3582
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

b276
Post Reply

Return to “Обсуждение плагинов”