Ru-Board.club
← Вернуться в раздел «Программы»

» Multiarc плагины и аддоны для FAR и Total Commander

Автор: TCPIP
Дата сообщения: 10.05.2005 22:54
Эта тема посвящена вопросам написания архиваторных плагинов для поддержки специфических архиваторов, отсутствующих в стандартных поставках multiarc-плагина для файл-менеджеров Total Commander, Double Commander и FAR.
Предполагается обсуждение возможности написания собственной универсальной мультиархиваторной оболочки для Win32/64 с поддержкой полноценной интеграции в Проводник и отвечающей современным стандартам архиваторных оболочек.

Multiarc - Homepage, Зеркало, более доступный интерфейс
Неофициальная 64-битная версия без изменений функционала оригинала
Последняя неофициальная версия, в т.ч. 64-битная (предыдущая версия)
Для новичков:
Файл конфигурации для Multiarc от "TychoBarfys"
Некоторые архиваторы, поддерживаемые Multiarc [more=подробнее]
7-zip - Отличный бесплатный архиватор, позволяющий работать не только с родным форматом архивов, но и с многими другими, в том числе NSIS-архивами
FreeArc Archiver
INSTALLSHIELD 3 ARCHIVES - Небольшая сommand-line утилита для работы с файлами-архивами из инсталляций, созданных популярной программой InstallShield до версии 3.x (имеют обычно расширение .Z, .1 и .LIB)
i5comp v.2.1 - утилита для работы с файлами-архивами из инсталляций, созданных популярной программой InstallShield 5+
i6comp v0.20 - Консольная утилита аналогичная i5comp и созданная на ее основе. Предназначена для работы с файлами-архивами из инсталляций, созданных популярной программой InstallShield 6+.
i12comp - Консольная утилита аналогичная i5comp и созданная на ее основе. Предназначена для работы с файлами-архивами из инсталляций, созданных популярной программой InstallShield 12.
JAR - утилита для работы с архивами JAR
Inno Setup Unpacker - Распаковщик для файлов, сoзданный популярной программой для создания файлов инсталяций InnoSetup. Исходные коды на Паскале доступны с sourceforge.
MsCab addon - утилита для полноценной работы с архивами MS CAB
UPX - Популярный и очень неплохой упаковщик исполняемых файлов.[/more]
[more=найденные решения аддонов]
7-zip
arc (FreeArc) - эддоны для Multiarc и Far Manager находятся в папке инсталяции FreeArc\Addons\...
Inno Setup Unpacker - Расширенную версию (с поддержкой русского языка) v0.23 можно забрать отсюда, caм эддон живет тут
wim
[/more]
как увидеть какую командную строку передает multiarc архиватору: подробнее

Примечание.
Multiarc в Double Commander реализован не в виде отдельного плагина, а внедрен в код самой программы. Однако, хотя структура multiarc.ini несколько отличается - параметры несколько другие, некоторых команд, присутствующих в total-овском, нет, зато есть свои, большая часть команд и описаний форматов архивов идентичны. DC сам преобразовывает total-овский multiarc.ini в свой формат при сохранении. Настройки аддонов доступны из интерфейса самого DC. Описание структуры multiarc.ini имеется в оффлайн документации. Также возможно и применение отдельного Multiarc-а от Total-а.
Автор: arsvrn
Дата сообщения: 11.05.2005 22:24
Насколько мне известно, идея создания некоей универсальной оболочки для обеспечения использования произвольных внешних архиваторов принадлежит Евгению Рошалю и впервые реализована в плагине Miltiarc для файл-менеджера Far. Значительно позднее, после появления в WindowsCommander'e возможности подключения внешних плагинов, Siarzhuk Zharski написал WCX-Multiarc плагин для WC, идеологически очень сходный с Far'овским и использующий подобный язык описания работы с архиваторами.
Основным достоинством Multiarc'овского подхода является возможность единообразной работы с любым внешним архиватором, поддерживающим работу с командной строкой и имеющим минимально необходимый набор команд.
Это обеспечивается путем описания в ini-файле на некоем универсальном языке правил управления архиватором для выполнения стандартных операций получения листинга архива, архивации и т.д.
Используя эти правила и язык пользователь может подключить к файл-менеджеру новый архиватор или настроить под свои нужды имеющийся в наборе.

