innoextract
A tool to unpack installers created by Inno Setup

About

Inno Setup is a tool to create installers for Microsoft Windows applications. innoextract allows to extract such installers without running the actual setup executable under Windows or using Wine. innoextract currently supports installers created by Inno Setup 1.2.10 to 6.2.2. (details)


License: zlib/libpng

In addition to standard Inno Setup installers, innoextract also supports some modified Inno Setup variants including Martijn Laan's My Inno Setup Extensions 1.3.10 to 3.0.6.1 as well as GOG.com's Inno Setup-based game installers. innoextract is able to unpack Wadjet Eye Games installers (to play with AGS), Arx Fatalis patches (for use with Arx Libertatis) as well as various other Inno Setup executables. See the list of limitations below.

While developed on Linux, innoextract is cross-platform and meant to work with any C++03 to C++17 compiler, architecture and operating system supported by CMake, Boost, liblzma and (optionally) iconv.

Announcements

innoextract 1.9 released

See the full changelog for more details.

Download

The current version of innoextract is 1.9 (changelog):

The files have been signed with this OpenPGP key (28555A66D7E1DEC9).
Windows binaries should work on XP or newer.
The Linux tarball includes x86, amd64 and ARMELv6j+hardfloat+vfp (Raspberry Pi compatible) binaries.
FreeBSD binaries are built against FreeBSD 9.1, but will likely also work on other versions.
All 32-bit binaries are compiled for i686 (Pentium Pro or newer). 64-bit binaries are included for some platforms.

Older versions are still available for download.

There is also a port of innoextract to Android by Alan Woolley.

macOS

There are no pre-built innoextract binaries for macOS (formerly OS X), but there are also MacPorts and Homebrew packages.
You can also build it yourself by downloading the source code and then following these instructions.

Packages

innoextract packages are available for the following operating systems and Linux distributions:

OS / Distribution Repository Package Version Type
Alpine Linux Alpine packages innoextract 1.9 distro
ALT Linux Sisyphus repository innoextract 1.9 distro
Android Termux innoextract 1.9 distro
AOSC OS AOSC packages innoextract 1.9 distro
Arch Linux extra innoextract 1.9 distro Instructions
Artix Linux galaxy innoextract 1.9 distro
Calculate Linux Portage innoextract 1.9 distro
Clear Linux sysadmin-basic innoextract 1.9 distro
Debian stable home:dscharrer on OBS innoextract 1.9 own Instructions
Debian 10 (buster) main innoextract 1.7 distro Instructions
Debian 11 (bullseye) main innoextract 1.8 distro Instructions
Debian 12 (bookworm) main innoextract 1.9 distro Instructions
Debian 13 (trixie) main innoextract 1.9 distro Instructions
Debian unstable (sid) main innoextract 1.9 distro Instructions
Deepin deepin innoextract 1.6 distro
Devuan 1 (Jessie) main innoextract 1.4 distro
Devuan 2 (ASCII) main innoextract 1.6 distro
Devuan 3 (Beowulf) main innoextract 1.7 distro
Devuan 4 (Chimaera) main innoextract 1.8 distro
Devuan 5 (Daedalus) main innoextract 1.9 distro
Devuan 6 (Excalibur) main innoextract 1.9 distro
Devuan Unstable (Ceres) main innoextract 1.9 distro
DragonFly BSD DPorts innoextract 1.9 distro
EL 7 (RHEL 7, CentOS 7, …) scx on Copr innoextract 1.7 user
EL 7 Fedora EPEL innoextract 1.8 distro Instructions
EL 8 Fedora EPEL innoextract 1.9 distro Instructions
EL 9 Fedora EPEL innoextract 1.9 distro Instructions
Fedora home:dscharrer on OBS innoextract 1.9 own Instructions
Fedora 38 fedora innoextract 1.9 distro Instructions
Fedora 39 fedora innoextract 1.9 distro Instructions
Fedora 40 fedora innoextract 1.9 distro Instructions
Fedora 41 fedora innoextract 1.9 distro Instructions
FreeBSD FreeBSD ports innoextract 1.9 distro Instructions
Funtoo nokit innoextract 1.7 distro
Gentoo arx-libertatis overlay innoextract 1.9 own Instructions
GuixSD GNU Guix innoextract 1.9 distro
Haiku HaikuPorts innoextract 1.9 distro
Kali Linux main innoextract 1.9 distro
LiGurOS liguros-repo innoextract 1.9 distro
Linuxbrew linuxbrew-core innoextract 1.9 distro
macOS Homebrew innoextract 1.9 distro Instructions
macOS MacPorts innoextract 1.9 distro
Mageia home:dscharrer on OBS innoextract 1.9 own Instructions
Mageia 6 Core innoextract 1.6 distro Instructions
Mageia 7 Core innoextract 1.7 distro Instructions
Mageia 8 Core innoextract 1.9 distro Instructions
Mageia 9 Core innoextract 1.9 distro Instructions
Mageia Cauldron Core innoextract 1.9 distro Instructions
Manjaro community innoextract 1.9 distro
NetBSD pkgsrc innoextract 1.9 distro Instructions
NixOS NixOS packages innoextract 1.9 distro Instructions
OpenBSD OpenBSD ports innoextract 1.9 distro Instructions
OpenMandriva OpenMandriva Association innoextract 1.9 distro
openSUSE home:dscharrer on OBS innoextract 1.9 own Instructions
openSUSE Archiving on OBS innoextract 1.9 distro Instructions
openSUSE Leap 42.1 official release innoextract 1.4 distro Instructions
openSUSE Leap 42.2 official release innoextract 1.6 distro Instructions
openSUSE Leap 42.3 official release innoextract 1.6 distro Instructions
openSUSE Leap 15.0 official release innoextract 1.6 distro Instructions
openSUSE Leap 15.1 official release innoextract 1.7 distro Instructions
openSUSE Leap 15.2 official release innoextract 1.7 distro Instructions
openSUSE Leap 15.5 Archiving innoextract 1.9 distro Instructions
openSUSE Leap 15.6 Archiving innoextract 1.9 distro Instructions
openSUSE Slowroll official release innoextract 1.9 distro Instructions
openSUSE Tumbleweed official release innoextract 1.9 distro Instructions
Parabola GNU/Linux-libre community innoextract 1.9 distro
Pardus main innoextract 1.8 distro
Parrot OS main innoextract 1.9 distro
PLD Linux packages innoextract 1.9 distro
PureOS main innoextract 1.9 distro
Raspbian stable home:dscharrer on OBS innoextract 1.9 own Instructions
Raspbian main innoextract 1.9 distro Instructions
Slackware 14.0 slackbuilds.org innoextract 1.4 user
Slackware 14.1 slackbuilds.org innoextract 1.5 user
Slackware 14.2 slackbuilds.org innoextract 1.9 user
Slackware 15.0 slackbuilds.org innoextract 1.9 user
Solus shannon innoextract 1.9 distro
Solus unstable innoextract 1.9 distro
Source Mage grimoire innoextract 1.8 distro
SUSE Linux Enterprise 15 SUSE Package Hub innoextract 1.9 distro
Trisquel main innoextract 1.8 distro
Ubuntu ppa:arx/release innoextract 1.9 own Instructions
Ubuntu 20.04 (focal) universe innoextract 1.8 distro Instructions
Ubuntu 22.04 (jammy) universe innoextract 1.8 distro Instructions
Ubuntu 23.10 (mantic) universe innoextract 1.9 distro Instructions
Ubuntu 24.04 (noble) universe innoextract 1.9 distro Instructions
Ubuntu 24.10 (oracular) universe innoextract 1.9 distro Instructions
Void Linux Void Packages innoextract 1.9 distro
Windows baulk innoextract 1.9 user
Windows Chocolatey innoextract 1.9 user Instructions
Windows MSYS2 innoextract 1.9 user
Windows Scoop innoextract 1.9 user
Windows Winget innoextract 1.9 distro
Windows Yet Another Cygwin Ports innoextract 1.9 user
Windows, Linux or macOS Conan innoextract 1.9 user

