MultiArc

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view

Odeon
Сообщения: 2
Зарегистрирован: Чт мар 11, 2021 18:38

Сообщение Odeon »

Здравствуйте, можно ли настроить Multiark для использования с dictzip (github.com/dictzip/dictzip-win32) - это архиватор наподобие gzip, для сжатия словарей.
Распаковку ТС делает сам по себе, нужно только запаковку настроить
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

Odeon
Можно, но нужен сам упакофщик в папке плагинов и естественно сам плагин в multiarc.ini.
Odeon
Сообщения: 2
Зарегистрирован: Чт мар 11, 2021 18:38

Сообщение Odeon »

imig73
Сам ехе-шник архивера здесь (тут более точная ссылка, чем в моём пред. посте): github.com/Tvangeste/dictzip-win32/releases/tag/1.12.1-win32-1.0.
Там также есть исходники.

Запускаю dictzip.exe с /? - параметры не показывает, непонятно, что нужно в ini-файле аддона прописывать.

Как выше написал, надо только запаковывать научить, в архив заходить и извлекать ТС сам умеет (архивы типа gz, но чуть другие, расширение архива .dz, сделан чтобы текстовые файлы словарей в формате .dsl сжимать)
Baltazar
Сообщения: 67
Зарегистрирован: Чт окт 01, 2015 17:02

Сообщение Baltazar »

Доброго времени суток.

Как-то я в данном треде уже интересновался по поводу совместного использования архиватора TAR и MultiaRC'a но т.к. конечное решение было так себе я тогда махнул на это дело рукой. Сейчас, взявшись за разбор работы мультиарка вернулся заодно и к этому вопросу. Используя небольшой wrapper на autoit удалось вполне успешно прикрутить cygwin'овский TAR и зависимые тулзы (gz,ungzip,bz2,xz) к мультиарку заменяя виндовые пути до файлов на cygdriv'овые (был ещё bsdtar, который я нашёл чуть позже, но было уже влом им заниматься т.к. формат выхлопа надо подгонять ввиду отличий). С листингом архивов проблем не было. А вот с распаковкой/упаковкой они возникли. Основная проблема оказалась в том, что cygwin'овский tar не принимает пути до файлов в архиве с прямыми "\" слешами, которые ему передаёт мультиарк. Если слеши обратные "/", то всё (в консоли) работает корректно. Поэтому ввиду данного обстоятельства первый вопрос - возможно ли как-то реверсировать слеши в передаваемых путях до файлов ?

Следующая проблема, если удастся решить вопрос со слешами, встаёт в исключение базовой папки из распаковки TAR'ом т.е. файл анпачится с полной веткой директорий в %TEMP%\$mltwcx, что в свою очередь вызовет обломинго при распаковке. По крайней мере именно так было с WinRar'ом который я использовал для анпака (в виде костыля), пока не добавил ключ "-ep1". Как подобное провернуть с TAR'ом я ХЗ. Он такого вроде не умеет. Посему второй вопрос - как заставить мультиарк идти за файлом в конец ветки директорий, в которую он (файл) был распакован ? Или это невозможно ?

Это основные моменты, которые хотелось бы уточнить. Помимо этого есть ещё ряд мелких вопросов касательно конфигурации/парсинга/команд/etc :

3) А что значит модификатор "U" (Command definition format) ? В оф.справке его нет. "Use Unicode encoding" ?

4) Что за опция "FormMode" ? Переодически попадалось в аддонах, но в справке про неё ни слова.

5) Существует ли какая-нибудь утилита для помощи в составлении правил парсинга которые обрабатывают выхлоп листинга архиваторов ? Или такого нет и правила надо ваять исключительно вручную (на глаз) перепроверяя корректность через сам TC ?

6) Почему Multiarc пихает по одному файлу в файллист что при использовании %LFQA, что при использовании %LQA ? Из-за этого, что так, что так процесс (в данном случае WinRar'a с ключём -ibck) запускается для распаковки каждого файла. В таком случае какой смысл в файл-листах ? По идее в случае использования "%LQA" в файл-лист должны дропаться пути до всех файлов и архиватор должен по ним отработать, но этого почему-то не происходит.
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Baltazar писал(а):5) Существует ли какая-нибудь утилита для помощи в составлении правил парсинга которые обрабатывают выхлоп листинга архиваторов ? Или такого нет и правила надо ваять исключительно вручную (на глаз) перепроверяя корректность через сам TC ?
О_о Запускаете "rar.exe v архив.rar" и смотрите, куда и как архиватор выводит имена, какие тут могут быть утилиты?
Baltazar
Сообщения: 67
Зарегистрирован: Чт окт 01, 2015 17:02

Сообщение Baltazar »

Skif_off писал(а):О_о Запускаете "rar.exe v архив.rar" и смотрите, куда и как архиватор выводит имена, какие тут могут быть утилиты?
Я имел ввиду облегчение задачи составление выражения Format'a для парсинга выхлопа.

