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

Здесь можно обсудить ваш любимый плагин.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 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
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

2useven10 wrote: Tue 29 Dec, 2020 12:08 Этот репорт остался? У меня не воспроизводится - всё открывает.
У меня воспроизводится. Windows 10 x86. Актуальную версию фара (ночные сборки с офсайта) открываю по Win-R.
https://t.me/FarManager — Telegram чат
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

Да на x86 похоже повторяется.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

Интересная система windows. поиск файлов не работет на x86 если в пути встречается '/'.
Плагин я поправил, но может имеет смысл в фар ModulePath выпрямлять.
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, а о чем именно речь?
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

DrKnS, На x86 не работает поиск файлов по маске, если в базовом пути есть прямой слэш вместо обратного.
Поэтому arclite не находил 7z.dll при наличии прямого слэша в ModulePath (-pXXXX/YYY).
Last edited by 2useven10 on Thu 31 Dec, 2020 13:12, edited 2 times in total.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

Точнее ModuleName:

Code: Select all

struct PluginStartupInfo
{
	size_t StructSize;
	const wchar_t *ModuleName;
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: Thu 31 Dec, 2020 13:09 поиск файлов по маске
Поиск - это как?

Вот это, например, у меня вполне работает:
  1. WIN32_FIND_DATA d;
  2.  
  3. assert(FindFirstFile(L"c:/windows/ex*", &d) != INVALID_HANDLE_VALUE);

Но ModuleName надо бы приводить к традиционному виду, да.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

DrKnS, Как оказалось, arclite ещё и префикс \\?\ добавляет.
В этом случае FindFirstFile() возвращает INVALID_HANDLE_VALUE. если в пути прямой слеш. но только на x86.
Может плагин и не совсем прав (если уж делаешь NT path, надо и слеши нормализовать), но такой был код.
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, тогда логично (но странно, что только на x86) - с префиксом официально поддерживаются только обратные слеши.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Распаковывал архив поверх существующей структуры директорий.
При этом один файл отказался перезаписываться, с таким сообщением

Code: Select all

The file exists. (0x80070050)
C:\C\qwerty
sysutils.cpp:146

&Retry &Ignore Ignore &All Cancel

Как выяснилось, проблема была в том, что файл пытался перезаписаться поверх папки.
Для интереса попробовал и обратное: перезаписать папку поверх файла.
Выяснилось, что если папка непустая, то сообщение такое же неинформативное.
А если пустая, то не выдаётся никаких сообщений (явно баг).
https://t.me/FarManager — Telegram чат
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

John Doe wrote: Sun 31 Jan, 2021 12:33 сообщение такое же неинформативное.
не идеальное, конечно, но информации там достаточно.
Создание папки, видимо, без проверки результата, надо бы поправить.
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 »

John Doe wrote: Sun 31 Jan, 2021 12:33 сообщение такое же неинформативное
Почему?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

DrKnS wrote: Sun 31 Jan, 2021 13:45Почему?
Кстати да, сам фар тоже в этой ситуации не слишком информативен.

При попытке перезаписать файл файлом всё очевидно:

Code: Select all

╔═════════════════════════════ Warning ══════════════════════════════╗
║                        File already exists                         ║
║ C:\C\qwerty                                                        ║
╟────────────────────────────────────────────────────────────────────╢
║ New                                          0 31.01.2021 16:13:04 ║
║ Existing                                     0 31.01.2021 16:13:18 ║
╟────────────────────────────────────────────────────────────────────╢
║ [ ] Remember choice                                                ║
╟────────────────────────────────────────────────────────────────────╢
║      { Overwrite } [ Skip ] [ Rename ] [ Append ] [ Cancel ]       ║
╚════════════════════════════════════════════════════════════════════╝
Но если источник - директория

Code: Select all

╔══════════════════ Error ═══════════════════╗
║                Cannot copy                 ║
║                  "йцукен"                  ║
║                     to                     ║
║               "C:\C\йцукен"                ║
╟────────────────────────────────────────────╢
║       0x00000050 - The file exists.        ║
╟────────────────────────────────────────────╢
║ { Retry } [ Skip ] [ Skip all ] [ Cancel ] ║
╚════════════════════════════════════════════╝
Да, сообщение корректное, но не даёт информации о причине неудачи.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Обратный случай же случай (копирование папки в файл) наоборот, в фаре выдаёт сообщение с полной информацией

Code: Select all

╔═════════════════════════════ Error ══════════════════════════════╗
║                     Cannot create the folder                     ║
║                           C:\C\qwerty                            ║
╟──────────────────────────────────────────────────────────────────╢
║ 0x000000B7 - Cannot create a file when that file already exists. ║
╟──────────────────────────────────────────────────────────────────╢
║                  { Retry } [ Skip ] [ Cancel ]                   ║
╚══════════════════════════════════════════════════════════════════╝
А вот арклайт:

Code: Select all

╔════════════════════════ ArcLite ════════════════════════╗
║ The system cannot find the path specified. (0x80070003) ║
║                   C:\C\qwerty\йцукен                    ║
║                    sysutils.cpp:146                     ║
╟─────────────────────────────────────────────────────────╢
║     { Retry } [ Ignore ] [ Ignore All ] [ Cancel ]      ║
╚═════════════════════════════════════════════════════════╝
Сообщение тоже корректное, но не содержащее достаточной информации.
https://t.me/FarManager — Telegram чат
Мегамонстр
Posts: 73
Joined: Fri 24 Aug, 2012 15:24
Been thanked: 1 time

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

Post by Мегамонстр »

Можно ли попросить в этой теме автора реализовать хотелку ― сделать так, чтобы tar.gz, tar.xz и прочие tar.* открывать единым файлом, т.е. без открытия *.gz, затем *.tar, как в Фаре для Линукса?
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

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

Post by skipik »

Мегамонстр, на всякий случай вот макрос, который реализует нечто подобное:
Post Reply

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