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 under non-windows systems without running the actual installer using Wine. innoextract currently supports installers created by Inno Setup 1.2.10 to 5.5.3.
Author: Daniel Scharrer (daniel@constexpr.org)
License: zlib/libpng
I originally created innoextract as a way to extract GOG.com installers and Arx Fatalis patches without relying on Wine (for the Arx Libertatis project). However, innoextract should be able to extract all installers that were created by Inno Setup. See the list of limitations below.
While developed on Linux, innoextract is meant to work with any C++03 / C++11 compiler, architecture and operating system supported by CMake, Boost, liblzma and iconv.
Announcements
innoextract 1.4 released
- Improved compatibility with Windows™ (MinGW and MSVC), Mac OS X and FreeBSD systems
- Fixed extracting very large installers with 32-bit builds
- Added support for preserving timestamps of extracted files (enabled by default)
- Added
--timestamps(-T) and--output-dir(-d) command-line options - Various bug fixes and tweaks
Download
The current version of innoextract is 1.4 (changelog):
-
innoextract Source Code
(mirror)
innoextract-1.4.tar.gz
148 KiB
MD5:601c7337184620df5ad38e4f389b1c6fsignature -
innoextract Windows Binaries
(mirror)
innoextract-1.4-windows-r1.zip
1.1 MiB
MD5:011a91f54b526bb1a51bdc4c71aca891signature
The files have been signed with this OpenPGP key (D7E1DEC9).
Older versions are available on SourceForge and here.
Mac OS X
There are no pre-builtinnoextract binaries for OS X.You can build it yourself by downloading the source code and then following these instructions.
Linux and FreeBSD Packages
Here is a list of innoextract packages for various Linux distributions: (installation instructions)
| Distribution | Repository | Package | Version | Type | |
|---|---|---|---|---|---|
| Arch Linux | Arch User Repository | innoextract | 1.4 | user | Instructions |
| Chakra | Chakra Community Repo | innoextract | 1.4 | user | Instructions |
| Debian stable (6, 7) | home:dscharrer on OBS | innoextract | 1.4 | own | Instructions |
| Debian 7 (wheezy) | main | innoextract | 1.2+git20120504 | distro | Instructions |
| Debian testing (jessie) | main | innoextract | 1.3 | distro | Instructions |
| Debian unstable (sid) | main | innoextract | 1.3 | distro | Instructions |
| Fedora | home:dscharrer on OBS | innoextract | 1.4 | own | Instructions |
| Gentoo Linux | portage tree | innoextract | 1.4 | distro | Instructions |
| Mandriva | home:dscharrer on OBS | innoextract | 1.4 | own | Instructions |
| openSUSE | home:dscharrer on OBS | innoextract | 1.4 | own | Instructions |
| openSUSE | Archiving on OBS | innoextract | 1.4 | distro | Instructions |
| Slackware | ~alien | innoextract | 1.3 | user | |
| Slackware 14.0 | slackbuilds.org | innoextract | 1.4 | user | |
| Ubuntu | ppa:arx/release | innoextract | 1.4 | own | Instructions |
| Ubuntu 12.10 (quantal) | universe | innoextract | 1.2+git20120504 | distro | Instructions |
| Ubuntu 13.04 (raring) | universe | innoextract | 1.3 | distro | Instructions |
If your favorite distribution is not listed here, first check the appropriate repositories - maybe 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.
For distributions where no package is available, you can either build from source code or use the following pre-build binaries. While these should work on any modern x86 or amd64 Linux distribution, using a distribution-specific package, if available, is recommended for better integration with the rest of the system.
-
innoextract Linux Binaries
(mirror)
innoextract-1.4-linux.tar.xz
893 KiB
MD5:9010fbba0b1d279bed6f78056ac8d456signature -
innoextract FreeBSD Binaries
(mirror)
innoextract-1.4-freebsd.tar.xz
1.2 MiB
MD5:a4beddc4bf38be6a9583987595afaf1dsignature
The above Linux package also includes an experimental ARMELv6j+harfloat+vfp binary - this should for example run on the Raspberry Pi.
The FreeBSD binaries are compiled for FreeBSD 9.1, but will likely also work on older versions.
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
New Inno Setup versions often change the data format, so innoextract cannot provide good future compatibility. The following table lists the compatible versions:
| Inno Setup 5.5.0 to 5.5.3 | innoextract 1.3+ |
| Inno Setup 1.2.10 to 5.4.3 | innoextract 1.0+ |
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 number in the filename.
Limitations
innoextractcurrently only supports extracting all the data. There is no support for extracting individual files or components and limited support for extracting language-specific files.- Included scripts and checks are not executed.
- The mapping from Inno Setup variables like the application directory to subdirectories is hard-coded.
innoextractdoes not check if an installer includes multiple files with the same name and will continually overwrite the destination file when extracting.- Names for data slice/disk files in multi-file installers must follow the standard naming scheme.
- Encrypted installers are not supported.
Also see the list of planned/requested enhancements on the issue tracker.
A perhaps more complete, but Windows-only, tool to extract Inno Setup files is innounp.
Development Information
- source code repository on GitHub
- ohloh source code statistics
- build logs
- Travis CI page
- developer documentation
- launchpad project
Related Projects
- Inno Setup
innounp- alternative toinnoextractfor Windowsuninno- portable unpacking tool for Inno Setup installers, written in Perlcabextract- unpacker for .cab files used in Microsoft installersunshield- unpacker for .cab files used in InstallShield installers