MultiArc Help Index

MultiArc Help

Quick Info: Use the following links to read a detailed explanations and descriptions about MultiArc installation and it's configuration.

How to install MultiArc

Visual Configuration

Reference for MultiArc.ini

Reference for Language file (*.lng)

Known problems

What is MultiArc?

MultiArc is an archiver plug-in for Total Commander. It allows viewing, extracting and modifying contents of archives that are unsupported by Total Commander (e.g. JAR, IMP). MultiArc translates the commands from Total Commander into corresponding external archiver calls. You can easily add support for your favorite archiver by editing MultiArc.ini.

© 2012-2016 MVV
© 2005-2007 MultiArc Team
© 2000-2003 Siarzhuk Zharski


Installing MultiArc

How to install MultiArc:

First of all you need to unzip the contents of distribution archive to directory where you want MultiArc to live. There are two methods of configuring MultiArc:

"Visual" configuration

From version 1.1.0 it is possible to use Configuration dialog for working with archiver settings. See following link for details:

Configuration Dialog

"Old-style" manual configuration:

1. Edit MultiArc.ini to setup archive types. Additional archivers addons you can can find in "addons" subdirectory of distribution archive. Just copy and paste required INI-file sections from .addon to MultiArc.ini. Note that, almost always you'll need to change the "Archiver" key. It should reflect the real placement of external archiving utilities on your system.

2. Now run Commander and choose Configuration - Options, open the 'Packer' page, click 'Configure packer extension DLLs'.

3. Now type the extension that configured archiver should use, than click 'new type', and select the proper version of MultiArc.wcx. Click OK.

The installation of one archiver is complete. If you want to register more archivers - repeat this procedure.


Configuration Dialog

MultiArc configuration dialog is a tabbed dialog and contains following pages. You can get this dialog during try to pack some files with MultiArc-supported archives (Press Configure button) or by manual call (see details at bottom of this page).

About page

On this page you can see a very significant information: The e-mail address of Author and the homepage URL, that you can use to look for MultiArc updates. There is also information about used version of MultiArc, some credits and copyright information. Look on it now!

Addons page

This page helps to manage all addons, registered in currently used MultiArc.ini.

Addons page

Settings page

Here are some global MultiArc - related settings, console modes and options.

Settings page

Language page

Here can choice the language of plugin interface.

Language page

TIP: How to call configuration dialog externally

From version 1.1.0 you can open plugin configuration dialog by running following command from Windows command-line:

rundll32 MultiArc.wcx, Settings

A small hint: You can set-up "Start" menu or button bar of Windows Commander to call this command. NOTE: Current directory should be set into that one where MultiArc.wcx live. Yet another small hint - there is a icon for toolbar inside MultiArc.wcx - try it!

WARNING!!!
If you configure MultiArc through rundll32, please set a correct way to main configuration file Total Commander (Menu, Help, About, INI-files). Otherwise function of register/unregister addon, will work not correctly.


MultiArc.ini reference

What is MultiArc.ini?

All settings of MultiArc is stored in MultiArc.ini file. This file is standard Windows INI-file. It contains some sections. Those sections contains keys - the pairs of strings separated by equality sign. Those files is text files and can be edited by every text editor. Every archiver, supported by MultiArc must be described as a separate section in MultiArc.ini. See below for detailed info about its structure. There is also special section with name "MultiArc". This sections contains settings that applicable for all archivers - i.e. general settings

The structure of typical archiver description section:

[TypeName]
Parameter = Value of parameter
Pattern = String representing a pattern
Command = String representing a command
Flag = 0 or 1 depending on state of this flag

TypeName
Short name for the archiver description. It is required and must be unique.

Example:
[ARJ]

Parameters

Archiver
Path to archiver executable. Path may contain environment variables such as %WINDIR% or %COMMANDER_PATH%.

Example:
Archiver="%COMMANDER_PATH%\Archivers\PivkARC.exe"

Description
Archiver description (comment, version, author etc), it is shown e.g. in the configuration dialog.

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

Extension
List of file extensions supported by the archiver.

Example:
Extension=hhh, hpj, tzu

