Внешние архиваторы


Содержание
1.1. Описание Multiarc.ini
1.2. Описание строк Format
1.3. Формат определения команд

Double Commander использует механизм работы с внешними архиваторами аналогичный плагину MultiArc для Total Commander. Большинство из приведённых далее объяснений и примеров позаимствовано из справочного файла к этому плагину.


Описание Multiarc.ini

Все настройки внешних архиваторов хранятся в файле multiarc.ini. Этот файл это стандартный INI-файл. Он содержит несколько разделов (секций). Эти секции содержат параметры - пары строк разделенные знаком равно (=). Эти файлы являются текстовыми и могут быть отредактированы любым текстовым редактором. Каждый архиватор поддерживаемый DC должен быть описан в отдельной секции в multiarc.ini. Смотрите ниже детальную информацию об их структуре. Также есть специальная секция с именем "MultiArc". Эта секция содержит настройки которые применяются ко всем архиваторам, т.е. общие настройки.

Структура типичной секции описания архиватора:

[Имя_типа]

Параметр=Значение параметра

Шаблон= Строка представляющая шаблон

Команда= строка команды

Флаг = 0 или 1 в зависимости от состояния флага.

Имя_типа краткое имя типа архиватора. Обязательно, и должно быть уникальным. Должно быть набрано символами английского алфавита.

Пример:

[ARJ]

Параметры

Archiver Путь к архиватору. Путь может содержать переменные окружения, например %WINDIR% или %COMMANDER_PATH%.

ID (необязательный) -- сигнатура (ID) архиватора, используется для определения является ли данный файл архивом этого типа. Записывается группами по 2 шестнадцатеричных символа, разделенные пробелами. Если архиватор может обрабатывать несколько версий архивов с разными сигнатурами, они разделяются запятыми.

IDPos (необязательный) -- позиция ID в архиве. Если позиция не указана, ID будет искаться начиная с начала архива. Вы можете определить позицию с конца файла, с помощью знака "-" (минус). Если для архивов с этим ID может быть несколько мест расположения сигнатуры, они разделяются запятыми (обычно это разные версии архивов, поддерживаемые архиватором). Также обратите внимание на описание флага SkipSfxHeader. Специальное значение <SeekID> определяет нужно ли искать ID, если они не найдены по другим позициям указанным в параметре. Если IDPos отсутствует, тогда ID будет искаться в диаппазоне: меньшее из значений - размер файла, IDSeekRange. Значения можно вводить в десятичном  или шестнадцатеричном виде. Например позицию находящуюся в 12345 байт от начала файла можно описать как

IDPos = 12345

(в десятичном исчислении) или (в шестнадцатеричном исчислении)

IDPos = 0х3039

Отрицательные значения в шестнадцатеричном виде описываются как 0xFFFFFFFF (-1 в десятичном)

IDSeekRange (необязательный) число байт, в котором MultiArc будет пытаться найти ID.Если параметр отсутствует, будет использовано меньшее из значений Размер_файла или 1Мбайт. Поиск всегда происходит от начала файла, SkipSfxHeader игнорируется. Это может замедлить открытие архивов или поиск в архиве. Если отсутствует IDPOS, тогда используется поиск ID в диаппазонеот начала файла до меньшего из значений -- (размер файла, IDSeekRange).

Extension расширения, которые используются архивами (без точки).

Description Описание архиватора. Строка содержащая версию, автора и т.п.

Пример:

ID = 00 FF, CC DD, 55 EF 32 12,

IDPos = 0, 0xd, -6, <SeekID>

IDSeekRange=100000

Extension = hhh, hpj, tzu

Description="PivkARC v7.1365 (c) by Kon' Petrovich"

Архивы в этом примере будут проверяться в следующем порядке.

