Skip to content

a-detiste/innoextract

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

innoextract - A tool to unpack installers created by Inno Setup

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

innoextract is available under the ZLIB license - see the LICENSE file.

See the website for Linux packages.

Contact

Website

Author: Daniel Scharrer

Dependencies

  • Boost 1.37 or newer
  • liblzma from xz-utils (optional)
  • iconv (either as part of the system libc, as is the case with glibc and uClibc, or as a separate libiconv)

For Boost you will need the headers as well as the iostreams, filesystem, date_time, system and program_options libraries. Older Boost version may work but are not actively supported. The boost iostreams library needs to be build with zlib and bzip2 support.

While innoextract can be built without liblzma by manually setting -DUSE_LZMA=OFF, it is highly recommended and you won't be able to extract most installers created by newer Inno Setup versions without it.

To build innoextract you will also need CMake 2.8 and a working C++ compiler, as well as the development headers for liblzma and boost.

See the Website for operating system-specific instructions.

Compile and install

To compile innoextract, run:

$ mkdir -p build && cd build && cmake ..
$ make

To install the binaries system-wide, run as root:

# make install

Build options:

Option Default Description
USE_LZMA ON Use liblzma.
WITH_CONV not set The charset conversion library to use. Valid values are iconv, win32 and builtin^1. If not set, a library appropriate for the target platform will be chosen.
ENABLE_BUILTIN_CONV ON Build internal Windows-1252 and UTF-16LE to UTF-18 charset conversion routines. These might be used even if WITH_CONV is not set to builtin.
CMAKE_BUILD_TYPE Release Set to Debug to enable debug output.
DEBUG OFF^2 Enable debug output and runtime checks.
DEBUG_EXTRA OFF Expensive debug options.
SET_WARNING_FLAGS ON Adjust compiler warning flags. This should not affect the produced binaries but is useful to catch potential problems.
SET_OPTIMIZATION_FLAGS ON Adjust compiler optimization flags. For non-debug builds the only thing this does is instruct the linker to only link against libraries that are actually needed.
USE_CXX11 ON Try to compile in C++11 mode if available.
USE_STATIC_LIBS OFF^3 Turns on static linking for all libraries, including -static-libgcc and -static-libstdc++. You can also use the individual options below:
LZMA_USE_STATIC_LIBS OFF^4 Statically link liblzma.
Boost_USE_STATIC_LIBS OFF^4 Statically link Boost. See also FindBoost.cmake
ZLIB_USE_STATIC_LIBS OFF^4 Statically link libz. (used via Boost)
BZip2_USE_STATIC_LIBS OFF^4 Statically link libbz2. (used via Boost)
iconv_USE_STATIC_LIBS OFF^4 Statically link libiconv.
  1. The builtin charset conversion only supports Windows-1252 and UTF-16LE. This is normally enough for filenames, but custom message strings (which can be included in filenames) may use arbitrary encodings.
  2. Enabled automatically if CMAKE_BUILD_TYPE is set to Debug.
  3. Under Windows, the default is ON.
  4. Default is ON if USE_STATIC_LIBS is enabled.

Install options:

Option Default Description
CMAKE_INSTALL_PREFIX /usr/local Where to install innoextract.
CMAKE_INSTALL_BINDIR bin Location for binaries (relative to prefix).
CMAKE_INSTALL_DATAROOTDIR share Location for data files (relative to prefix).
CMAKE_INSTALL_MANDIR ${DATAROOTDIR}/man Location for man pages (relative to prefix).

Set options by passing -D<option>=<value> to cmake.

Run

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

Limitations

  • innoextract currently 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.

  • innoextract does 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.

A perhaps more complete, but Windows-only, tool to extract Inno Setup files is innounp.

Extracting Windows installer executables created by programs other than Inno Setup is out of the scope of this project. Some of these can be unpacked by the following programs:

Disclaimer

This project is in no way associated with Inno Setup or www.jrsoftware.org.

About

A tool to unpack installers created by Inno Setup

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 88.8%
  • CMake 11.2%