В темах форума об архиваторах, Far'e, Total Commander'e уже не раз возникали вопросы о коррекции или о написании новых аддонов.

Если не будет возражений, то в этой теме я хотел бы поделиться своим опытом работы с ini-файлами Multiarc'ов и послушать мнения других .
Автор: arsvrn
Дата сообщения: 15.05.2005 22:37
Для полноценной работы с архивами Multiarc должен уметь выполнять три основных типа операций.
1. При выполнении архивирования - передача архиватору через командную строку команды на архивацию, списка управляющих режимами ключей и списка архивируемых каталогов и файлов.
2. При выполнении извлечения из архива - передача архиватору через командную строку команды на извлечение, списка управляющих режимами ключей и списка извлекаемых каталогов и файлов.
3. При входе в архив необходимо выполнить несколько операций. Сначала определить формат архива (и, соответственно, каким архиватором с ним работать). Потом передать выбранному архиватору через командную строку команду на вывод листинга содержимого архива со списком управляющих ключей. И, наконец, разобраться с выведенным листингом, чтобы получить список содержащихся в архиве каталогов и файлов.
Все это описывается в ини-файле с помощью зарезервированных слов (директив) и модификаторов. Их описание приводится в ини-файлах Multiarc'a для ТС и Far.
[more]
Применение кратко можно описать следующим образом (в скобках рядом с описываемым параметром указано для TC или Far он применим, если ничего не указано - значит применим и для Far и для ТС):
Для каждого типа архива создается свой раздел, который начинается с заголовка имени формата архива (порядок следования директив внутри раздела значения не имеет):
[UHArc]
Для того, чтобы Multiarc мог обращаться к архиватору, необходимо указать путь и имя архиватора. Для ТС имя архиватора может быть задано директивой:
Archiver = путь\имя_архиватора.расширение, например c:\bin\uharc.exe
Для Far путь и имя архиватора необходимо прописывать в каждой директиве, где производится вызов к архиватора.
Далее идут описатели формата архива:
TypeName = UHArc (Far) - (опционально) имя формата архива, при наличии переопределяет заголовок.
ID = 55 48 41 06 - (опц) идентификатор формата. Это набор двухразрядных шестнадцатиричных чисел, уникальных для данного формата. Обычно архиватор записывает в файл свой идентификатор, чтобы потом его опознать. В примере - идентификатор для UHArc 0.6. К сожалению, в документации на архиваторы ID встречается крайне редко, поэтому его приходится искать самостоятельно. Можно, например, создать несколько архивов и сравнением найти неизменную часть. Однако, так как чаще всего в не SFX-архивах ID стоит в начале файла, его не так уж трудно определить.
IDPos = 0 - (опц) позиция кода ID в файле. В документации тоже не встречается, но чаще всего - в начале архива (=0). Если в инишнике не прописана - Multiarc ищет ID в начальной части файла (64 кб).
IDOnly = 1 (Far) - (опц) если =1, то Multiarc игнорирует расширение и определяет формат архива только по ID. Иначе используются и расширение и ID (если есть).
Extension = uha - расширение файлов данного формата архива (без точки). Для Far - только одно, для ТС - может быть несколько, разделяются запятой.
Таким образом, Extension, ID, IDPos и IDOnly - параметры, по которым Multiarc определяет формат архива.
Команда на вывод листинга архива дается архиватору в следующем формате:
List = путь\имя_архиватора.расширение команда_листинга [опц_ключи] (Far) - например, uharc.exe l -y -d2
или
List = путь\имя_архиватора.расширение команда_листинга [опц_ключи] имя_архива (ТС) - например, %P l -y -d2 %AQA. Переменная %P это имя архиватора, переменная %AQA - имя архива с модификаторами (будут описаны позднее).
Архиватор по этой команде выводит листинг архива, для разбора которого используются параметры Start, End, Format0...FormatN.
[/more]
Про разбор листинга - в следующей серии .
Автор: arsvrn
Дата сообщения: 25.05.2005 13:40
Одно из основных достоинств Multiarc заключается в том, что с его помощью файл-менеджер может работать с архивами, как с папками. Чтобы это обеспечить, Multiarc должен уметь разбирать содержимое архива и представлять его файл-менеджеру. Поскольку Multiarc предназначен для работы с различными типами архивов, он пользуется командами соответствующих архиваторов для вывода листинга архива, затем разбирает его и передает файл-менеджеру в виде списка файлов и папок.
Для задания Multiarc'у правил разбора листинга используются директивы Start, End, Format0...FormatN. Они прописываются в файле Multiarc.ini отдельно для каждого архиватора.
[more]
Вот пример листинга некоего архива, выдаваемого архиватором UHArc по команде uharc l -y -d2 uha.uha.