Установка позиции в 0 и проверка каждого ID определенного в параметре. Затем переход в позицию 13 и проверка всех ID, переход на позицию 6 считая с конца файла, и в конце, искать ID в диаппазоне от 0 до 100000 если файл больше 100000 или 0-размер файла. Если в какой-либо из этих проверок файл будет содержать один из ID файл считается поддерживаемым этим архиватором.

Шаблоны

Start(необязательный) любая часть строки в выводе выдаваемом архиватором в процессе обработки.

End (необязательный) любая часть строки в выводе выдаваемом архиватором в процессе обработки.

Примечание для Start и End шаблонов: Если текст начинается с '^', он будет сравниваться начиная с начала строки, символ ^ в сравнении не участвует. В остальных случаях текст будет искаться в любом месте строки.

Format0 ... Format<n> - формат вывода файлов. Если описание файла в выводе архиватора расположено на нескольких строках, используйте соответствующее число параметров Format. Вы можете определить до 50 строк Format.

Описание строк Format   

Пример:

Start="^-------"

End="^Total files listed: "

Format1="zzzzzzzzzz aaaaa                        yyyy tt dd hh mm ss"

Format2=" "

Команды

List - получение списка содержимого архива.

Extract - Извлечение файла(-ов) из архива с полным путем.

ExtractWithoutPath - Извлечение файла(-ов) из архива без учета полного пути.

Test - проверка архива.

Delete - удалить файл из архива.

Add - добавить файл в архив.

AddSelfExtract - создать самораспаковывающийся архив.

InputString - вставка некоторой строки во входной поток архиватора. Это используется для эмулирования нажатий некоторых клавиш при старте архиватора. Используется для некоторых шароварных утилит требующих нажатия Y перед работой. =-)

Обратите внимание: Все команды за исключением InputString используют формат определения команд  

Флаги

IgnoreErrors если активен, код завершения архиватора игнорируется. Используйте с осторожностью.

SkipEmpty Файлы с пустыми именами не будут добавляться в список

FormMode режим разбора строки FormatN, определяется как сумма следующих параметров:

  1 - использовать Unix разделитель пути (/)

  2 - использовать Windows разделитель пути (\)

  4 - использовать Unix атрибуты файлов

  8 - использовать Windows атрибуты файлов

Debug если этот флаг активен -- весь вывод утилиты архивирования будет записан в лог-файл, расположенный в той-же директории что и multiarc.wcx с именем "multiarc.%TYPENAME%.log" где %TYPENAME% это TypeName соответствующего описания архиватора. Если некоторый список файлов используется в командах, эти файлы также не будут удалены после выполнения команды. Ищите их в папке %TEMP%/$mltwcx. Устанавливайте этот флаг, только если вы выполняете запись всей активности. Это нужно во время написания нового addon-а. Не используйте его если вы не нуждаетесь в нем. Этот лог файл может "съесть" ваше свободное дисковое пространство очень быстро. =-) Вы предупреждены!.

; признак комментария, эта строка будет проигнорирована.

Файл addon-а является секцией MultiArc.ini и предназначен для передачи другим пользователям MultiArc. 





Описание строк Format

Для разбора файла вывода MultiArc использует шаблон FormatN. Если список файлов использует одни и те же строки для вывода информации о каждом файле в архиве используйте соответствующее число шаблонов Format. Шаблон Format это строковая маска для извлечения информации из одной строки списка файлов.  Используйте следующие символы для определения шаблона: 

;  n - имя файла

;  z - размер не сжатого файла

;  c - описание файла

;  p - размер сжатого файла

;  d - день

;  t - месяц

;  TTT - трехбуквенное имя месяца (Jan, Feb, Mar, ...)

;  y - год

;  h - часы

;  H - буква - модификатор часов (a - время до полудня (a.m. time),

                                  p - время после полудня (p.m. time))

;  m - минуты

;  s - секунды

;  a - атрибуты

;  e - расширение файла

;  ? - пропустить один символ

;  * - пропускать до первого пробела или конца строки

Пример:

Часть вывода лога JAR :