ID
List of signatures (byte sequences written as 2-digit hex number sequences separated with spaces) used to detect archive type. These ID definitions (and related parameters IDPos, IDSeekRange, ExcludeIDs) are required only for reading archives with unknown extensions.

Example:
ID=01 02 03 04, 01 03 02

IDPos
List of ID positions in an archive file. By default IDs are only compared at the beginning of file. You can define positions relative to end of file using "-" sign. Values can be writed as decimal (12345, -1) or heximal (0x3039, 0xFFFFFFFF). Special value <SeekID> enables searching for ID and allows detecting archive types of SFX archives.

Example:
IDPos=0, 5, 0x0D, -6, <SeekID>

IDSeekRange
Number of bytes from the beginning of archive file where IDs are searched when <SeekID> is specified in IDPos parameter. It should be greater than SFX header size in order to detect SFX archive type. Default value is 1 MB.

Example:
IDSeekRange=65536

ExcludeIDs
List of signatures that must not be present in archive file. They are checked for every ID signature found in the file and allow ignoring false IDs.
Every item must be in a form (signature, [offset], [isAbsolute]), where offset is a position in the file where to check for signature and isAbsolute determines how offsets are treated (by default, when isAbsolute=0, offset is relative to ID offset; but when isAbsolute=1, offset is absolute, just like IDPos).

Example:
ExcludeIDs=(00, -1), (01 02 03 04 05, 0), (06, 5), (07, 11, 1), (08, -1, 1)

Following example may help in understanding of IDs and ExcludeIDs.

Example of a file (numbers are offsets and two-digit values are bytes, xx means any byte):
0  1  2  3  4  5  6  7  8  9  10 11 12 13

xx xx xx xx xx 01 02 03 04                     - IDs at offset 5, accepted
xx xx xx xx xx 01 03 02 xx

xx xx xx xx 00 01 02 03 04 xx xx xx xx xx      - ExcludeIDs rule (00, -1), rejected
xx xx xx xx 00 01 03 02 xx xx xx xx xx xx

xx xx xx xx xx 01 02 03 04 05 xx xx xx xx      - ExcludeIDs rule (01 02 03 04 05, 0), rejected

xx xx xx xx xx 01 02 03 04 xx xx xx xx 06      - ExcludeIDs rule (06, 5), rejected
xx xx xx xx xx 01 03 02 xx xx xx xx 06 xx

xx xx xx xx xx 01 02 03 04 xx xx 07 xx xx      - ExcludeIDs rule (07, 11, 1), rejected
xx xx xx xx xx 01 03 02 xx xx xx 07 xx xx

xx xx xx xx xx 01 02 03 04 ........... 08 EOF  - ExcludeIDs rule (08, -1, 1), rejected
xx xx xx xx xx 01 03 02 xx ........... 08 EOF

Patterns

Start(optional) any part of line in listing after which processing

End (optional) any part of line in listing to stop processing of files list.

Note for Start and End patterns: If text started from '^', it will be compared from second symbol with lines beginning. Otherwise text looked anywhere in lines.

Format0 ... Format<n> - files listing format. If file description in archive listing contains multiple lines use corresponding format keys count. You can define up to 50 format lines. Refer to format strings description.

Example:

Start="^-------"
End="^Total files listed: "
Format1="zzzzzzzzzz aaaaa                        yyyy tt dd hh mm ss"
Format2=" "

Commands

List - produce listing.

Extract - extract file from archive.

ExtractWithPath - extract file(s) from archive with full path.

Note for extract commands: If BatchUnpack flag is set to 1 the second one will be used.

Test - test archive.

Delete - delete file from archive.

Add - add file to archive.

Move - move file to archive.

InputString - insert some string into archivers utility input stream. This is used to emulate pressing some keys at start of archiver. Used for some shareware utilities that requires press Y before work. =-)

Note: All command excluding InputString use command definition format.

Flags

IgnoreErrors if active - archiver commands exit code will be ignored. Use with caution.

SkipEmpty files with empty names will not be added to list

SkipDirsInFileList do not add directory entries in file-list

SearchForUglyDirs try this when your archiver produce listings where directory entries doesn't have trailing '\'-shes. this option force MultiArc to search for this ugly dirs and correct list to make it understandable for Commander. Do not use this key if you not REALLY NEED it - it may slow down performance of operating ...