Цитата:
UHARC 0.6a ----- high compression multimedia archiver ----- BETA version
Copyright (c) 1997-2005 by Uwe Herklotz All rights reserved 06 Feb 2005
**** Freeware for non-commercial use **** contact: uwe.herklotz@gmx.de ****

Processing archive "uha.uha" (created: 25-May-2005, 11:41).

file size date time attr crc-32
-------------------------------------------------------------------------------
Formats\ace.fmt
55808 27-Jan-2004 03:30:00 ---A C4500DA4
Formats\cab.fmt
50176 27-Jan-2004 03:30:00 ---A E59709A3
Default.sfx
52736 27-Jan-2004 03:30:00 ---A 5D7E432F
RarExt.dll
121344 27-Jan-2004 03:30:00 ---A EC5D815D
rarreg.key
462 29-Jan-2004 11:47:26 ---A 2FC3B32E
Formats\tar.fmt
54784 27-Jan-2004 03:30:00 ---A E94B8FDB
Formats\UNACEV2.DLL
75264 27-Jan-2004 03:30:00 ---A 237E323C
WinRAR.exe
843776 29-Jan-2004 11:47:38 ---A 4813E3A7
-------------------------------------------------------------------------------
8 files 1254350
448857 packed (PPM-mode), ratio: 35.8%


