MultiArc: archive support plugin — модуль работы с архивами

Здесь можно обсудить ваш любимый плагин.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MultiArc: Archive support plugin — Модуль работы с архивами

Post by buniak_a_h »

Latest post of the previous page:

citRiks, мне одному кажется, что функционал мультиарка легко делается панельным модулем на ЛУА?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by citRiks »

buniak_a_h,
да, только панельные модули не так легко делаются :) ИМХО
Вроде как МултиАрк это "ленивый" (легкий, упрощенный) способ делать панельные модули в некотором роде.
Даже не ссылаясь на лень, я подозреваю что для некоторых применений наверное МултиАрк более пригоден.
как и в случае что когда применятель справедливо не хочет или не может учить Луа
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MultiArc: Archive support plugin — Модуль работы с архивами

Post by buniak_a_h »

citRiks wrote: Sun 25 Oct, 2020 21:34 да, только панельные модули не так легко делаются ИМХО
После дерева мне почти ничего не кажется сложным. Тем более, что дерево строится и по архиву. Т.е. надо только задать команды для получения списка, вытаскивания и запихивания файла - и, кажется, остальное - лишнее.
Если мне ответит автор Обсервера (Ariman, кажется), то можно будет сделать мультиарх для ISO (и др. образы дисков) и msi (согласитесь, заманчиво!)
К тому же можно будет добавить поддержку Descript.ion.
Что-то у меня руки зачесались… Как говорил наш хозяин, «когда у нас будет много-много свободного времени». Но… С 1994 года такое так и не наступило ;-)
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

MultiArc: Archive support plugin — Модуль работы с архивами

Post by John Doe »

unxed wrote: Sun 25 Oct, 2020 06:03 Ещё можно аналогичным образом попробовать перетащить продвинутую поддержку .tar.gz (получение списка файлов в архиве без промежуточной полной распаковки).
Вот это действительно удобная вещь, которую почему-то не умеет 7-zip (и соответственно arclite).
Такое умел заброшеный newarc.
https://t.me/FarManager — Telegram чат
unxed
Posts: 25
Joined: Fri 26 Nov, 2010 06:23
Has thanked: 6 times
Been thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by unxed »

Я конкретно в этот кусок кода не зарывался, увы — так что не могу сказать, насколько сложно или нет перетащить это дело обратно. Но, подозреваю, что, даже если портировать назад пре-парсер, распаковку-то одного файла без распаковки всего архива всё равно на 7z сделать не получится. В far2l для этого libarchive используют. На винде такое могла бы делать утилитка bsdtar, собранная на базе той же libarchive, но это, выходит, её в дистр включать надо? Ну и я не ручаюсь за свежесть её win32-сборки, хотя, наверное, и пересобрать можно.
Last edited by unxed on Mon 26 Oct, 2020 22:20, edited 3 times in total.
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

Доброго времени суток всем!
Использую RAR4.20 для работы со старым оригинальным типом архивов через FMT. Хотелось бы ОТДЕЛЬНО реализовать поддержку RAR5. Создал архив в RAR6.00, положил переименованный новый rar.exe в rar5.exe рядом с 4-й версией и попробовал просто через запись в Custom.ini (параметры брал из rar.cpp, об этом ниже, ID нашел в интернете) :

[RAR5]
TypeName=RAR5
ID=52 61 72 21
Extension=rar
List=rar5 l -- %%A @%%LNMA
Start="----------- --------- -------- ----- ----"
End="----------- --------- -------- ----- ----"
Format0=" +aaaaaaa +z+ +dd-tt-yy hh:mm +n++"
Extract=rar5 {-p%%P} {-ap%%R} -y -c- -kb -- %%A @%%LNMA
ExtractWithoutPath=rar5 e {-p%%P} -y -c- -kb -- %%A @%%LNMA
Test=rar5 t -y {-p%%P} -- %%A
Delete=rar5 d -y {-w%%W} -- %%A @%%LNMA
Comment=rar5 c -y {-w%%W} -- %%A
CommentFiles=rar5 c -y {-w%%W} -- %%A
SFX=rar5 c -y -- %%A
Lock=rar5 k -y -- %%A
Protect=rar5 rr -y -- %%A
Recover=rar5 r -y -- %%A
Add=rar5 a -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
Move=rar5 m -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AddRecurse=rar5 a -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
MoveRecurse=rar5 m -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AllFilesMask="*.*"

В общем, архив создается (подключается нужный файл - rar5.exe), но, если попробовать зайти в него в FAR, то внутри типа ничего нет, пусто. Если зайти в архив через WinRAR или rar l , то все в порядке, содержимое отображается целостно.