BatchUnpack if activate MultiArc will not unpack all files singly one by one as Commander want. Instead it will unpack this files at "archive closing phase" in one list by ONE call of archiver utility. This option is VERY useful for "solid" archives ... But ... there are some visual confusions using this mode - unpacking progress will show not real percentage ... See also Known bugs for more info on BatchUnpack problems.

UnixPath if paths in output list in Unix format - activate this

Debug if this flag activated - all archiving utility output will be written to log file, laying in same directory as MultiArc.wcx and named "MultiArc.%TYPENAME%.log" where %TYPENAME% is TypeName of corresponding archiver description. If some list files used in commands, those files also will be not removed after performing command. Look into %TEMP%/$mltwcx directory for those files. Activate this flag only if you going to track all activity. It is needed during writing new addons. Do not use it if you not need it! This log file can eat your free disk space very quick! =-) You warned.

SkipSfxHeader default false. Determines whether to skip the SFX part of the archive during archive ID search.

Examples:

For 7z SFX archives (the archive itself is located after the SFX part, so it can be skipped) SkipSfxHeader=1.
For InnoSetup installations (ID is within SFX part of the file, so it shouldn't be skipped) SkipSfxHeader=0.


Format parsing

MultiArc uses FormatN patterns for parsing archiver listings. If archiver outputs information about every file using N lines, you need to define N Format-patterns. The Format-pattern is a string defining mask for extracting information from single line of archiver listing. Following symbols are used in patterns:

Format specifiers:

n | File name
z | Unpacked size
c | File description
p | Packed size
d | Day
t | Month
TTT | Three letters month name (Jan, Feb, Mar, ...)
y | Year
h | Hours
H | Hours modifier (following characters supported: a - a.m., p - p.m.)
m | Minutes
s | Seconds
a | Attributes (following characters supported: a, h, s, r, d)
e | File extension

Special specifiers:

* | Ignore and skip until first space or end of line
. | Remove trailing spaces from file name and append name with dot
+ | Stretch format specifier until first space or end of line or stretch space until first non-space character. It is quite useful in case of variable-length size outputs, but be careful when e.g. groups of digits are divided with spaces.
++ | Stretch format specifier until end of line (mainly for n specifier)

Example:

The part of JAR output log:

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

As you see, it uses 3 lines per file, so you need to define 3 Format-patterns: Format0, Format1 and Format2.

Corresponding old-style fixed width format pattern (number of n's must not be less than file path):

Format0="* nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Format1="zzzzzzzzzz aaaaa                        yyyy tt dd hh mm ss"
Format2=" "

First line may be written in a much more compact way using name stretching:

Format0="* n++"

Equivalent new-style second line (number of spaces between aaaaa and yyyy must be the same):

Format1="z+ aaaaa                        yyyy tt dd hh mm ss"

Equivalent second line new-style format pattern with more stretched fields (it is harder to read; number of stretched spaces and ignored groups is important):

Format1="z+ +a+ +* +* +* +y+ tt dd hh mm ss"

You can get more examples on discussion boards (e.g. here) and in already existing addons.


Command definition format

Command is string that contains variables. Those variables has the "%"-sign before them and will be substituted during command call.

The list of command variables:

%P | Long name of archiving utility (as it is in Archiver key)
%p | Short name of archiving utility (taken from Archiver key)
%A | Long name of archive file
%a | Short name of archive file
%L | Filelist name. Filelist is the file containing names of files to be processed by the external archiver. File names is long
%l | Filelist with short file names
%F | The name of a single file to process. The archiver will be executed several times until all file names are exhausted. This variable should be used only if the destination archiver does not support filelists on the command line
%Enn | Maximum acceptable command errorlevel. For example, %E2 indicates that errorlevels 0, 1 and 2 are acceptable. This variable may be specified in any place of command. If it is absent, only errorlevel 0 is considered as successful
%O | By default, MultiArc converts archiver output from OEM encoding to ANSI, this parameter allows disabling conversion
%R | Target subdirectory inside archive
{} | Braces allow inserting some text and variable values (%R and %S may be used here) only when some variable is not empty. For example, {-ap%RQA} in MsCAB addon will include -ap parameter only if %R is not empty
%S | This parameter may be used to insert some user-defined strings to the command line, and MultiArc will show an input dialog for every %S parameter in a command (depending on corresponding setting value)
%C | Do not hide console window during running external archiver utilities. The console settings has more configuration options - see configure dialog

Following variable modifiers may be used to change format of paths:

Q | Quote names with spaces
q | Quote all names
W | Use name only, without path
P | Use path only, without name
A | Use ANSI encoding

These modifiers may be specified immediately after variables without spaces, e.g. %PQA, %AQA, %LQ.

Refer to existing addons for real examples of commands.

Note:
If path to archiver utility contains non-English chars, you may get strange errors, e.g.:
Probably an error occured, no archive listing returned.
Errorlevel -1 is produced by following command:
C:\TOTALCMD\ЂаеЁў в®ал\UnRAR5.exe l -- F:\UnRARDLL.rar5
In such case you should edit archiver path in corresponding MultiArc.ini section: change %P to %PA or %PQA in parameters Extract, ExtractWithPath, Add, Test, Delete.


Known problems

There are no perfect programs.

Encrypted archives

Since MultiArc calls console archivers and hides console, there is no way to ask you for a password for encrypted archive or installation package, so your TC may hang while waiting for MultiArc which waits for archiver...
If you're facing with such problem, you can try ConPaste tool. It is able to ask you for a password when archiver waits for it.

BatchUnpack issues

First of all let me introduce why we use this workaround. IMO, the plugin API was grown from UnRAR unpacking module used by Author of Commander to handle RAR files. The main problem of it is file-by-file handling - it can unpack only one file per call. Lets remember now about "solid" archives - for this archives we need to unpack all files that lay before required file. In other words to unpack all archives from solid archive, containing 100 files we should call external unpacker 100 times! That's why we decide to use some workaround for this situation - BatchUnpack mode. In this mode, all information about list of required files just collected during "single-file" calls and only at last call will be send to external archiver. This mode requires additional key - ExtractWithPath and uses external archiver in full-path extraction mode.

Now, the problem: No per-text file search possible in this mode - Commander asks us to extract files and rename it to temporary name. But in this mode we can't do this. So there is no file that Commander want to see.

Capabilities dialog

The WCX plugin can be registered in wincmd.ini by association it with archive extension. In situation of two different archive types sharing same extension all changes made to one of types will be applied to other automatically - just by design.

Extensions, IDs etc.

Currently archive type checking mode works in following manner: First, MultiArc look for unpacker per extension basis and if such unpacker found - checks by ID. If ID check fails - it look for next unpacker for such extension etc. If the list of unpackers completely checked but there is no appropriate unpacker found it try to find unpacker just by testing this file for all unpackers by IDs. There is one issue with archive types that have no ID defined. For such types the first unpacker found for its extension will be used. Note that, if there are some unpacker registered in MultiArc.ini for this extension - and IDless one stay before others - only this one will be called. In other way - something is defined before it - the previous unpacker will be used. Avoid ID-less definitions!

Miscellaneous problems

1) "Also pack path names" mode is ON always - files always packed with path names.

2) Progress bar that WC show during long time archive processes - is a not REAL percentage. Because I have no information about it from archiving process and have to use very dumb algorithm to calculate it. Use console to get the real information.


