Зовнішні архіватори


Зміст
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 Файли з пустими іменами не будуть додаватися в список

UnixPath Якщо шляхи у виводі архіватора у форматі Unix встановіть цей прапорець.

Debug Якщо цей прапорець активний -- весь вивід утиліти архівування буде записано в лог-файл, розташований в тій самій директорії, що і multiarc.wcx з іменем "multiarc.%TYPENAME%.log" де %TYPENAME% це TypeName відповідного опису архіватора. Якщо деякий список файлів використовується в командах, то ці файли також не будуть видалені після виконання команди. Шукайте їх в паці %TEMP%/$mltwcx. Всановлюйте цей прапорець, тільки якщо ви виконуєте запис всієї активності. Це необхідно під час написання нового addon-а. Не використовуйте його якщо ви не потребуєте його. Цей лог файл може "зїсти" ваш вільний дисковий простір дуже швидко. =-) Я вас попередив!.

SkipSfxHeader за замовчуванням false. Визначає чи потрібно пропускати SFX-частину архіва для пошуку ID архіва. Наприклад:

7z SFX-архів, сам архів знаходиться після SFX частини, і пошук ID треба починати після пропуску цієї частини, SkipSfxHeader повинно бути TRUE. 7z відрізняється від інших архіваторів тим, що від версії до версії міняється розмір SFX розпаковщика, крім того є другі SFX частини, не від авторів 7z. Размір цих частин різноманітний, хоча ID архіва знаходиться на фіксованому місці. До цього прапорця, треба було вказувати список IDPos, але якщо необхідної позиції не вдавалось знайти, MultiArc не міг обробити такий архів.

Інсталяція InnoSetup. ID знаходиться в SFX частині архіва, пропуск робити не потрібно. Шукати треба з початку файла, SkipSfxHeader повинен бути False.

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

Файл 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, ExtractWithPath, Test, Delete, Add з %Р на %PA чи %PQA.