# innounp, the Inno Setup Unpacker

## Version 2.71.0 - Unicode

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

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:

- Innounp is open source and based on IS source. Therefore, it is more likely to support future IS versions.
- It recovers portions of the installation script (.iss file), including the registry changes and the compiled Innerfuse/RemObjects Pascal Script, if available.

#### Information about the program:

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

On this page:
  Usage | What's new/History | Copyrights and licensing
In other places:
  Sources | Issues | Homepage | Inno Unpack 0.50

## 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     verbose list of files (with sizes and timestamps)
      -s     short list of files (without 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
      -w     no UTF-8 conversion for install script (applies only to non-Unicode
             setups, use default encoding instead)
      -r     use Windows regional settings for separators and date/time format
      -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`.

#### File selection

If neither `filelist` nor `filemask` is specified, all files will be extracted while preserving the directory structure.

To extract all files from a specific directory, use `dirname\*` as file mask, not just `dirname`. If you do not want the files in the subdirectories to be extracted, you must specify `dirname\**` (double asterisks) as file mask.

`filelist` refers to a text file in which the files to be extracted are listed line by line.

#### Additional notes

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

2.71.0 (2026-08-20)

- Supports IS up to 7.1.0
- Added: new filemask wildcard "**" to extract files without scanning subdirectories
- Fixed: RebuildScript.GetVersionText did not recognize Windows Vista

2.70.1 (2026-07-21)

- Added support for IS up to 7.0.2 (x86 and x64)

2.67.11 (2026-07-13)

- Added: support for setup files with long paths
- Fixed: unpacking to long paths if a relative path is specified

2.67.10 (2026-07-11)

- Added: unpacking to long paths (> `MAX_PATH = 260`)
- Fixed: setups with DiskSliceSize > `MaxCardinal = 4294967295`

2.67.9 (2026-04-27)

- Changed: internal processing of images to resolve code page issues

2.67.8 (2026-04-14)

- Fixed: detection of png images

2.67.7 (2026-04-08)

- Fixed: unpacking of setups created before IS 5.1.5

2.67.6 (2026-03-28)

- Fixed: unpacking of setups larger than 2GB

2.67.5 (2026-03-22)

- Added: Number of supported languages on info page
- Fixed; Check for invalid codepages
- Fixed: Use of special codepages in non-Unicode versions

2.67.4 (2026-02-19)

- Improved display of required Windows version (MinVersion)
- Optional formatting of numbers and date/time with regional settings

2.67.3 (2026-02-01)

- Added to install rebuilt script: more settings from the setup section

2.67.2 (2026-01-17)

- Added: support of Dark Mode for WizardStyle in install script

2.67.1 (2026-01-14)

- Added: WizardStyle in install script

2.67.0 (2026-01-10)

- Added: support for IS up to 6.7.1
- Added: option -w to disable UTF-8 encoding of the script
- Fixed: UTF-8 encoding of the setup filename in the comment at the beginning of the script

2.66.2 (2026-01-03)

- Fixed: conversion of special characters to UTF-8 (e.g. 3 byte Chinese)
- Added: information about inno unpacker in rebuilt script
- Added: character conversion using associated code pages for custom messages in the rebuilt script extracted from setup files that do not support Unicode

2.66.1 (2025-11-21)

- Added: support for IS up to 6.6.1
- Changed: file date/time format to ISO 8601

2.66.0 (2025-11-13)

- Added: support for IS up to 6.6.0

2.65.4 (2025-11-09)

- New command -s: show a list of files without size and date

2.65.3 (2025-11-06)

- Display the default install directory in the general information
- Evaluation of custom messages in setup header added

2.65.2 (2025-09-11)

- Added support for IS up to 6.5.4

2.65.1 (2025-08-25)

- Unpacking of some older installers fixed

2.65.0 (2025-08-24)

- Added support for IS 6.5.1

2.64.6 (2025-07-31)

- Usage of root key HKA in setup script fixed

2.64.5 (2025-05-06)

- Renaming of files with comma character fixed

2.64.4 (2025-05-06)

- Added support for IS 6.4.3

2.64.3 (2025-02-27)

- Added support for IS 6.4.2

2.64.2 (2025-02-27)

- Reading a file list from command line fixed

2.64.1 (2025-02-02)

- Interactive entry of password fixed

2.64.0 (2025-01-19)

- New version numbering: The minor version number directly indicates the newest supported Inno Setup version
- Added support for IS 6.4

1.77 (2024-12-01)

- Modifications to support color display in Windows GUI for Inno Setup Unpacker

1.76 (2024-11-05)

- New command line option -h to suppress the headline on console output
- Colored console output (option -o to disable)
- Automatic switching of the console to UTF-8 (code page 65001) if required
- Encoding of standard console output fixed

1.75 (2024-11-01)

- New command line option -l to list all languages supported by the installation
- Changed command line option -i to list all supported Inno Setup versions (formerly -l)

1.74 (2024-10-30)

- UTF-8 encoding in section [`setup]` of install_script.iss fixed

1.73 (2024-10-09)

- UTF-8 encoding in section `[files]` of install_script.iss fixed

1.72 (2024-07-30)

- Fixes issue on extracting zip compressed setups (2.0 - 4.1)
- Enhanced output on extract and test command

1.71 (2024-06-23)

- Adaption of script building to IS 6.3

1.70 (2024-06-23)

- Added support for IS 6.3

1.67 (2024-01-10)

- Fixes issue on encrypted setups

1.66 (2023-08-11)

- Fixes issue on building the small image list in the script

1.64 (2022-11-29)

- Supports UTF8 coded filelists

1.63 (2022-06-14)

- Fixes several issues on extracting embedded files
- Fixes an issue on reading custom setups (Inno Setup version 5.4 and 5.5)

1.61 (2021-10-15)

- Source code revised to use Unicode strings (native string type since Delphi 2009)
- Fixed issue with option oaSkip
- New command line option -l to list all supported Inno Setup versions
- New command line option -u to use UTF-8 for console output
- Exit codes added
- Compiled with Delphi 10 Seattle
- Modifications by J. Rathlev (kontakt(a)rathlev-home.de)

0.50 (2020-12-18)

- Added support for IS 6.1.
- Fixed broken paths that originally were in UNC format.

0.49 (2019-05-09)

- Added support for IS 6.0.

0.48 (2019-01-25)

- Added support for IS 5.6.2.
- Fixed regression bug introduced by 5.6.0 support.

0.47 (2018-07-02)

- Added support for IS 5.6.0 and 5.6.1.
- Added AppId field to the script.

0.46 (2016-04-11)

- Increased max. LZMA dictionary size to 1Gb (implemented in IS 5.5.9).

0.45 (2015-12-31)

- Added support for IS 5.5.7.

0.44 (2015-11-24)

- Fixed infinite loop issue on some unsupported versions.
- Now -m flag does not affect reconstructed script content. It always contains all info.
- Minor changes.

0.43 (2015-07-18)

- Added support for IS 5.5.6.

0.42 (2015-05-27)

- Added support for IS 1.3.21 and 1.3.25.
- Experimental support for some custom IS versions.
- Fixed encoding of several entries in reconstructed script.

0.41 (2015-03-18)

- All slashes in file paths are converted to Windows style for consistency.
- Improved some error messages.
- Fixed several parameter names in [INI] section of the script.

0.40 (2013-12-20)

- Synchronized Description fields encoding in reconstructed script.
- Minor changes.

0.39 (2013-07-12)

- Fixed CRC32 calculation during unpacking (regression bug).

0.38 (2013-02-01)

- Added InstallDelete and UninstallDelete sections to reconstructed script.
- Added some more values to Setup section of reconstructed script.
- Several minor reconstructed script improvements.

0.37 (2012-06-02)

- Added support for IS 5.5.0.
- Fixed problem with reading of large files.
- Added some more values to reconstructed script.
- Improved FAR MultiArc settings.

0.36 (2011-06-01)

- Fixed support for IS 5.4.2.
- Fixed issue with '{' symbol in file names.

0.35 (2010-10-01)

- Added support for IS 5.2.5 (wasn't released, but such installers can be found).
- Added command to test files for integrity.

0.34 (2010-09-16)

- Less technical text in some error messages.
- Added dump of password hash to reconstructed script.
- Added some more values to reconstructed script.

0.33 (2010-07-05)

- Fixed encoding for custom messages in reconstructed script.
- Fixed several parameters in [LangOptions] section.
- Fixed language names in *.isl files for Unicode-based installers.
- Added support for legacy IS versions 2.0.8 - 2.0.10.

0.32 (2010-06-14)

- Added support for IS versions 5.3.10 (both ANSI and Unicode).
- Added support for INI section in reconstructed script.

0.31 (2010-04-19)

- Fixed issue with endless decompression loop on incompatible files.

0.30 (2010-04-12)

- Fixed issue with password processing for Unicode versions.
- Added support for IS versions 5.3.9 (both ANSI and Unicode).
- Added support for LZMA2 compression, introduced in 5.3.9.

0.29 (2010-02-19)

- Added support for IS versions 5.3.8 (both ANSI and Unicode).

0.28 (2010-01-14)

- Added support for IS versions 5.3.7 (both ANSI and Unicode).
- Added support for legacy IS versions 2.0.11 - 2.0.17.
- Fixed renaming of duplicate files. If we do not use -a then don't append numbers to names
  (this switch does not affect different files with same name, only duplicates with same content).

0.27 (2009-12-04)

- Yet another tuning for file mask processing.
- Added overwrite prompt for files extraction (and option for auto-overwrite).
- Several tweaks to reconstructed script.

0.26 (2009-11-30)

- Added manifest resource to resolve Vista/Win7 UAC issue.
- Added restored %n formatter to custom messages.
- Added default OutputBaseFilename value if one from header is empty.

0.25 (2009-11-26)

- Added support fro [Dirs] section in reconstructed script.
- Moved version parameter in script to comment (since it is not original IS parameter).
- Fixed ArchitecturesInstallIn64BitMode and ArchitecturesAllowed flags in script.
- Fixed file mask processing in some cases.

0.24 (2009-11-20)

- Added support for IS versions 5.3.6 (both ANSI and Unicode).
- Added version information resource.
- Fixed extraction of multiple files with same name.

0.23 (2009-09-25)

- Added support for IS versions 5.3.5 (both ANSI and Unicode).
- Added Inno Setup version info to reconstructed install script.

0.22 (2009-08-24)

- Added support for Unicode versions.
- Added support for IS versions 5.3.0 - 5.3.4 (both ANSI and Unicode).
- Fixed rare issue with double backslashes in file path.

0.21 (2009-04-24)

- Supports legacy IS versions 2.0.18 - 2.0.19

0.20 (2008-05-23)

- Supports IS up to version 5.2.3
- Several bugs fixed.

0.19 (2007-02-23)

- Supports IS up to version 5.1.10
- Fixed wrong representation of Unicode characters in LanguageName.
- Another fix to the handling of duplicate file names.
- New option `-a` to extract all copies of duplicate files.

0.18 (2006-11-23)

- The reconstructed script now includes the [Types], [CustomMessages], and [Languages] sections.
- ROPS disassembler updated to support the latest build of ROPS.
- New option `-f` to read the password from file. This way it can include any special characters.
  Be sure to save the file in the correct character encoding as no translations are applied.
- Fixed the bug that caused the file timestamps to be inconsistently reported and applied (UTC vs. local).
- Updated the decompression libraries: zlib to version 1.2.3, bzip2 to version 1.03, and LZMA to version 4.43 (optimized for speed).

0.17 (2005-08-31)

- Supports IS up to version 5.1.5.
- Supports Martijn Laan's My Inno Setup Extensions 3.0.6.1 (by request).
- The `Types` parameter is now space-separated, as required by the IS script specification.

0.16 (2005-04-30)

- Supports IS up to 5.1.2-beta.
- Innounp will try to unpack new versions of IS to handle the cases when the binary format is compatible with one of the previous versions. Use `-n` to disable this attempt.

0.15 (2005-03-08)

- Supports IS up to 5.1.0-beta.
- The old bug that prevented innounp from working properly with {reg:...} constants and the like has got another fix.
- Preliminary support for the 64-bit extensions that appeared in IS 5.1.0.

0.14 (2004-10-14)

- Supports IS up to 5.1.4-beta.
- It is now possible to specify the destination directory to extract files into using the `-d` option. This directory will be created if necessary.
- New option `-c` specifies the current directory inside an installation and prevents the creation of the upper-level directories. MultiArc settings are updated accordingly.
- The old `-c` command is removed. To get the compiled Pascal script, use `-m` and extract it like a normal file.

0.13 (2004-08-26)

- Supports IS up to 5.1.3-beta.
- Supports the Components and Tasks sections.

0.12 (2004-07-28)

- Supports IS up to 5.1.0-beta.
- Improved processing of big installations with many files.
- Innounp now supports a certain level of user interaction - it prompts the user for password and disk changes as necessary. To switch this functionality off (e.g. in batch mode), use the `-b` option.
- If no command is specified, innounp displays a brief summary of the specified installation. The old `-i` command is removed. To get the setup script, extract it like a normal file.

0.11 (2004-05-04)

- Supports IS 4.2.2.
- Supports ArcFour encryption. Use the `-p` switch to specify a password if files are encrypted

0.10 (2004-04-26)

- Fixed (again): filenames containing invalid characters could not be specified on the command line or in a list file.

0.09 (2004-04-22)

- Fixed (again): invalid characters in filenames (such as ':' and '|') made innounp crash.
- Updated TC MultiArc settings.

0.08 (2004-04-14)

- Added support for IS versions up to 4.2.1.
- Added MultiArc settings for Total Commander (thanks to Gnozal).
- Fixed a bug in MultiArc settings that prevented shells from displaying file dates and times (thanks to Maxim Ryazanov).
- The reconstructed setup script (`.iss`) is now included together with the 'normal' files. Using `-m` option it's possible to view/extract other internal files in the same way.

0.07 (2004-03-16)

- Multiple files with the same name are not overwritten now, instead they are appended with numbers.
- `-c` command extracts the compiled Innerfuse Pascal Script code to a file. It can then be 'disassembled' with a separate tool. Get one on the download page.
- The output of `-i` command now looks more like `.iss` script. More data is included.

0.06 (2004-03-11)

- Added support for IS versions 3.0.0 - 4.0.0.
- Supports installations that were not packaged into a single exe using SetupLdr (these can be identified by the presence of `setup.0` which is appended to `setup.exe` in packaged installations).
- `-i` command displays registry changes made by an installation.
- Supports (displays and reads from filelists) filenames with national characters (single-byte character encodings only, Unicode/MBCS was not tested). The correct code page must be set in Windows for this function to work properly.
- [fix] File dates and times were not set during extraction.

0.05 (2004-03-09)

- Improved batch processing. Now it's possible to browse and extract IS installations in FAR using the supplied settings for the standard MultiArc plug-in.
- Removed `isbunzip.dll`. Bzip2 library is linked statically.

0.04 (2004-02-27)

- Initial release. Supports IS versions 4.0.1 - 4.1.8.

## Copyrights and licensing

© 2004-2019 QuickeneR, 2009-2020 Ariman, 2020 - 2026 J. Rathlev
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 / 2.xx (Web site)

Over 90% of code is ripped from Inno Setup which is Copyright © 1997-2026 Jordan Russell. All rights reserved.
Portions © 2000-2026 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.

Compiled with Embarcadero Delphi 10 Seattle ®.

Provided on GitHub