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
       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-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 unspeci-
	      fied encoding. By	default, innoextract will guess	 the  encoding
	      from  the	 installer's  language	list,  falling	back  to  Win-
	      dows-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 lo-
	      cale  and	always use UTF-8 as the	filesystem and standard	output
	      encoding - the --codepage	option only changes the	 input	encod-
	      ing.  However,  using  codepage number "65001" instructs innoex-
	      tract to assume all strings are already encoded as UTF-8 and  to
	      output them without conversion.

	      This option has no effect	with Unicode-enabled installers, which
	      always  use  UTF-16LE.  Invalid UTF-16 data is represented using
	      the WTF-8	encoding which is a straightforward extension of UTF-8
	      to represent 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 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 that would be	overwritten using  the	"over-
		     write"  action  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
		     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 com-
		     prised of the file's language, its	architecture, the com-
		     ponent it belongs 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	colli-
	      sion set (all  files  with  the  same  filename),	 "#"  (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	colli-
	      sion  set,  "@"  (without	quotes)	followed by the	language id is
	      appended to all files that are specific to a single language un-
	      less 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 col-
	      lision 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 file-
	      name is not yet unique, "$" (without  quotes)  followed  by  the
	      lowest  integer  (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  sup-
	      ports  shell escape codes	and enable or disable color output ac-
	      cordingly. 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 im-
	      mediately.

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

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

	      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 en-
	      abled  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 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 in-
	      staller. This is the  case  for  newer  multi-part  GOG.com  in-
	      stallers	where these .bin files are RAR archives, potential en-
	      crypted  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	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	 directories  are not created. Temporary files
	      created inside the directory are always removed.

	      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.

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

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

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

       --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 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 option) 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 hexadecimal value.

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

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

       --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
	      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, --password PASSWORD
	      Specifies	the password to	decrypt	encrypted files. The  password
	      is assumed to be encoded as UTF-8	and converted the internal en-
	      coding 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
	      --password-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 processing entirely	if the password	is incorrect.

       --password-file FILE
	      Load a password form the specified file. Only the	first line ex-
	      cluding 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.

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

	      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 processing entirely	if the password	is incorrect.

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

       --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  explic-
	      itly 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
	      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 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 --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 supported
	      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.

PATH CONSTANTS
       Paths in	Inno Setup installers can contain constants (variable or  code
       references)  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  dis-
       abling 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
       support 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 LI-
       CENSE 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+14.3.quarterly>

home | help