346) install\f_0286

      3656 A.... Win-32  Solid    1-1   2002-07-11 13:36:26 2002-12-09 20:41:20

                           26                               2002-12-09 00:00:00

347) install\f_0287

     11323 A.... Win-32  Solid    1-1   2002-07-11 13:36:26 2002-12-09 20:41:20

                           26                               2002-12-09 00:00:00

и соответствующие форматы шаблонов:

Format0="* nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"

Format1="zzzzzzzzzz aaaaa                        yyyy tt dd hh mm ss"

Format2=" "

 





Формат определения команд

Команда это строка которая содержит переменные. Эти переменные имеют знак "%" перед ними и могут быть заменены во время вызова команды.

Список переменных команд:


  %P - Длинное имя архиватора (как оно в параметре "Archiver")

  %p - короткое имя архиватора (как оно в параметре "Archiver")

  %A - длинное имя архивного файла

  %a - короткое имя архивного файла

  %L - имя Filelist (списка файлов). Filelist -это файл содержащий имена файлов

       которые должны быть обработаны внешним архиватором. Имена файлов длинные.

  %l - Filelist с короткими именами файлов.

  %F - имя одного файла для обработки. Архиватор будет вызван несколько раз, до тех

       пор пока все файлы не будут обработаны.

       Эта переменная должна быть использована только если архиватор не поддерживает

       список файлов в строке вызова.

  %V - Размер тома (для многотомного архива).

  %W - Пароль.

  %E<errorlevel> - максимальный допустимый код завершения (errorlevel).

       Например, %E2 означает что принимаются коды завершения 0, 1 и 2.

       Эта переменная может быть указана в любом месте команды. Если она

       отсутствует, только код завершения 0 распознается как успешный.

  %O - По умолчанию, MultiArc преобразует вывод архиватора из OEM кодировки

       (DOS) в ANSI (Windows). Применяйте его для пропуска преобразования.


  %R - целевая поддиректория В архиве


  {} - если некоторые переменные заключены в фигурные скобки она будет

       добавлена только если  эта переменная содержит что-либо не пустое. Смотрите

       MsCAB addon для примера использования.

 

  %S - Зависит от режима, устанавливается в диалоге Настройка MultiArc, MultiArc будет

       запрашивать пользователя дополнительные параметры командной строки, которые

       должны быть размещены на месте %S.



  модификаторы переменных F, Q, q, W, P, A, U могут быть использованы для изменения формата имен

  файлов:


  F - Включать в список только файлы (применимо к переменным %L и %l);

  Q - Заключать в кавычки имена с пробелами;

  q - Заключать в кавычки все имена;

  W - Использовать только имена, без пути;

  P - Использовать только путь, без имени;

  A - Использовать ANSI кодировку.

  U - Использовать UTF-8 кодировку.


  Эти модификаторы могут быть указаны сразу после переменной, без пробелов.

Реальные примеры команд смотрите в addon-ах.


Примечание:

Если у вас архиватор находится в пути с русскими буквами (по логике с любым путем, содержащим символы не английского алфавита и цифры) и вы получаете сообщение наподобии такого:

"Executing command 'C:\Documents and Settings\Ђ¤¬Ё­Ёбва в(r)а\ђ Ў(r)зЁ(c) бв(r)"\7za.exe -r0 l D:\Это тест русских имен TC\7zSfx.7z' returned errorlevel -1. Possibly an error occurred. Archive listing wasn't retrieved."

либо такого:

"Executed command 'C:\Documents and Settings\Ђ¤¬Ё­Ёбва в(r)а\ђ Ў(r)зЁ(c) бв(r)"\7za.exe -r0 l D:\Это тест русских имен TC\7zSfx.7z' returned errorlevel -1, which is higher than configured as normal for this command. Probably error occurred. Check your configuration, please..."

Замените в Multiarc.ini в секции соответствующего архиватора параметры Extract, ExtractWithoutPath, Test, Delete, Add с %Р на %PA или %PQA.