innoextract
innoextract
innoextract(1)
NAME
innoextract - tool to extract installers created by Inno Setup
SYNOPSIS
innoextract [--extract] [--lowercase] [options] [--] installers ...
DESCRIPTION
innoextract is a tool that can extract installer executables created by Inno
Setup.
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-sizes List file sizes
--list-checksums List file checksums
-i --info Print information about the installer
--list-languages List languages supported by the installer
--gog-game-id Determine the GOG.com game ID for this
installer
--show-password Show password check information
--check-password Abort if the password is incorrect
-V --data-version Only print the data version
Modifiers:
--codepage CODEPAGE Encoding for ANSI strings
--collisions ACTION How to handle duplicate files
--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
-P --password PASSWORD Password for encrypted files
--password-file FILE File to load password from
-g --gog Process additional archives from GOG.com
installers
--no-gog-galaxy Don't re-assemble GOG Galaxy file parts
-n --no-extract-unknown Don't extract unknown Inno Setup versions
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.
--check-password
Abort processing if the password provided using the --password or --
password-file option does not match
the checksum stored in the installer.
The password checksum used for this check can be retrieved using the
--show-password option.
--codepage CODEPAGE
Non-Unicode versions of Inno Setup store strings in an unspecified
encoding. By default, innoextract
will guess the encoding from the installer's language list, falling
back to Windows-1252. This option
can be used to override that guess by specifying a non-zero Windows
codepage number to use.
--collisions ACTION
Inno Setup installers can contain duplicate files with the same
name. This option tells innoextract
what to do when such a collisions 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 that would be overwritten using the "overwrite"
action by appending a suffix com‐
prised of the file's language, its architecture, the component
it belongs to and/or a number to
make the filename unique. The language suffix (if
applicable) is also appended to the default
file that would have been extracted with the "overwrite"
action.
"rename-all"
Rename all colliding files by appending a suffix comprised of
the file's language, its architec‐
ture, the component it belongs to and/or a number to make the
filename unique. The complete suf‐
fix is appended to both files that would have been overwritten
using the "overwrite" action and
to those that would have overwritten other files.
"error"
Exit when a collision is detected.
Rename rules:
1. If the component is not the same for all files in the collision
set (all files with the same file‐
name), "#" (without quotes) followed by the component id is appended
to all files that are specific to
a single component.
2. If the language is not the same for all files in the collision
set, "@" (without quotes) followed by
the language id is appended to all files that are specific to a
single language unless that language
matches the default language specified by the --default-language.
While the suffix is omitted for the
default language, no numbered suffix is added in it's place unless
needed to make the filename unique.
3. If the architecture is not the same for all files in the collision
set, "@32bit" or "@64bit" (with‐
out quotes) is appended to all files that are specific to a single
architecture.
With the "rename" action, steps 1 and 3 are only applied to files
that would have been overwritten by
the "overwrite" action while "rename-all" applies them to all files
in the collision set.
-c, --color[=ENABLE]
By default innoextract will try to detect if the terminal
supports shell escape codes and enable or
disable color output accordingly. Specifically, colors will be
enabled if both stdout and stderr point
to a TTY, the TERM environment variable is not set to "dumb" and
the NO_COLOR environment variable is
unset. Pass 1 or true to --color to force color output. Pass 0 or
false to never output color codes.
-V, --data-version
Print the Inno Setup data version of the installer and exit
immediately.
The version printed using this option is the one stored in the setup
file and can differ from the ver‐
sion printed with other actions as the stored data version is not
always correct.
--default-language LANG
Set a language as the default.
--dump Don't convert Windows paths to UNIX paths and don't substitute
constants in paths.
When combining --dump with --extract innoextract will not ensure that
the paths don't point outside the
destination directory. Use this option with caution when handling
untrusted files.
-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.
-e, --extract
Extract all files to the current directory. This action is enabled by
default, unless one or more of
the --list, --list-sizes, --list-checksums, --test, --list-languages,
--gog-game-id, --show-password or
--check-password actions are specified.
By default innoextract will continue after encountering file checksum
errors. The --extract option can
be combined with --test to abort on checksum errors.
-n, --no-extract-unknown
By default innoextract will try to extract installers with an unknown
Inno Setup data version by treat‐
ing it as the closest known version. This option tells innoextract to
abort instead.
-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 installer. This is the case for newer multi-part
GOG.com installers where these .bin
files are RAR archives, potential encrypted with the MD5 checksum of
the game ID (see the --gog-game-id
option).
This option also forces re-assembly of GOG Galaxy file parts. See
the --no-gog-galaxy option for de‐
tails.
--no-gog-galaxy
Some GOG.com installers contain files in GOG Galaxy format (split
into multiple parts that are individ‐
ually compressed) which are re-assembled using post-install scripts.
By default innoextract will try to
re-assemble such files if it detects a GOG.com installer. This option
disables that.
GOG.com installers are detected using the publisher and URL fields in
the setup headers. Use the --gog
option to force reassembly for all installers.
--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 installers.
This option can be combined with --silent to print only the game ID
without additional syntax that
would make consumption by other scripts harder.
For newer multi-part GOG.com installers the .bin files are not part
of the Inno Setup installer but in‐
stead are RAR archives. Some of these RAR files are encrypted, with
the password being the MD5 checksum
of the game ID:
-h, --help
Show a list of the supported options.
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.
-i --info
This is a convenience option to enable all actions that print
information about the installer.
Scrips should not rely on the output format with this option and
should instead enable the individual
actions instead.
--language LANG
Extract only language-independent files and files for the given
language. By default all files are ex‐
tracted.
--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 anything.
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.
--list-checksums
List checksums for files contained in the installer.
This option implies the --list action and can be combined with the --
list-sizes option to print both
the size and checksum for each file.
The checksum type can be one of Adler32, CRC32, MD5 or SHA-1 and
is printed in fron of the checksum
hash followed by a space. Adler32 and CRC32 checksums are printed as
"0x" followed by the 32-bit hexa‐
decimal value.
--list-languages
List languages supported by the installer.
--list-sizes
List uncompressed sizes for files contained in the installer.
This option implies the --list action and can be combined with
the --list-checksums option to print
both the size and checksum for each file.
With --silent the file size in bytes will be printed at the start of
the line followed by a space. Oth‐
erwise the size is printed after the file name in a human-friendly
format.
-L, --lowercase
Convert filenames stored in the installer to lower-case before
extracting.
--password-file FILE
Load a password form the specified file. Only the first line
excluding the terminating carriage return
and/or line break is used as the password. The password is assumed to
be encoded as UTF-8 and converted
the internal encoding according used in the installer as needed.
If the special file name "-" is used, the password will be read from
standard input.
If this password does not match the checksum stored in the installer,
encrypted files will be skipped
but unencrypted files will still be extracted. Use the --check-
password option to abort processing en‐
tirely if the password is incorrect.
-p, --progress[=ENABLE]
By default innoextract will try to detect if the terminal supports
shell escape codes and enable or
disable progress bar output 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.
--show-password
Show checksum $c and salt $s used for the password $p check as well
as encoding of the password. The
checksum is calculated from the salt concatenated with the password:
$c = hash($s . $p)
With the --silent option, the checksum name and hash is printed on
one line seperated by a space fol‐
lowed by the salt encoded as hex bytes and password encoding on
separate lines.
Checksum types can be CRC32, MD5 or SHA-1 although CRC32 is not used
in installers with encryption.
-s, --silent
Don't output anything except errors and warnings unless explicitly
requested and use a machine-readable
output format.
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.
"none" Don't preserve file times for extracted files, both for UTC
and 'local' timestamps. The file
times will 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 --timestamps is set
to.
-v, --version
Print the innoextract version number and supported Inno Setup
versions.
--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.
PATH CONSTANTS
Paths in Inno Setup installers can contain constants (variable or code
references) that are expanded at in‐
stall time. innoextract expands all such constants to their name and
replaces unsafe characters with $. For
exmaple {app} is expanded to app while {code:Example} is expanded to
code$Example.
EXIT VALUES
0 Success
1 Syntax or usage error
LIMITATIONS
There is no support for extracting individual components and limited support
for filtering by name.
The mapping from Inno Setup constants 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.
SEE ALSO
cabextract(1), unar(1), unrar(1), unshield(1), tzset(3)
BUGS
Please report bugs to https://innoextract.constexpr.org/issues.
CREDITS
innoextract is distributed under the zlib/libpng license. See the LICENSE
file for details.
AUTHOR
Daniel Scharrer ([email protected])
1.9 (2020-08-09)
innoextract(1)