Total Commander Plugin handling

This page describes how Total Commander chooses an archive plugin to handle the file. The information was obtained from Total Commander's work analysis. Total Commander's author never published such information.

Archivator plugin choice is made this way:

1. Total Commander checks whether it can process a file with the given extension.

2. If it can do this, processing is done. No further search is made.

3. If it can't, then it searches for the given extension in [PackerPlugins] section of the wincmd.ini file

4. If the extension is found there, the file is carried on to the associated plugin, and plugin search is finished. Even if the plugin returns an error because it is meant for a different type of files, no further search is made.

Example: 'EXE' extension. This extension represents not just "ordinary" programs, but also self-extracting archives. There are different types of self-extracting archives, such as RAR, ZIP. MS CAB, Install Shield distributives, InnoSetup and so on.

5. If the extension isn't found, then Total Commander tries every record of plugin from [PackerPlugins] section of the wincmd.ini file, beginning from the first one. If a plugin can handle the file, it responds to Total Commander, no further search is made. After all plugins are tried Total Commander doesn't do anything.

The conclusion from here follows: you need just one per plugin record in [PackerPlugins] section of the wincmd.ini file for successful functioning of several plugins.

The extension associated with the plugin is not important at all.

If an extension has several assitiations, Total Commander's chioce will be the firstone from [PackerPlugins] section of the wincmd.ini file.

