Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
innoextract(1)		     General Commands Manual		  innoextract(1)

NAME
     innoextract - tool to extract installers created by Inno Setup

SYNOPSIS
     innoextract [--extract] [--lowercase] [options] [--] installers ...

     innoextract --list [options] [--] installers ...

     innoextract --test [options] [--] installers ...

DESCRIPTION
     innoextract  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 exe-
     cutable (.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 re-
     fer 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 in-
	    staller.

	    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.

	    On non-Windows platforms, innoextract will ignore the system  locale
	    and  always use UTF-8 as the filesystem and standard output encoding
	    - the --codepage option only changes the  input  encoding.	However,
	    using  codepage  number  "65001" instructs innoextract to assume all
	    strings are already encoded as UTF-8 and to output them without con-
	    version.

	    This option has no effect with Unicode-enabled installers, which al-
	    ways use UTF-16LE. Invalid UTF-16  data  is  represented  using  the
	    WTF-8 encoding which is a straightforward extension of UTF-8 to rep-
	    resent unpaired UTF-16 surrogate code units.

     --collisions ACTION
	    Inno  Setup  installers  can  contain  duplicate files with the same
	    name. This option tells innoextract what to do when  such  a  colli-
	    sions 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  installa-
		   tion. This is the default.

	    "rename"
		   Rename  files that would be overwritten using the "overwrite"
		   action by appending a suffix comprised  of  the  file's  lan-
		   guage, 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 architecture, the component it be-
		   longs to and/or a number to make  the  filename  unique.  The
		   complete  suffix  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 filename), "#"  (without  quotes)  fol-
	    lowed 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  lan-
	    guage  matches  the default language specified by the --default-lan-
	    guage. While the suffix is omitted for the default language, no num-
	    bered suffix is added in it's place unless needed to make the  file-
	    name unique.

	    3.	If  the architecture is not the same for all files in the colli-
	    sion set, "@32bit" or "@64bit" (without quotes) is appended  to  all
	    files that are specific to a single architecture.

	    4.	If no suffix was added by the previous steps, or if the filename
	    is not yet unique, "$" (without quotes) followed by the lowest inte-
	    ger (starting at 0) to make the filename unique is appended.

	    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  immedi-
	    ately.

	    The version printed using this option is the one stored in the setup
	    file  and  can differ from the version printed with other actions as
	    the stored data version is not always correct.

	    This option can be used to determine if a file is an Inno Setup  in-
	    staller without loading any compressed headers.

	    This option cannot be combined with any other action.

     --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 language. In
	    effect, --default-language behaves almost  like  --language,  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.

     --dump
	    Don't  convert Windows paths to UNIX paths and don't substitute con-
	    stants 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 list-
	    ing.

	    This  option  takes precedence over --include and --language: tempo-
	    rary 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  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  check-
	    sum  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  un-
	    known  Inno  Setup	data version by treating 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 check-
	    sum of the game ID (see the --gog-game-id option).

	    Extracting these RAR archives requires rar, unrar or lsar/unar  com-
	    mand-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 which can  be	specified  using
	    the  --output-dir  option. If the output directory does not exist it
	    will be created and then removed after testing is done.  Parent  di-
	    rectories are not created. Temporary files created inside the direc-
	    tory are always removed.

	    Note  that is option is geared towards GOG.com installers. Other in-
	    stallers may come be bundled with different  extraneous  .bin  which
	    this option might not be able to handle.

	    This  option  also	forces re-assembly of GOG Galaxy file parts. See
	    the --no-gog-galaxy option for details.

     --no-gog-galaxy
	    Some GOG.com installers contain files in GOG  Galaxy  format  (split
	    into  multiple parts that are individually 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  in-
	    staller. 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.

	    The  --gog-game-id action can be combined with --list, --test, --ex-
	    tract 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 successive  path
	    components	joined	by  the OS path separator (\ on Windows, / else-
	    where).

	    The expression is always matched against one or more full path  com-
	    ponents. 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.  Other-
	    wise, the expression is matched against any part of the path.

	    The  --include  option may be repeated in order allow files matching
	    against one of multiple patterns. If  --include  is  not  used,  all
	    files are processed.

     -i --info
	    This is a convenience option to enable all actions that print infor-
	    mation about the installer.

	    Scrips  should  not  rely  on the output format with this option and
	    should instead enable the individual actions instead.

	    Currently this option enables  --list-languages,  --gog-game-id  and
	    --show-password.

     --language LANG
	    Extract only language-independent files and files for the given lan-
	    guage. 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 anything.

	    This  action  also	enables  the  --list-sizes  action unless either
	    --quiet or --silent is specified.

	    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-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.

	    With  --silent the file checksum will be printed at the start of the
	    line (but after the file size if enabled with the  --list-sizes  op-
	    tion)  followed  by a space. Otherwise the checksum is printed after
	    the file name.

	    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.

	    Different files in the same installer can  have  different	checksum
	    types  if  GOG Galaxy file part reassembly is not disabled using the
	    --no-gog-galaxy option.

     --list-languages
	    List languages supported by the installer.

	    This option can be combined with --silent to print only the  identi-
	    fiers  of  the languages (one per line) followed by a space and then
	    the language name, without additional syntax that  would  make  con-
	    sumption by other scripts harder.

	    The  --list-languages  action  can	be combined with --list, --test,
	    --extract and/or --gog-game-id to display  the  available  languages
	    before  doing  anything  else.  If --silent and --list-languages are
	    combined with --list and/or --gog-game-id, the languages  list  will
	    be	terminated  with an empty line and will precede both the game ID
	    and files list.

     --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. Otherwise 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  ex-
	    tracting.

     -d, --output-dir DIR
	    Extract  all files into the given directory. By default, innoextract
	    will extract all files to the current directory.

	    If the specified directory does not exist, it will be created.  How-
	    ever, the parent directory must exist or extracting will fail.

     -P, --password PASSWORD
	    Specifies  the  password to decrypt encrypted files. The password is
	    assumed to be encoded as UTF-8 and converted the  internal	encoding
	    according used in the installer as needed.

	    Use  the  --password-file option to load the password from a file or
	    standard input instead. This option cannot be combined with  --pass-
	    word-file.

	    If	this  password	does  not  match  the checksum stored in the in-
	    staller, encrypted files will be skipped but unencrypted files  will
	    still  be  extracted.  Use the --check-password option to abort pro-
	    cessing entirely if the password is incorrect.

     --password-file FILE
	    Load a password form the specified file. Only the first line exclud-
	    ing the terminating carriage return and/or line break is used as the
	    password. The password is assumed to be encoded as	UTF-8  and  con-
	    verted  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.

	    Use the --password option  to  specify  the  password  on  the  com-
	    mand-line instead. This option cannot be combined with --password.

	    If	this  password	does  not  match  the checksum stored in the in-
	    staller, encrypted files will be skipped but unencrypted files  will
	    still  be  extracted.  Use the --check-password option to abort pro-
	    cessing entirely 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 accord-
	    ingly.  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  separated  by a space followed 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.

	    Use  the  --password  or  --password-file	option	 together   with
	    --check-password to check if a password matches this checksum.

     -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.

	    This option can be combined with --extract to abort on file checksum
	    errors.

     -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 vari-
	    able, 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 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 ver-
	    sions.

	    If combined with the --silent option, only	the  version  number  is
	    printed.  Otherwise,  the output will contain the name (innoextract)
	    followed by the version number on the first line,  and,  unless  the
	    --quiet  options is specified, the range of supported Inno Setup in-
	    staller 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.

PATH CONSTANTS
     Paths in Inno Setup installers can contain constants (variable or code ref-
     erences) that are expanded at install time. innoextract  expands  all  such
     constants to their name  and replaces unsafe characters with $. For example
     {app} is expanded to app while {code:Example} is expanded to code$Example.

     There  is currently no way to configure this expansion except for disabling
     it with the --dump option.

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  sup-
     port for filtering by name.

     Included scripts and checks are not executed.

     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.

     A website is available at https://constexpr.org/innoextract/.

     This program uses the excellent lzma/xz decompression  library  written  by
     Lasse Collin.

AUTHOR
     Daniel Scharrer (daniel@constexpr.org)

1.10-dev			      (TBD)			  innoextract(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=innoextract&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help