If your distribution is not listed, first check Repology's package version list as well as the appropriate repositories in case someone already created a package for your distribution. If you create your own packages or find one that isn't listed here, please let me know so that I can add them.

Usage

To extract a setup file to the current directory run:

$ innoextract <file>

A list of available options can be retrieved using

$ innoextract --help

Documentation is also available as a man page:

$ man 1 innoextract

Compatibility

innoextract cannot guarantee good forward compatibility as the Inno Setup data format changes frequently. The following table lists the supported versions:

innoextract 1.9 or newer Inno Setup 1.2.10 to 6.2.2
innoextract 1.8 Inno Setup 1.2.10 to 6.0.5
innoextract 1.7 Inno Setup 1.2.10* to 5.6.1
innoextract 1.6 Inno Setup 1.2.10* to 5.5.9
innoextract 1.5 Inno Setup 1.2.10* to 5.5.6
innoextract 1.3 to 1.4 Inno Setup 1.2.10* to 5.5.5
innoextract 1.0 to 1.2 Inno Setup 1.2.10* to 5.4.3
* innoextract 1.7 and older cannot extract installers created by Inno Setup 1.3.0 to 1.3.23. Support for older versions is reverse engineered from available installers and thus may be incomplete. Inno Setup versions older than 1.2.10 are not supported yet because I could not find any such installers. If you know of any such installers, please contact me.

GOG.com Installers

GOG.com installers with a 2.x.x version number on the download page or in the filename use Inno Setup 5.5.0 and cannot be extracted by innoextract 1.2 and older. Older installers use Inno Setup 5.2.3 and usually have no version in the filename.

Some GOG.com multi-part installers with version 2.1.x or higher use RAR archives (renamed to .bin) to store the game data. These files are not part of the Inno Setup installer. However, innoextract 1.5 or newer can extract them using the --gog option if either unrar or unar is installed.

Other newer GOG.com installers don't include the raw files directly but instead store them in GOG Galaxy format: split into small parts which are then individually compressed. These files are named after their MD5 hash and stored in the tmp directory, for example "tmp/ab/d7/abd72c0dddc45f2ce6098ce3a286066a". innoextract 1.7 or newer will automatically re-assemble these parts and extract the original files unless the --no-gog-galaxy option is used.

Some multi-part GOG.com installers use .bin slice files larger than 2 GiB - extracting these requires innoextract 1.8 or newer on 32-bit platforms. Older versions failed with a "bad chunk magic" error.

Limitations

Also see the list of planned/requested enhancements on the issue tracker.

Another (Windows-only) tool to extract Inno Setup files is innounp.

Development Information

Projects using innoextract