Не всегда очевидно, как та или иная комбинация сработает и ваять выражения на глаз, особенно новичку в этом вопросе довольно гемморойно. Это как использовать регекспы без возможности предварительного тестирования выражения, не зная как оно сработает в том или ином случае. Потому я интересовался, есть ли инструмент для предварительного прогона выражения "Format'a", где была бы возможность загнать выхлоп в поле для примера, после чего мере набора выражения подсвечивалась та или иная область выхлопа (по типу поиска по регекспам в NPP). Почему-то мне кажется, что я подобное где-то видел, но не могу вспомнить где :(
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Baltazar
Честно говоря, не улавливаю, в чём сложность :) Единственное что: по-хорошему, следует использовать редактор с моноширным шрифтом.
Получаете выхлоп:
Показать

Код: Выделить всё

7-Zip 21.07 (x86) : Copyright (c) 1999-2021 Igor Pavlov : 2021-12-26

Scanning the drive for archives:
1 file, 249136 bytes (244 KiB)

Listing archive: wcx_MultiArc_1.4.3.162.7z

--
Path = wcx_MultiArc_1.4.3.162.7z
Type = 7z
Physical Size = 249136
Headers Size = 424
Method = LZMA2:768k
Solid = +
Blocks = 1

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2015-09-20 14:54:45 D....            0            0  Lang
2007-07-29 00:41:34 ....A        28672       248712  conspawn.pipe
2013-08-04 21:35:54 ....A        51712               conspawn.pipe64
2017-10-13 21:31:16 ....A         4390               Lang\English.lng
2017-10-13 21:31:08 ....A         4516               Lang\Russian.lng
2006-05-12 17:01:38 ....A         1747               LICENSE
2020-05-15 15:18:24 ....A        33544               MultiArc.chm
2007-07-31 00:02:58 ....A        42678               MultiArc.hlp
2020-05-15 15:38:36 ....A       173568               MultiArc.wcx
2020-05-15 15:38:32 ....A       215040               MultiArc.wcx64
2017-10-13 17:09:42 ....A          318               pluginst.inf
2020-05-15 15:40:01 ....A         5212               Readme.txt
------------------- ----- ------------ ------------  ------------------------
2020-05-15 15:40:01             561397       248712  11 files, 1 folders
Как видно, список файлов располагается по одному на строку, строго между строками, начинающимися с "-------------------", - это надо в Start и End.
Открываете MultiArc.chm, переходите на страницу "Format parsing", тут таблица "Format specifiers" и поехали: копируем строку в текстовый редактор

Код: Выделить всё

2007-07-29 00:41:34 ....A        28672       248712  conspawn.pipe
т.е. видим

Код: Выделить всё

год месяц день час минуты секунды атрибуты размер размер-сжатого имя
Теперь по таблице меняем, с учётом количества символов:

Код: Выделить всё

yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp  nnnnnnnnnnnnnnnn
Перед именем два пробела и имена могут быть разной длины, но, похоже, на имя приходятся все символы до конца строки: добавлять целое ведро "n" (256?) - это странно, потому смотрим там же в MultiArc.chm таблицу "Special specifiers" ниже и поправляем

Код: Выделить всё

yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp  n++
Вроде не сильно сложно... А утилиты/скрипты, разбирающие вывод программ, как правило "знают", вывод какой программы и какой у неё шаблон.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Кто-нибудь использовал с MPZ (программа для упаковки mp3)?К примеру, конфигурация:

[mp3 pack]
Extension=mpz
Description=Упаковка mp3 файлов
Archiver=c:\Program Files\Total Commander\Plugins\exe\mpz\mpz.exe
Debug=0
List=%P d %AQ %FQ
Format0=""zzzzzzzzzz nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
IgnoreErrors=1
Extract=%P %AQA d %FAQ
Add=%P c %FQ %AQ
Move=
Test=
Delete=
SFX=
Lock=
Protect=
Recover=
AllFilesMask="*.*"

Упаковка норм, а вот при извлечении никак не удаётся получить такое же название, как прежде. Все что-то вроде %s. Есть ли возможность извлекать mp3 с оригинальным именем?

И ещё при упаковке отображается только "плагин - mpz:". Есть способ выводить название файла, который архивируется в настоящий момент. Изучал конфигурацию, но ничего похожего не нашёл.
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Dimsok
mpz.exe не поделитесь? Поисковики кучу мусора выдают...
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Аватара пользователя
Orion9
Сообщения: 1313
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Делая у себя ревизию установленных плагинов, решил таки погрузиться в работу MultiArc, захотелось наконец разобраться, как работает этот плагин. MPZ очень подошел для этих целей.

Не являюсь большим специалистом в написании батников и прочих скриптов, т.ч. не судите строго :)

Код: Выделить всё

[MPZ]
Description="MP3 Compressor" 
Archiver=%COMMANDER_PATH%\Plugins\arc\mpz\mpz.bat
Extension=mpz
ID=05 04 05 01
IDPos=0
Start="---------------" 
Format0="z+ n++"
List="%PQA l %AQA"
Extract="%PQA e %AQA %FQA"
Add="%PQA a %FQA %AQA"
IgnoreErrors=0 
Debug=0 
UnixPath=0 
SkipDirsInFileList=1 
SkipEmptyNames=1 
BatchUnpack=0 
SearchForUglyDirs=0 
AskMode=2
mpz.bat

