innoextract(1)innoextract(1)NAMEinnoextract - tool to extract installers created by Inno Setup
SYNOPSISinnoextract [--extract] [--lowercase] [options] [--] installers ...
innoextract--list [options] [--] installers ...
innoextract--test [options] [--] installers ...
DESCRIPTIONinnoextract is a tool that can extract installer executables created by
Inno Setup.
innoextract will extract files from installers specified on the command
line.
To extract a multi-part installer with external data files, only the
executable (.exe) file needs to be given as an argument to innoextract.
OPTIONS SUMMARY
Here is a short summary of the options available in innoextract. Please
refer to the detailed documentation below for a complete description.
Generic options:
-h --help Show supported options
-v --version Print version information
--license Show license information
Actions:
-t --test Only verify checksums, don't write anything
-e --extract Extract files (default action)
-l --list Only list files, don't write anything
--list-languages List languages supported by the installer
--gog-game-id Determine the GOG.com game ID for this installer
Modifiers:
--collisions ACTION How to handle filename collisions
--default-language Default language for renaming
--dump Dump contents without converting filenames
-L --lowercase Convert extracted filenames to lower-case
-T --timestamps TZ Timezone for file times or "local" or "none"
-d --output-dir DIR Extract files into the given directory
-g --gog Process additional archives from GOG.com installers
Filters:
-m --exclude-temp Don't extract temporary files
--language LANG Extract only files for this language
--language-only Only extract language-specific files
-I --include EXPR Extract only files that match this path
Display options:
-q --quiet Output less information
-s --silent Output only error/warning information
--no-warn-unused Don't warn on unused .bin files
-c --color[=ENABLE] Enable/disable color output
-p --progress[=ENABLE] Enable/disable the progress bar
OPTIONS-- Treat all arguments after this one as files, even if they begin
with a dash.
--collisions ACTION
Inno Setup installers can contain multiple files with the same
name. This option tells innoextract what to do when such a col‐
lisions is encountered. Valid actions are:
"overwrite" Extract only one of the colliding files. The
choice is done similar to how Inno Setup overwrites files during
installation. This is the default.
"rename" Rename files in the collision set by appending
"#component", "@language" and/or "$id" where component and lan‐
guage are the file's unique component and language and id is the
lowest number to make the filename unique. If the --default-lan‐
guage is specified, the "@language" component is omitted if it
matches the default language.
"error" Exit when a collision is detected.
--default-language LANG
Set a language as the default.
With --collisions=overwrite (the default) this will change the
choice of which file to keep to always prefer the given lan‐
guage. In effect, --default-language behaves almost like --lan‐
guage, except that files are extracted for all languages if they
have different names.
When using the --collisions=rename option, --default-language
chooses a language for which the files should keep the original
name if possible.
-c, --color[=ENABLE]
By default innoextract will try to detect if the terminal sup‐
ports shell escape codes and enable or disable color output
accordingly. Specifically, colors will be enabled if both stdout
and stderr point to a TTY and the TERM environment variable is
not set to "dumb". Pass 1 or true to --color to force color out‐
put. Pass 0 or false to never output color codes.
--dump Don't convert Windows paths to UNIX paths and don't substitute
variables in paths.
-m, --exclude-temp
Don't extract files that would have been deleted at the end of
the install process. Such files are marked with [temp] in the
file listing.
This option takes precedence over --include and --language: tem‐
porary files are never extracted when using the --exclude-temp,
even if they match the selected language or include expressions.
-e, --extract
Extract all files to the current directory. This action is
enabled by default, unless either --list or --extract is speci‐
fied. You may only specify one of --extract and --test.
-g, --gog
Try to process additional .bin files that have the same basename
as the setup but are not actually part of the Inno Setup in‐
staller. This is the case for newer multi-part GOG.com install‐
ers where these .bin files are RAR archives, potential encrypted
with the MD5 checksum of the game ID (see the --gog-game-id
option).
Extracting these RAR archives requires rar, unrar or lsar/unar
command-line utilities to be in the PATH.
The --list, --test, --extract and --output-dir options are
passed along to unrar/unar, but other options may be ignored for
the RAR files. For multi-part RAR archives, the --test requires
a writable output directory for temporary files.
Note that is option is geared towards GOG.com installers. Other
installers may come be bundled with different extraneous .bin
which this option might not be able to handle.
--gog-game-id
Determine the ID used by GOG.com for the game contained in this
installer. This will only work with Galaxy-ready GOG.com in‐
stallers.
This option can be combined with --silent to print only the game
ID without additional syntax that would make consumption by
other scripts harder.
The --gog-game-id action can be combined with --list, --test,
--extract and/or --list-languages. If --silent and --gog-game-id
are combined with --list and/or --list-languages, the game ID
(or an empty line) will be printed on it's own line before the
file list but after the language list.
For newer multi-part GOG.com installers the .bin files are not
part of the Inno Setup installer but instead are RAR archives.
Some of these RAR files are encrypted, with the password being
the MD5 checksum of the game ID:
innoextract--gog-game-id--silent setup_....exe | md5sum |
cut -d ' ' -f 1
-h, --help
Show a list of the supported options.
-I, --include EXPR
If this option is specified, innoextract will only process files
whose path matches EXPR. The expression can be either a single
path component (a file or directory name) or a series of succes‐
sive path components joined by the OS path separator (\ on Win‐
dows, / elsewhere).
The expression is always matched against one or more full path
components. Filtering by parts of filenames is currently not
supported. Matching is done case-insensitively.
EXPR may contain one leading path separator, in which case the
rest of the expression is matched against the start of the path.
Otherwise, the expression is matched against any part of the
path.
The --include option may be repeated in order allow files match‐
ing against one of multiple patterns. If --include is not used,
all files are processed.
--language LANG
Extract only language-independent files and files for the given
language. By default all files are extracted.
To also skip language-independent files, combine this option
with --language-only.
--language-only
Only extract files that are language-specific.
This option can be combined with --language to only extract the
files of a specific language.
--license
Show license information.
-l, --list
List files contained in the installer but don't extract any‐
thing.
This option can be combined with --silent to print only the
names of the contained files (one per line) without additional
syntax that would make consumption by other scripts harder.
The --list action can be combined with --test, --extract,
--list-languages and/or --gog-game-id to display the names of
the files as they are extracted even with --silent.
--list-languages
List languages supported by the installer.
This option can be combined with --silent to print only the
identifiers of the languages (one per line) followed by a space
and then the language name, without additional syntax that would
make consumption by other scripts harder.
The --list-languages action can be combined with --list, --test,
--extract and/or --gog-game-id to display the available lan‐
guages before doing anything else. If --silent and --list-lan‐
guages are combined with --list and/or --gog-game-id, the lan‐
guages list will be terminated with an empty line and will pre‐
cede both the game ID and files list.
-L, --lowercase
Convert filenames stored in the installer to lower-case before
extracting.
-d, --output-dir DIR
Extract all files into the given directory. By default, innoex‐
tract will extract all files to the current directory.
If the specified directory does not exist, it will be created.
However, the parent directory must exist or extracting will
fail.
-p, --progress[=ENABLE]
By default innoextract will try to detect if the terminal sup‐
ports shell escape codes and enable or disable progress bar out‐
put accordingly. Pass 1 or true to --progress to force progress
bar output. Pass 0 or false to never show a progress bar.
-q, --quiet
Less verbose output.
-s, --silent
Don't output anything except errors and warnings unless explic‐
itly requested.
This option can be combined with --list to print only the names
of the contained files (one per line) without additional syntax
that would make consumption by other scripts harder.
-t, --test
Test archive integrity but don't write any output files. You may
only specify one of --extract and --test.
-T, --timestamps TZ
Inno Setup installers can contain timestamps in both UTC and
'local' timezones.
The --timestamps option specifies what timezone should be used
to adjust these 'local' file times.
Valid values are those accepted by tzset in the TZ environment
variable, except with the direction of the time offset reversed:
both -T CET and -T GMT+1 will (when DST is in effect) give the
same result.
Besides timezones, two special values are accepted:
"none" Don't preserve file times for extracted files, both
for UTC and 'local' timestamps. The file times wil be left the
way the OS set them when creating the output files.
"local" Use the system timezone for 'local' timestamps. This
is the normal Inno Setup behavior, and can be used together with
the TZ environment variable.
The default value for this option is UTC, causing innoextract to
not adjust 'local' file times. File times marked as UTC in the
Inno Setup file will never be adjusted no matter what --time‐
stamps is set to.
-v, --version
Print the innoextract version number and supported Inno Setup
versions.
If combined with the --silent option, only the version number is
printed. Otherwise, the output will contain the name (innoex‐
tract) followed by the version number on the first line, and,
unless the --quiet options is specified, the range of suuported
Inno Setup installer versions on the second line.
--no-warn-unused
By default, innoextract will print a warning if it encounters
.bin files that look like they could be part of the setup but
are not used. This option disables that warning.
EXIT VALUES
0 Success
1 Syntax or usage error
2+ Broken or unsupported setup file, or input/output error
LIMITATIONS
There is no support for extracting individual components and limited
support for filtering by name.
Included scripts and checks are not executed.
The mapping from Inno Setup variables like the application directory to
subdirectories is hard-coded.
Names for data slice/disk files in multi-file installers must follow
the standard naming scheme.
Encrypted installers are not supported.
SEE ALSOcabextract(1), unar(1), unrar(1), unshield(1), tzset(3)BUGS
Please report bugs to http://innoextract.constexpr.org/issues.
CREDITSinnoextract is distributed under the zlib/libpng license. See the
LICENSE file for details.
A website is available at http://constexpr.org/innoextract/.
This program uses the excellent lzma/xz decompression library written
by Lasse Collin.
AUTHOR
Daniel Scharrer (daniel@constexpr.org)
1.5 2015-09-22 innoextract(1)