innounp, the Inno Setup Unpacker

Version 1.76 - Unicode

based on innounp version 0.50 by ariman
Supports Inno Setup versions 2.0.7 through 6.3.3

Inno Setup is a popular program for making software installations. Unfortunately, there is no official unpacker - the only method of getting the files out of the self-extracting executable is to run it. innounp is a console program written in Delphi to inspect Inno Setup archives and extract selected files. It has the following features:

Information about the program:

The source code is adapted to the current Delphi versions (Unicode strings are the native type since Delphi 2009).

Usage

Innounp is a console application, and it uses command-line options to find out what to do. For a more human-friendly interface the Inno Setup Unpacker - Windows GUI is recommended. Integration into batch scripts is possible for automation.

innounp [command] [options] <setup.exe or setup.0> [@filelist] [filemask ...]
Commands:
  (no)   display general information about the installation archive
  -v     verbosely list the files (with sizes and timestamps)
  -x     extract the files from the installation (to the current directory, also see -d)
  -e     extract files without paths
  -t     test files for integrity
  -l     show list of languages supported by the installation
  -i     show list of all supported Inno Setup versions      
Options:
  -b     batch (non-interactive) mode - will not prompt for password or disk changes
         will not assume Yes on queries (see below) 
  -q     do not indicate progress while extracting
  -m     process internal embedded files (such as license and uninstall.exe)
  -pPASS decrypt the installation with a password
  -dDIR  extract the files into DIR (can be absolute or relative path)
  -cDIR  specifies that DIR is the current directory in the installation
  -n     don't attempt to unpack new versions
  -fFILE same as -p but reads the password from FILE
  -a     process all copies of duplicate files
  -y     assume Yes on all queries (e.g. overwrite files) 
  -o     no colored console output  
  -h     do not display headline with program info  
  -u     use UTF-8 for console output instead of ANSI (Codepage 850)
Exit codes: 0 no errors
            1 version not supported
            2 corrupt or incompatible setup file
            3 other error

If an installation has ..setup.0 (it is made without using SetupLdr), run innounp on setup.0 instead of setup.exe.

To extract all files from a specific directory, use dirname\*.*, not just dirname.

By default all files are extracted to the current directory. Use -d to override this behavior. For example, -dUnpacked will create a directory named Unpacked inside the current directory and put the extracted files there.

The -c option is a little more tricky to explain. Suppose you opened an installation in a file manager and browsed to {app}\subdir\program.exe. Now if you copied program.exe to another location, the entire directory tree ({app}\subdir\) would be created and program.exe would be extracted there. -c notifies innounp that you are only interested in paths from the current directory and below, so that your file, program.exe, is extracted right where you intended to copy it, not several directory levels deeper. Note that in order to avoid confusion, files must still be specified by their full path names inside the installation.

Note that an installation can contain several identical files (possibly under different names). Inno Setup stores only one copy of such files, and by default innounp will also unpack one file. If you want to have all files that could ever be installed anywhere, regardless of how many identical files this may get you, -a option will do it.

If -m is specified, the file listing includes embedded\CompiledCode.bin which is the code made by the RemObjects Pascal Script compiler.

What's new / History

1.76 (2024-11-05)

1.75 (2024-11-01)

1.74 (2024-10-30)

1.73 (2024-10-09)

1.72 (2024-07-30)

1.71 (2024-06-23)

1.70 (2024-06-23)

1.67 (2024-01-10)

1.66 (2023-08-11)

1.64 (2022-11-29)

1.63 (2022-06-14)

1.61 (2021-10-15)

0.50 (2020-12-18)

0.49 (2019-05-09)

0.48 (2019-01-25)

0.47 (2018-07-02)

0.46 (2016-04-11)

0.45 (2015-12-31)

0.44 (2015-11-24)

0.43 (2015-07-18)

0.42 (2015-05-27)

0.41 (2015-03-18)

0.40 (2013-12-20)

0.39 (2013-07-12)

0.38 (2013-02-01)

0.37 (2012-06-02)

0.36 (2011-06-01)

0.35 (2010-10-01)

0.34 (2010-09-16)

0.33 (2010-07-05)

0.32 (2010-06-14)

0.31 (2010-04-19)

0.30 (2010-04-12)

0.29 (2010-02-19)

0.28 (2010-01-14)

0.27 (2009-12-04)

0.26 (2009-11-30)

0.25 (2009-11-26)

0.24 (2009-11-20)

0.23 (2009-09-25)

0.22 (2009-08-24)

0.21 (2009-04-24)

0.20 (2008-05-23)

0.19 (2007-02-23)

0.18 (2006-11-23)

0.17 (2005-08-31)

0.16 (2005-04-30)

0.15 (2005-03-08)

0.14 (2004-10-14)

0.13 (2004-08-26)

0.12 (2004-07-28)

0.11 (2004-05-04)

0.10 (2004-04-26)

0.09 (2004-04-22)

0.08 (2004-04-14)

0.07 (2004-03-16)

0.06 (2004-03-11)

0.05 (2004-03-09)

0.04 (2004-02-27)

Copyrights and licensing

© 2004-2019 QuickeneR, 2009-2020 Ariman
This program is licensed under the terms of the GNU General Public License (GPL). A copy of the license is included with the source files.
If you distribute innounp on the WWW, please put a link to its home page, http://innounp.sourceforge.net

Converted to Delphi 10 (Unicode), J. Rathlev 2022 - Versions 1.xx  (Web site)

Over 90% of code is ripped from Inno Setup which is Copyright © 1997-2024 Jordan Russell. All rights reserved.
Portions © 2000-2024 Martijn Laan. All rights reserved.
See http://www.jrsoftware.org for details.

Contains zlib code, © 1995-2005 Jean-loup Gailly and Mark Adler.

Contains bzip2 code, © 1996-2009 Julian R Seward. All rights reserved.

Contains LZMA code, © 1999-2009 Igor Pavlov.


Innerfuse Pascal Script is © 2000-2004 by Carlo Kok, Innerfuse.

StripReloc is Copyright © 1999-2005 Jordan Russell, www.jrsoftware.org

Compiled with Embarcadero Delphi 10 Seattle ®.


Provided on GitHub