Как видно, в листинге имеет место быть как полезная информация (имена, даты, размеры и т.д.), так и бесполезная (для Multiarc'a) - Copyright и т.д. Директивы Start и End служат для указания Multiarc'у местоположения полезной информации.

Start = "-------------------------------------------------------------------------------" - указывает, с какого места в выходном листинге архиватора начинается собственно листинг архива. Это просто текстовая строка, совпадение с которой Multiarc ищет в выходном листинге и со следующей начинает разбор содержимого архива. В данном примере легко заметить, что список файлов начинается после строки "---...---". Если строка в параметре Start начинается с символа "^", то в качестве образца для поиска совпадения используется строка со следующего после "^" символа и в листинге ищется совпадающая строка, расположенная строго в начале строки. В противном случае совпадающий текст может находиться в любом месте строки листинга.

End = "-------------------------------------------------------------------------------" - указывает, где в выходном листинге архиватора заканчивается листинг архива. Все аналогично директиве Start.

Директивы Format0...FormatN описывают формат, в котором выводится листинг файлов и папок. Описание формата представляет собой текстовую строку, в которой для описания формата используется набор ключевых символов:
n - имя файла;
e (ТС) - расширение файла;
z - исходный размер файла;
p - упакованный размер файла;
c - контрольная сумма;
d - день;
t - месяц (в виде числа);
TTT - месяц в виде трехбуквенного сокращения (Jan, Feb, Mar, ...);
y - год;
h - часы (24-х часовой формат);
H - модификатор часов для 12-ти часового формата (a - до полудня, p - после полудня);
m - минуты;
s - секунды;
a - атрибуты файла;
. - удалить пробелы в конце имени файла и добавить имя с точкой;
* - пропустить до первого пробела или конца строки.

В приведенном примере листинга для каждого файла используется две строки: в первой выводится имя файла (длинное), во второй - все прочие атрибуты. Следовательно, необходимо использовать два формата (Format0 и Format1).

В Format0 прописываем длинную строку "nnn...nnn", указывающую Multiarc'у, что в этой строке передается только имя файла:

Format0 = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"

В Format1 необходимо с помощью ключевых символов прописать информацию о том, какие данные находятся в данном месте строки листинга (причем с точностью до позиции символа). Лучше всего это сделать, расположив строку из листинга над строкой Format и используя моноширинный шрифт (здесь пропорциональный):

Format1 = " zzzzzzzzzz dd-TTT-yyyy hh:mm:ss aaaa cccccccc"
" 121344 27-Jan-2004 03:30:00 ---A EC5D815D"

Сколько позиций отвести на размер файла - неизвестно, берем для 1 Тб

[/more]
Таким образом, с помощью директив Start, End, Format0 и Format1 описывается набор правил для Multiarc'а, по которым он теперь может узнать из листинга архиватора содержимое архива и передать его файл-менеджеру.
Далее остается описать построение команд на архивацию, разархивацию, удаление и т.д. и методы передачи архиватору списков обрабатываемых файлов и папок.
Автор: arsvrn
Дата сообщения: 03.06.2005 21:48
Для того, чтобы Multiarc мог работать с различными архиваторами, он должен уметь передавать им команды для работы с архивами в соответствии с их системой команд. Для этого применяется набор директив, описывающий некий универсальный набор действий, достаточных для работы с архивами.
Основными из них я бы назвал следующие (поддерживаются почти всеми архиваторами):
[more]
List - команда получения листинга архива, описана выше.

Extract (Far) - команда извлечения файлов из архива с полным путем. Формат команды:
Extract = путь\имя_архиватора.расширение команда_извлечения_с_путем(или команда_извлечения и ключ_"с_путем") [опц_ключи] имя_архива имя_извлекаемого_файла(или список_извлекаемых_файлов).
Например, Extract = uharc.exe x -d2 {-pw<%%P>} %%AQ @%%LQM

Extract (TC) - команда извлечения файлов из архива без пути. Формат команды:
Extract = путь\имя_архиватора.расширение команда_извлечения_без_пути(или команда_извлечения и ключ_"без_пути") [опц_ключи] имя_архива имя_извлекаемого_файла(или список_извлекаемых_файлов).
Например, Extract = %P e -y -idle { %S} %AQA @%LQ

ExtractWithoutPath (Far) - команда извлечения файлов из архива без пути. Формат команды:
Extract = путь\имя_архиватора.расширение команда_извлечения_без_пути(или команда_извлечения и ключ_"без_пути") [опц_ключи] имя_архива имя_извлекаемого_файла(или список_извлекаемых_файлов).
Например, ExtractWithoutPath = uharc.exe e -d2 {-pw<%%P>} %%AQ @%%LQM

ExtractWithPath (TC) - команда извлечения файлов из архива с полным путем. Формат команды:
Extract = путь\имя_архиватора.расширение команда_извлечения_с_путем(или команда_извлечения и ключ_"с_путем") [опц_ключи] имя_архива имя_извлекаемого_файла(или список_извлекаемых_файлов).
Например, ExtractWithPath = %P x -y -idle { %S} %AQA @%LQ

Add (Far) - команда добавления файлов в архив без пути. Формат команды:
Add = путь\имя_архиватора.расширение команда_добавления_без_пути(или команда_добавления и ключ_"без_пути") [опц_ключи] имя_архива имя_добавляемого_файла(или список_добавляемых_файлов).
Например, Add = uharc.exe a -mx -d2 -md32768 -ed+ -idle {-pw<%%P>} {%%S} %%AQ @%%LQM

Add (ТС) - команда добавления файлов в архив с полным путем. Формат команды:
Add = путь\имя_архиватора.расширение команда_добавления_с_путем(или команда_добавления и ключ_"с_путем") [опц_ключи] имя_архива имя_добавляемого_файла(или список_добавляемых_файлов).
Например, Add = %P a -y -d0 -mx -md32768 -ed+ -idle -lg { %S} %AQA @%LQ

AddRecurse (Far) - команда добавления файлов в архив с полным путем. Формат команды:
AddRecurse = путь\имя_архиватора.расширение команда_добавления_с_путем(или команда_добавления и ключ_"с_путем") [опц_ключи] имя_архива имя_добавляемого_файла(или список_добавляемых_файлов).
Например, AddRecurse=uharc.exe a -r+ -d2 -mx -md32768 -ed+ -idle {-pw<%%P>} %%AQ @%%LQM

Move (Far) - команда перемещения (добавления с последующим удалением) файлов в архив без пути. Формат команды:
Move = путь\имя_архиватора.расширение команда_перемещения_без_пути(или команда_перемещения и ключ_"без_пути") [опц_ключи] имя_архива имя_перемещаемого_файла(или список_перемещаемых_файлов).
Например, Move = uharc.exe m -d2 -mx -md32768 -ed+ -idle {-pw<%%P>} %%AQ @%%LQM

Move (ТС) - команда перемещения файлов в архив с полным путем. Формат команды:
Move = путь\имя_архиватора.расширение команда_перемещения_с_путем(или команда_перемещения и ключ_"с_путем") [опц_ключи] имя_архива имя_перемещаемого_файла(или список_перемещаемых_файлов).
Например, Move = %P m -y -d0 -mx -md32768 -ed+ -idle { %S} %AQA @%LQ

MoveRecurse (Far) - команда перемещения файлов в архив с полным путем. Формат команды:
Move = путь\имя_архиватора.расширение команда_перемещения_с_путем(или команда_перемещения и ключ_"с_путем") [опц_ключи] имя_архива имя_перемещаемого_файла(или список_перемещаемых_файлов).
Например, MoveRecurse = uharc.exe m -d2 -mx -md32768 -r+ -ed+ -idle {-pw<%%P>} %%AQ @%%LQM

Delete - команда удаления файлов из архива. Формат команды:
Delete = путь\имя_архиватора.расширение команда_удаления [опц_ключи] имя_архива имя_удаляемого_файла(или список_удаляемых_файлов).
Например,
Delete = 7za.exe d -y -r0 -ms=off %%A @%%LQMN (Far)
Delete = %P d -y %AQA @%lQ (ТС)

Test - тест целостности архива. Формат команды:
Test = путь\имя_архиватора.расширение команда_тестирования [опц_ключи] имя_архива
Например,
Test = uharc.exe t {-pw%%P} %%AQ (Far)
Test = %P t -y -idle { %S} %AQA (TC)
[/more]
Существуют и другие, дополнительные директивы. Они описывают, например, команды создания SFX-архивов, защиты архивов и т.д. Также есть директивы для указания способа обработки ошибок, режима отладки и другие.
Автор: Yarylo
Дата сообщения: 31.07.2005 23:02
arsvrn
MutiArc plugin for Total Commander with 7z supporting
- хороший плагин, но видает ошибку при распаковке файлов с русскими символами из 7з архивов. Никто не знает как ето исправить?

Цитата:
Executed command ... returned error level 2...

вот кусок Multiarc.ini по 7z

Цитата:
[7Z]
ID=37 7A BC AF 27 1C
IDPos=0
Extension=7z
Archiver="d:\Program\7-ZIP\7z.exe"
List="%P l %AQA"
Start="^-------------------"
End="^-------------------"
Extract="%P e -y {%S} %AQA @%LQ"
ExtractWithPath="%P x -y {%S} %AQ @%LQ"
Test="%P t -y {%S} %AQA"
Delete="%P d -y -r {%S} %AQA @%LQ"
Add="%P a -mx -y -r {%S} %AQA @%LQ"
Description="7-Zip 2.30 beta 24"
Format0=yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
IgnoreErrors=0
Debug=0
UnixPath=0
SkipDirsInFileList=0
SkipEmptyNames=1
BatchUnpack=1
SearchForUglyDirs=0
Автор: arsvrn
Дата сообщения: 01.08.2005 11:39
Yarylo

Цитата:
видает ошибку при распаковке файлов с русскими символами из 7з архивов

Поставь в строке
ExtractWithPath="%P x -y {%S} %AQ @%LQ"
вместо %AQ ключ %AQA (как в Extract=...). Должно заработать.
Правда, если у тебя действительно версия "7-Zip 2.30 beta 24", то проверить не смогу, у меня такой старой нет.
Автор: Yarylo
Дата сообщения: 01.08.2005 22:43
arsvrn

Цитата:
вместо %AQ ключ %AQA (как в Extract=...). Должно заработать.

Заработало! С пасибо! Я использую версию 4,23
Автор: Yarylo
Дата сообщения: 03.08.2005 22:31
Почему 7z запакоковывает и распаковывает заметно медленнее при использовании
MutiArc plugin for Total Commander? Я что-то делаю не так?
Автор: arsvrn
Дата сообщения: 03.08.2005 22:36
Yarylo

Цитата:
Почему 7z запакоковывает и распаковывает заметно медленнее

Медленнее чем что?
Автор: TCPIP
Дата сообщения: 03.08.2005 23:29
arsvrn
23:36 03-08-2005
Цитата:
Медленнее чем что?

Видимо, чем standalone 7-Zip.
Автор: arsvrn
Дата сообщения: 04.08.2005 09:54
Yarylo
TCPIP

Цитата:
Почему 7z запакоковывает и распаковывает заметно медленнее

Абсолютно одинаковая скорость.
Специально поставил полный 7-zip для сравнения (сроду не ставил - всегда работал через файл-менеджеры+7za). Пробовал архивировать различные набора файлов размером до 80 МБ, при этом время составляло до 4 мин. Различие по времени - не более 1 сек.
Причина различной скорости может быть только одна: разные установки опций архиватора для случаев через Multiarc и standalone 7-Zip. Сравните хотя-бы размеры получившихся архивов. У меня, естественно, совпали до бита, так как опции одинаковые.

TCPIP
Загляни в ПМ.
Автор: estimated
Дата сообщения: 05.08.2005 18:34
Большое достоинство архитектуры FAR в том, что он может передавать MultiArc'у на обработку все файлы, с любыми расширениями, и идентификацию типа архива MultiArc может производить по заголовку файла, не будучи связанным расширением файла. После обработки MultiArc'ом файл может быть передан на обработку другому плагину.
(Те, кто разбирался с InstallShield-архивами, у который существует несколько разных версий, хорошо поймут, насколько важен указанный момент.)
К сожалению, ситуация с разработкой FAR'а плачевная, выход из бета-тестирования произойдет, наверное, уже не при нашей жизни.

Большой недостаток архитектуры Total commander это то, что он может отдавать файлы MultiArc'у только по расширению - т.е. ограниченный набор файлов с конкретными расширениями (сам MultiArc Сергея Жарского может идентифицировать тип архива по заголовку, но TC не дает ему этим воспользовать в полной мере). Файл не может быть дополнительно (или в случае неудачной обработки, например, если окажется, что MultiArc не поддерживает данный тип файлов) передан другому плагину или самому TC. С другой строны, TC - очень стабильная, хорошо поддерживаемая и развивающаяся программа.

Поправьте, если в чем-то ошибаюсь.

Поддерживаю идею написания оболочки для работы с архиваним любых типов (сам уже давно вынашиваю такую идею).
Автор: arsvrn
Дата сообщения: 05.08.2005 22:48
estimated

Цитата:
Большой недостаток архитектуры Total commander это то, что он может отдавать файлы MultiArc'у только по расширению

Это не так. ТС запросто передает файлы с любым (даже не зарегистрированным) расширением MultiArc'у. Только в такой архив надо входить не по Enter, а по Ctrl-PageDown
Что касается Вашего вопроса в четырех! (если не ошибаюсь) топиках

Цитата:
как конвертировать папки в архивы?

то он меня заинтересовал, попытаюсь что-нибудь придумать (если, конечно, получится). Пока в голову лезет только батник какой-нибудь.

Добавлено:
Есть способ. Описал в WinRAR.
Автор: estimated
Дата сообщения: 06.08.2005 02:05

Цитата:
Это не так. ТС запросто передает файлы с любым (даже не зарегистрированным) расширением MultiArc'у.

Т.е. любой файл в TC, на котором я нажимаю Ctrl-Enter, проходит обработку MultiArc'ом? Что-то не похоже. В конфигураторе packer extensions надо явно задавать именно расширения файлов, которые будут отдаваться MultiArc'у.

Цитата:
в четырех!

в трех ;) : плагины TC, WinRAR, 7-zip
Автор: arsvrn
Дата сообщения: 06.08.2005 10:13
estimated