Код: Выделить всё

SetLocal EnableExtensions
CHCP 866
cls

if %~z2 EQU 0 goto End
if /i "%1" =="l" goto List
if /i "%1" =="e" goto Extract
if /i "%1" =="a" goto Add

exit

:List

@echo off
@echo ---------------
@echo %~z2 %~n2.mp3

if %errorlevel% == 0 goto End
exit

:Add

"%~dp0mpz.exe" c "%~dpn2.mp3" "%~dpn3.mpz"
if not %errorlevel% == 0 exit
@echo Compression:
@echo "%~dp0mpz.exe" c "%~dpn2.mp3" "%~dpn3.mpz"
goto End

:Extract

"%~dp0mpz.exe" d %2 "%~n3.mp3"
@echo Decompression:
@echo "%~dp0mpz.exe" d %2 "%~dpn3.mp3"

:End
Аватара пользователя
jentoso
Сообщения: 446
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

А как должен отрабатывать MultiArc, когда в конфиге прописаны варианты для innosetup:

Код: Выделить всё

[InnoSetup(gog)]

[InnoSetup]
 
[InnoSetup (unpack_one)]
Если первый не срабатывает, должен переходить на следующий?

Сталкивался с таким, что первый вариант не сработал и на этом обработка завершилась. Меняю в кофиге варианты

Код: Выделить всё

[InnoSetup]

[InnoSetup(gog)]
 
[InnoSetup (unpack_one)]
и распакова происходит.
TC 11.58 combo, Windows 11 x64
Аватара пользователя
Orion9
Сообщения: 1313
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

MVV лучше/точнее ответит, но MultiArc должен прыгать на следующую секцию. Я даже сначала сделал кнопку, когда эксперементировал с InnoSetup, которая меняла сигнатуру в Multiarc.ini, типа:

Код: Выделить всё

"%NIRSOFT%"\nircmd inisetval "%COMMANDER_PATH%\Plugins\wcx\MultiArc\Multiarc.ini" "InnoSetup" "ID" "49 6E 6E 6F"

"%NIRSOFT%"\nircmd inisetval "%COMMANDER_PATH%\Plugins\wcx\MultiArc\Multiarc.ini" "InnoSetup" "ID" "49 6E 6E 6F 00 00 FF FF"
только для того, чтобы он прыгал на следующую секцию [InnoExtract], и он прыгал, и все работало.
И все же я отказался от этого варианта в пользу
viewpost.php?p=136806
так лучше и удобнее, хотя и висит еще одна копия плагина :)
Аватара пользователя
Orion9
Сообщения: 1313
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Как писал выше, делаю сейчас пересмотр и обновление всех плагинов, и решил, что вход/распаковка upx в MultiArc мне все-таки нужна.

Проверял на последней 4.2.2
https://github.com/upx/upx/releases

Код: Выделить всё

upx=79,%COMMANDER_PATH%\Plugins\wcx\MultiArc\multiarc.wcx

Код: Выделить всё

[UPX] 
Archiver=%COMMANDER_PATH%\Plugins\arc\upx\upx.bat
ID=00 55 50 58 21
IDPos=500,991,<SeekID>
Extension=upx
Description="Ultimate Packer for eXecutables" 
Start="--------------------" 
Format0=" +z+"
Format1=n++
List=%PQA -l %AQA %E2 
Extract=%PQA -e %AQA %FQA
Add=%PQA -a %FQA {%S} %AQA
Test=%PQA -t %AQA
IgnoreErrors=0 
Debug=0
UnixPath=0 
SkipDirsInFileList=1 
SkipEmptyNames=1 
BatchUnpack=0 
SearchForUglyDirs=0 
AskMode=2
AskHistory0=-7
AskHistory1=--best
AskHistory2=--lzma
AskHistory3=-8
AskHistory4=-9
upx.bat

Код: Выделить всё

CHCP 866
@echo off
cls

if /i "%1" =="-l" goto List
if /i "%1" =="-e" goto Extract
if /i "%1" =="-a" goto Add
if /i "%1" =="-t" goto Test

exit

:List

"%~dp0upx.exe" -l %2
@echo %~nx2
goto End

:Test

"%~dp0upx.exe" -t %2
goto End

:Add

if exist "%~dp4%~n2--UPX!%~x2" goto Error
"%~dp0upx.exe" -k %3 --compress-icons=0 %2 -o "%~dp4%~n2--UPX!%~x2"
exit

:Extract

"%~dp0upx.exe" -d -k %2 -o %3
exit

:Error

echo MsgBox "Файл %~dp4%~n2--UPX!%~x2 уже существует и не может быть перезаписан!", vbOKOnly + vbCritical, "Ошибка" >%TEMP%\1.vbs
%TEMP%\1.vbs

:End
P.S. Мне нужен только просмотр и распаковка, т.ч. будьте осторожны при упаковке: сверх-досконально я все не проверял. По возможности можете сами подправить батник.
Аватара пользователя
Mellomann
Сообщения: 716
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Кто-то пробовал прикручивать ZSTD к MultiArc?
Ответить