У разработчика на сайте https://www.rarlab.com/rar_add.htm выложен rar.fmt 5.0 for FAR file manager, https://www.rarlab.com/rar/farfmt.rar, внутри есть даже отдельные исходники.
Все начинает работать как надо с RAR5, когда заменяю Rar.fmt, но при этом, как вы понимаете, теряется возможность раздельности использования 4 и 5/6 версий, а мне поддержка 4 ОЧЕНЬ нужна.

Возможно, кто-то подскажет почему не отображается содержимое? Пробовал на разных ОС (7, 8, 10, 2008R2) под FAR1 и FAR3 - везде одинаково.

Или, возможно, кто-нибудь сможет скомпилировать или изменить содержимое rar.fmt для х86 и х64, и библиотек unrar.dll / unrar64.dll, чтобы были другие имена у файлов в связке (скажем, rar5.exe, rar5.fmt, unrar5.dll и unrar5_64.dll) и именование в меню RAR5?

Спасибо!
Last edited by MAD.MAX on Sat 19 Dec, 2020 13:33, edited 1 time in total.
User avatar
zollo
Posts: 55
Joined: Wed 04 Nov, 2009 10:06
Has thanked: 5 times
Been thanked: 5 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by zollo »

MAD.MAX, RAR6 открывает и извлекает из старых версий без проблем. Если нужно создать архив rar4, то используйте ключ -ma4.
Из документации:
По умолчанию WinRAR создаёт архивы в формате RAR5. Чтобы создавать архивы RAR4, используйте ключ -ma4. Ключ -ma5 или просто -ma нужен для отмены действия -ma4, сохранённого в конфигурации, и принудительного использования формата RAR5.
PS. У RAR5 другая сигнатура: 52 61 72 21 1A 07 01
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

zollo wrote: Sat 19 Dec, 2020 12:44 MAD.MAX, RAR6 открывает и извлекает из старых версий без проблем. Если нужно создать архив rar4, то используйте ключ -ma4.
PS. У RAR5 другая сигнатура: 52 61 72 21 1A 07 01
Там много всего, что, возможно, для других не принципиально (скажем, мне категорически не нравится структура разбиения на тома, начиная с 5 версии). В общем, хочу, если это возможно, чтобы были и старая, и новая: можно, конечно, держать еще одну копию FAR с другим FMT, но это как-то криво совсем.