Total Commander also uses records from [PackerPlugins] section of the wincmd.ini file for packing files. You can choose an archive type from the drop-down list in "Files->Pack..." dialog and create an archive of that type.

When applying to MultiArc this means that You need to associate only those types of Addons that You wish to use for archive creation. For unpacking archives you need any single association mentioning MultiArc in [PackerPlugins] section of the wincmd.ini file.


MVV Build

Official MultiArc developing has been discontinued since 2007. However there was a need for 64-bit version when 64-bit Total Commander was released.

This build continues official MultiArc 1.4.1.7 version taken from its repository. All additions and fixes introduced by this build are listed in Readme.txt file.

It comes with new MultiArc.chm help file. Some topics were updated according to introduced changes. Original unchanged help file MultiArc.hlp is shipped with this package (note that this format is deprecated since Windows Vista).


Ask Dialog

MultiArc shows this dialog when some input is required, there are two input types exist:

Please input %S parameter #1 value for Add command:

This dialog is shown when %S parameter is used for some command and its value is required for the command execution. Parameter index (#1, #2 etc) and command name (Add, Delete, Test etc) describe which value is requested.

Please select desired MultiArc type for this operation:

This dialog is shown when e.g. you pack files to an archive with extension which is listed in multiple archiver descriptions.


Configuration - Addons

The better way to learn about controls - run config dialog and use "question" button on caption of dialog window - left of close button.

Type

The type of archiver. This value correspond to TypeName key. The field right of this combobox shows contents of description key. There is a special case of addon with name MultiArc - "The general settings". In this entry you can editglobal settings. Global settings will be used if addon have no defined corresponding local settings. See %S-Parameter handling below.

Description

You can see a field with short description of currently selected archiver type (taken from its Description key).

Path

This edit control shows to you the contents of Archiver key and allows editing it. The button right of it opens standard file selection dialog to help you look for required binaries.

Status

This field displays information about current registration of this addon with Total Commander. It reads required information from wincmd.ini and lists file extensions which are registered with current addon.

Change capabilities

This button opens a Capabilities Dialog that allows registering addon in Total Commander.

Handle %S parameter

This group of controls helps in setting up %S-Parameters for selected archive type. You can activate or deactivate this functionality, change behavior of this functionality by combobox and exclude or include %S-Parameter handling for LIST command calls. Note that it is always active for MultiArc section.

Note: There is a small issue with "For next command" mode. This mode works only for next call and will be to "Never" after this call performed. So do not be surprised if this mode will be never saved !!!

Ask for its value

Here you can select when %S parameter value will be requested:
Never - never ask user for %S parameters.
For next command - user will be asked for %S parameter only once.
For every command - user will be asked for %S parameters for every command where %S is used.
Note that "Never" mode is only available for general (MultiArc) archiver. To get such functionality on local %S parameters just switch handling off.
Note that "For next command" mode is only active within MultiArc session and only applied to first requesting of %S parameter in any command of current archive type.

Except LIST calls

Here you can avoid %S parameter asking during "List" command. This command is requested by Commander many times and it is a really good idea to keep this check on.

Current TC INI

Field shows path to Total Commander's settings file (wincmd.ini). It should be detected automatically if you run MultiArc configurator from TC. If You will notice that the path is not correct, please choose the correct one.

Import types...

This button allows you to import archiver descriptions from external *.addon files to MultiArc.ini. Just run OpenFile dialog and select addon you want to import.

Remove type

This button allows you to remove currently selected archive type information from MultiArc.ini.

Edit MultiArc.ini...

This button opens MultiArc.ini in text editor (configured in TC or just system one). You can make any changes in MultiArc.ini manually. When you close editor or press Finish button, MultiArc rereads configuration file. However you can cancel waiting by pressing terminate button, in this case MultiArc won't reread file.


Configuration - Capabilities

This dialog allows registering addons with Commander. The registration mean adding / replacing the entry in [PackerPlugins] section of wincmd.ini. Here also possible to change some parameters used by Commander during working with this archive type. Note that editing much of them is not a good idea. Just text search support and hide icon features is useful. Other are dependent on Commmander and I do not recommend do something with them. Use context help for more detailed descriptions of controls.Note: If you want to create and, maybe, edit archives of certain types, you must associate file extensions that correspond to these types with the plugin. In case you need only to unpack archives you need a single line in the [PackerPlugins] section of wincmd.ini. You can associate the plugin with any extension.

Extension

This list shows all available extensions for this format allowing you to register them in TC.

Registered in TC

Check to add entry in wincmd.ini file. In other words - register this extension with Commander

Can create new archive

This addon can create new archive files

Can modify existing archive

This addon can modify archive files

Can delete files from archive

This addon can delete files from archive file

Archive can contain multiple files

This addon supports multiple files in archive file

Detecting archive type by content

This addon can check the archive files by ID

Allows searching for text in archives

This addon supports text search inside of archive files

Hide archive icon, open with Ctrl+PgDn

You can hide standard Total Commander archive icon for this extension. Note that in such case you will only be able to open such archive with Ctrl-PgDn on this file.

See also: How Total commander chooses an archive plugin to handle the file.


Configuration - Language

Here you can set the plugin's language. In case the Lang folder is absent in the plugin's directory, the plugin's language is default English.

Language:
This dropdown list contains all availible languages with language files next to them. Language files are in plain text format, so if you know a better translation, you can replace the existing one using any text editor, eg. Notepad (language files are located in Lang subfolder of the plugin's folder).
Please send your version of the translation to the author, he will probably add it to the next version.

Language file information
All parameters in this section are optional, translation authors may fill them as their wish.

Version
Translation file version (it may help to find latest translation version).

Modified on
Last modification time of the translation file.

Authors
Translation author or authors.

Contacts
Author's email, or any other contact information.

Copyright
Translation copyrigths.

License
Language file's publication license.

Other information
Other information that author(s) considered necessary to add.

See more info at [image] Language file reference.


Configuration - Settings

Show console

Select console behavior mode:
Never - the console will never shown
When %C is specified - the console will shown only if %C parameter is defined for command
Always - the console will always shown

Exclude LIST calls

If checked the console will not shown on executing LIST commands

Minimize console to tray

Keep minimized console window in system tray area.

Automatically close/minimize console

Automatically close console window after running command is finished

Delay before opening console

Delay in seconds before popping up the console window.

Console height

Console window will contain not more than this amount of lines. If set to 0 (zero) or empty - no check for lines will be performed - all lines stays untouched.


Language file reference

A language file translates the plugin to the corresponding language. The file is a simple Windows-INI with the .lng extension. Language files must be in subfolder Lang of the plugin folder.

Default language for the plugin is English. The source file for localization is English.lng - use it as a reference for translation if You want to.

The selected language is stored in LanguageFile parameter of the MultiArc.ini file.

The .LNG file reference

All parameter values must be written in a single line (it's a restriction of the WIN API).

Authoring section contains information about translation Author(s). All parameters in this section are optional, but please set some of them anyway.

Author | Translation author(s)
Copyright | Copyright info
Version | Version of language file. Please set this parameter to make finding new versions of the language file easier
DateEdit | Last editing date
License | License information
OtherInfo | Other info, at Your will
ContactInfo | Contact info (email, web site). Please set this parameter for user support: questions on the translation, new versions tc

Lang section contains the translation itself, the language name and path to the corresponding help file.

Name | Language name. Format: LangNameInEnglish (LangNameInYourLang). Sample: Русский (Russian)
HelpFile | Help file name. File must be in the plugin folder. If the parameter is absent or empty, MultiArc.chm (English) is used

All number parameters are translations. Sample:

1=Save
2=Cancel