Цитата:
Что-то не похоже

Попробуйте, например, взять любой архив (из multiarc'овских), изменить ему расширение и войти по Ctrl-PgDn (а не по Ctrl-Enter). Все получится
Автор: Viewgg
Дата сообщения: 06.08.2005 18:21
estimated
arsvrn
Multiarc из FAR тоже "видит" свои архивы очень чётко. Например, у меня были на компе архивы *.uha двух несовместимых форматов: UHARC 0.4 и UHARC 0.6. Первый архиватор был с графической оболочкой, второй прикручен к FAR. Так вот, при простом нажатии ENTER на архивах от UHARC 0.4 запускался внешний архиватор с графической оболочкой, а при нажатии на архивах UHARC 0.6 они открывались с помощью Multiarc, хотя расширение - то же самое.
Истинный фотмат архива видят не только FAR и TC, но и многие популярные графические архиваторы, например WinRAR и 7-zip (первый позволяет открыть архив со "странным" расширением через контекстное меню, второй использует ту же комбинацию Ctrl-PgDn)
Автор: arsvrn
Дата сообщения: 06.08.2005 19:51
Viewgg

Цитата:
Multiarc из FAR тоже "видит" свои архивы очень чётко

Конечно "видит". Ведь для распознавания типа архива и предназначена запись ID (и IDPos) в инишниках Multiarc'ов FAR и ТС (о чем и написано выше ).
Кстати и UHARC 0.4 и UHARC 0.6 вполне можно прикрутить к Multiarc'у. Надо только задать две записи в ини-файле с разными ID'ами и вызовом разных версий UHArc.
Автор: estimated
Дата сообщения: 07.08.2005 03:11
arsvrn

Цитата:
Попробуйте, например, взять любой архив (из multiarc'овских), изменить ему расширение и войти по Ctrl-PgDn (а не по Ctrl-Enter). Все получится


А вот не получается. Только что попробовал на .hdr (InstallShield). По Ctrl-PgDn открывается нормально (через TC-MultiArc). Меняю расширение - и не открывается.
Автор: arsvrn
Дата сообщения: 07.08.2005 09:02
estimated

Цитата:
Меняю расширение - и не открывается

А у меня прекрасно открывается (в том числе и .hdr).
У Вас в инишнике есть такие строки?
[InstallShield6]
ID=49 53 63 28 0C
IDPos=0
Extension=CAB, HDR

Если есть, и все равно не открывается, приведите InstallShield'овский кусок своего инишника. Разберемся (если у других работает, то и у Вас должен ).
Автор: estimated
Дата сообщения: 07.08.2005 13:40
arsvrn
В данном случае был .hdr от InstallShield 5.5 (начинается с 49 53 63 28 01). Вот соответствующий кусок из multiarc.ini:

[InstallShield55]
ID=49 53 63 28 01
IDPos=0
Extension=HDR,CAB
...

В wincmd.ini есть такие строки:

[PackerPlugins]
hdr=31,%COMMANDER_PATH%\Plugins\MultiArc\multiarc.wcx
...
Автор: arsvrn
Дата сообщения: 08.08.2005 11:52
estimated
В инишнике вроде все правильно. В wincmd.ini лучше поставить не 31, а 95 (31+64; "64=Можно определять тип архива по содержимому"). У меня стоит 223.
А на какое расширение Вы меняли .hdr? Если на какое-нибудь, зарегистрированное на сам ТС (zip, rar и т.д.) или на WCX-плагин (ha и т.д.), то да, до MultiArc просто дело не доходит. А если (для проверки) на типа .qqq, то MultiArc распознает это как архив InstallShield 5.5. Другое дело, что не распакует - но это уже проблемы i5comp, которому нужно именно .hdr+.cab.
Так что MultiArc для ТС умеет определять архив по ID, но ему не всегда дают это сделать
Автор: zhuchella
Дата сообщения: 11.08.2005 22:10
Помогите, плз, новичку в этом плагине, подключить и настроить его...
Автор: arsvrn
Дата сообщения: 11.08.2005 22:42
zhuchella

Цитата:
Как правильно подключить и настроить WCX-MultiArc ?

Для начала скачать сам MultiArc и InnoUnp.
Затем в папке ТС создать какую-нибудь папку (например, Plugins\MultiArc\) и положить туда multiarc.wcx, multiarc.hlp и conspawn.pipe из архива mltwcx. Затем из архива innounp туда же положить innounp.exe и innosetup.addon (его переименовать в multiarc.ini). Редактором в ини-файле исправить путь к innounp.exe (при расположении multiarc.wcx и innounp.exe в одной папке путь можно не вводить).
В ТС в "Конфигурация - Настройка - Плагины" нажать "WCX - Настройка" и в окошке "Файлы с расширением" набрать что-то типа "ex?" (не exe, чтобы не превратить для ТС все exe'шники в архивы). Далее "Обзор" и указать на multiarc.wcx. В окошке "Открывать с помощью программы" будет что-то вроде "...Plugins\multiarc.wcx". Допишите в нем перед путем "324,...".
Вроде все. Теперь по Ctrl-PgDn можно входить в инсталляции Inno Setup, как в архивы.
Может, чего и забыл описать, задавай вопросы
Автор: vserd
Дата сообщения: 12.08.2005 12:09
estimated

Цитата:
Большой недостаток архитектуры Total commander это то, что он может отдавать файлы MultiArc'у только по расширению - т.е. ограниченный набор файлов с конкретными расширениями (сам MultiArc Сергея Жарского может идентифицировать тип архива по заголовку, но TC не дает ему этим воспользовать в полной мере).

это не так.
Отдается любой файл. Но при условии что он небыл перехвачен ранее другим плугином.
Я отлаживал получение пути к wincmd.ini на текстовом файле (Ctrl+PgDn), dll и любом файле который попадался под выделение мыши, и MultiArc добросовестно пытался определить тип архива.

Если я правильно понял алгоритм работы TC в архиваторных плугинах, то сначала он ищет расширения в списке зарегистрированных, если нашел передается ему и если плугин может его обработать поиск прекращается. Если не найдено, тогда передается каждой записи из списка до тех пор пока не не найдется архиватор его обрабатывающий или кончится список.

Хотя я не уверен что этот алгоритм верен. Если кто сможет правильно сформулировать запрос на Английском я его задам на форуме Гислера. Или этот вопрос уже где-то обсуждался?

Автор: arsvrn
Дата сообщения: 12.08.2005 13:21
vserd

Цитата:
сначала он ищет расширения в списке зарегистрированных, если нашел передается ему и если плугин может его обработать поиск прекращается. Если не найдено, тогда передается каждой записи из списка до тех пор пока не не найдется архиватор его обрабатывающий

Есть по крайней мере одно исключение. Если архив, заархивированный чем-нибудь из Multiarc, переименовать в ZIP, то до Multiarc'а он не дойдет.

Кстати, давно хотел послать тебе вопрос по 7-zip через Multiarc. Не опознает Multiarc SFX архив 7-zip. Причем это явно из-за того, что не находит ID. В 7-zip SFX он расположен далеко от начала файла. Указать смещение в IDPos не помогает. Кстати, IDPos надо hex или dec? Пробовал и так и так. А вот если из аддона убрать ID и IDPos, а файл переименовать в .7z, то работает без проблем. Видимо, тоже самое будет с любым SFX архивом с достаточно большим кодом распаковщика.
Хотелось бы такой глюк победить!

PS: FAR'овский Multiarc берет такие архивы без проблем.
Автор: vserd
Дата сообщения: 12.08.2005 13:44
arsvrn

Цитата:
Не опознает Multiarc SFX архив 7-zip. Причем это явно из-за того, что не находит ID. В 7-zip SFX он расположен далеко от начала файла. Указать смещение в IDPos не помогает.

Я так далеко в исходники MultiArc еще не забирался :((
Посмотрю, но это будет не быстро.
Проблем и непоняток с 7z я насобирал, но вот внутрь залезть времени не хватает.
Автор: arsvrn
Дата сообщения: 12.08.2005 14:38
vserd

Цитата:
Проблем и непоняток с 7z я насобирал

А какие еще проблемы есть? Может напишешь, знать будем. А глядишь, чего-нибудь подскажем
Автор: vserd
Дата сообщения: 12.08.2005 15:01
русские буквы в путях, метод компрессии, и еще пара, на вскидку не помню. Баг треккер дома.

Автор: arsvrn
Дата сообщения: 12.08.2005 15:47
vserd
Давай тогда позже пообщаемся на эту тему. Потому что, например:

Цитата:
русские буквы в путях

С русскими буквами у меня все работает. Так что может дело в аддоне? В этом я могу попытаться помочь.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Opera 8 free registration


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.