Заменил (хотя, скорей получается, добавил), результат тот же - ничего, пусто :(
Last edited by MAD.MAX on Sat 19 Dec, 2020 13:34, edited 2 times in total.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by 2useven10 »

MAD.MAX wrote: Sat 19 Dec, 2020 13:32 хочу, если это возможно, чтобы были и старая и новая:
Допустим это возможно. Как вы собираетесь управлять выбором нужной вам в данный момент версии?
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

Например, вот так управляю разными версиями UHArc:

[UHArc04]
TypeName=UHArc04
ID=55 48 41 04
Extension=uha
List=uharc04 l -y -d2
Errorlevel=1
;Start= "file size date time attr crc-32 "
Start= "-------------------------------------------------------------------------------"
Format0="nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Format1=" zzzzzzzzzz dd-TTT-yyyy hh:mm:ss aaaa cccccccc"
End= "-------------------------------------------------------------------------------"
Extract=uharc04 x -y -d2 {-pw<%%P>} %%AQ @%%LQM
ExtractWithoutPath=uharc04 e -y -d2 {-pw<%%P>} %%AQ @%%LQM
;ExtractWithPath=uharc04 x -y -d2 {-pw<%%P>} %%AQ @%%LQM
Test=uharc04 t {-pw<%%P>} %%A
Add=uharc04 a -d2 -mx -md32768 -md+ -mm+ -vm+ -ed+ {-pw<%%P>} {%%S} %%AQ @%%LQM
AddRecurse=uharc04 a -dx -m3 -md32768 -md+ -mm+ -r+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
Move=uharc04 m -d2 -mx -md32768 -md+ -mm+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
MoveRecurse=uharc04 m -d2 -mx -md32768 -md+ -mm+ -r+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
AllFilesMask="*.*"

[UHArc06]
TypeName=UHArc06
ID=55 48 41 06
Extension=uha
List=uharc06 l -y -d2
Errorlevel=1
;Start= "file size date time attr crc-32 "
Start= "-------------------------------------------------------------------------------"
Format0="nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Format1=" zzzzzzzzzz dd-TTT-yyyy hh:mm:ss aaaa cccccccc"
End= "-------------------------------------------------------------------------------"
Extract=uharc06 x -y -d2 {-pw<%%P>} %%AQ @%%LQM
ExtractWithoutPath=uharc06 e -y -d2 {-pw<%%P>} %%AQ @%%LQM
;ExtractWithPath=uharc06 x -y -d2 {-pw<%%P>} %%AQ @%%LQM
Test=uharc06 t {-pw<%%P>} %%A
Add=uharc06 a -d2 -mx -md32768 -md+ -mm+ -vm+ -ed+ {-pw<%%P>} {%%S} %%AQ @%%LQM
AddRecurse=uharc06 a -d2 -mx -md32768 -md+ -mm+ -r+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
Move=uharc06 m -d2 -mx -md32768 -md+ -mm+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
MoveRecurse=uharc06 m -d2 -mx -md32768 -md+ -mm+ -r+ -vm+ -ed+ {-pw<%%P>} %%AQ @%%LQM
AllFilesMask="*.*"

Понятно, что это другой вариант решения, без FMT. Я бы попробовал с RAR, если бы знал ID старого формата, но не смог найти.
User avatar
zollo
Posts: 55
Joined: Wed 04 Nov, 2009 10:06
Has thanked: 5 times
Been thanked: 5 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by zollo »

MAD.MAX, чтобы это работало нужно удалить rar.fmt

Code: Select all

[RAR]
TypeName=RAR
ID=52 61 72 21 1A 07 00
IDPos=0
Extension=rar
List=rar l --
Start="-----------"
End="-----------"
Format0="/^\s+(?P<attr>[^\|]+)\s+(?P<size>\d+)\s+(?P<mYear>\d+)\-(?P<mMonth>\d+)\-(?P<mDay>\d+)\s+(?P<mHour>\d+):(?P<mMin>\d+)\s+(?P<name>.*?)\s*$/"
Extract=rar {-p%%P} {-ap%%R} -y -c- -kb -- %%A @%%LNMA
ExtractWithoutPath=rar5 e {-p%%P} -y -c- -kb -- %%A @%%LNMA
Test=rar t -y {-p%%P} -- %%A
Delete=rar d -y {-w%%W} -- %%A @%%LNMA
Comment=rar c -y {-w%%W} -- %%A
CommentFiles=rar c -y {-w%%W} -- %%A
SFX=rar c -y -- %%A
Lock=rar k -y -- %%A
Protect=rar rr -y -- %%A
Recover=rar r -y -- %%A
Add=rar a -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
Move=rar m -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AddRecurse=rar a -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
MoveRecurse=rar m -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AllFilesMask="*.*"

[RAR5]
TypeName=RAR5
ID=52 61 72 21 1A 07 01 00
Extension=rar
IDPos=0
List=rar5 l --
Start="-----------"
End="-----------"
Format0="/^\s+(?P<attr>[^\|]+)\s+(?P<size>\d+)\s+(?P<mYear>\d+)\-(?P<mMonth>\d+)\-(?P<mDay>\d+)\s+(?P<mHour>\d+):(?P<mMin>\d+)\s+(?P<name>.*?)\s*$/"
Extract=rar5 {-p%%P} {-ap%%R} -y -c- -kb -- %%A @%%LNMA
ExtractWithoutPath=rar5 e {-p%%P} -y -c- -kb -- %%A @%%LNMA
Test=rar5 t -y {-p%%P} -- %%A
Delete=rar5 d -y {-w%%W} -- %%A @%%LNMA
Comment=rar5 c -y {-w%%W} -- %%A
CommentFiles=rar5 c -y {-w%%W} -- %%A
SFX=rar5 c -y -- %%A
Lock=rar5 k -y -- %%A
Protect=rar5 rr -y -- %%A
Recover=rar5 r -y -- %%A
Add=rar5 a -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
Move=rar5 m -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AddRecurse=rar5 a -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
MoveRecurse=rar5 m -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AllFilesMask="*.*"
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

zollo wrote: Sat 19 Dec, 2020 15:54 чтобы это работало нужно удалить rar.fmt
Вы будете смеяться, но теперь не работает листинг и для RAR2.90 . Что-то не так с форматом команды list - факт! Пробовал разные варианты - без толку все :( Попробовал удалить секцию RAR5, оставив только RAR, пробовал разные варианты List= , ничего не поменялось - пустота.

Плюс, кое-что подправил в RAR2.90, вот такой формат команд в оригинальном rar.fmt для версии 2.90:

Extract=rar x {-p%%P} -y -c- -- {%%S} %%A @%%LNM
ExtractWithoutPath=rar e -av- {-p%%P} -y -c- -- {%%S} %%A @%%LNM
Test=rar t -y {-p%%P} -c- -- {%%S} %%A @%%LNM
Delete=rar d -y {-w%%W} -- {%%S} %%A @%%LNM
Comment=rar c -y {-w%%W} -- {%%S} %%A
CommentFiles=rar cf -y {-w%%W} -- {%%S} %%A @%%LNM
SFX=rar s -y -- {%%S} %%A
Lock=rar k -y -- {%%S} %%A
Protect=rar rr -y {%%S} -- %%A
Recover=rar r -y {%%S} -- %%A
Add=rar a -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LN
Move=rar m -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LN
AddRecurse=rar a -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LN
MoveRecurse=rar m -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LN
User avatar
zollo
Posts: 55
Joined: Wed 04 Nov, 2009 10:06
Has thanked: 5 times
Been thanked: 5 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by zollo »

Там сигнатура другая. Удаляйте с конца по 2 знака в ID=52 61 72 21 1A 07 00
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

zollo wrote: Sat 19 Dec, 2020 16:32 Там сигнатура другая. Удаляйте с конца по 2 знака в ID=52 61 72 21 1A 07 00
Прошу прощения: не понял, что мне удалить нужно?

Судя по всему MA определяет заголовок верно, т.к. в FAR проваливается во внутрь. А вот с RAR5 файлами запускается WInRAR.
User avatar
zollo
Posts: 55
Joined: Wed 04 Nov, 2009 10:06
Has thanked: 5 times
Been thanked: 5 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by zollo »

MAD.MAX, скачал 4 версию, а там совсем другой листинг. Вот для 4 версии:

Code: Select all

[RAR]
TypeName=RAR
ID=52 61 72 21 1A 07 00
IDPos=0
Extension=rar
List=rar v --
Start="/^-----/"
End="/^------/"
Format0="/^\s(?P<name>.*?)\s*$/"
Format1="           zzzzzzzzzzzz pppppppp      dd tt yy hh mm  aaaaaaa   rrrrrrrr"
Extract=rar {-p%%P} {-ap%%R} -y -c- -kb -- %%A @%%LNMA
ExtractWithoutPath=rar e {-p%%P} -y -c- -kb -- %%A @%%LNMA
Test=rar t -y {-p%%P} -- %%A
Delete=rar d -y {-w%%W} -- %%A @%%LNMA
Comment=rar c -y {-w%%W} -- %%A
CommentFiles=rar c -y {-w%%W} -- %%A
SFX=rar c -y -- %%A
Lock=rar k -y -- %%A
Protect=rar rr -y -- %%A
Recover=rar r -y -- %%A
Add=rar a -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
Move=rar m -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AddRecurse=rar a -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
MoveRecurse=rar m -r0 -y {-p%%P} {-ap%%R} {-w%%W} {%%S} -- %%A @%%LNA
AllFilesMask="*.*"
Last edited by zollo on Sat 19 Dec, 2020 18:57, edited 1 time in total.
User avatar
MAD.MAX
Posts: 26
Joined: Thu 30 Mar, 2006 11:19
Has thanked: 2 times

MultiArc: Archive support plugin — Модуль работы с архивами

Post by MAD.MAX »

zollo wrote: Sat 19 Dec, 2020 17:59 скачал 4 версию, а там совсем другой листинг. Вот для 4 версии:
Да, теперь листинг RAR2.90 отдается, а для 5.0 по прежнему нет. Но в 2.90 появилась проблема: например, при создании SFX-архива или его трансформации из RAR он не читается (даже зайти по Ctrl+PgDn для просмотра не получается). А вот если работать с использованием FMT, то можно не только зайти, но и изменять (добавлять/удалять), причем, много-томные архивы. Кстати, при использовании FMT для 5 версии вместо 2.9 тоже весь функционал сохраняется, причем, работает даже, если rar.exe будет версии 4.20: все манипуляции, которым я пользуюсь (включая модификация содержимого вложенных архивов древовидной структуры каталогов в многотомных архивах), работают четко, и, как это ни странно, при этом даже содержимое RAR5-архива (список) удается прочесть, но не более того (Unsupported archive format).

Чувствую, что этот метод модификацией ini довольно заковырист и проблемен, и не факт, что сохранится полностью весь функционал, который есть с использованием FMT.

Пере-собрать FMT5 не можете (я не программист) для пробы?
Post Reply

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