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-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 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
           -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 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 comprised of the
                 file's language, 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,  the  component  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
          collision  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
          collision set, "@" (without quotes) followed by the language  id
          is appended to all files that are specific to a single component
          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  no  suffix  was  added  by the previous steps, or if the
          filename 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.

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

   -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 and the TERM environment  variable  is
          not  set  to  "dumb".  Pass  1 or true to --color to force color
          output. Pass 0 or false to never output color codes.

   --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:
          temporary   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
          specified. 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
          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).

          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
          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,
          --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
          successive path components joined by the OS path separator (\ on
          Windows, / 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
          matching  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
          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.

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

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

   -s, --silent
          Don't  output  anything  except  errors  and   warnings   unless
          explicitly 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
          --timestamps 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
          (innoextract)  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.

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

   Encrypted installers are not supported.

SEE ALSO

   cabextract(1), unar(1), unrar(1), unshield(1), tzset(3)

BUGS

   Please report bugs to http://innoextract.constexpr.org/issues.

CREDITS

   innoextract  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 ([email protected])



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.