innounp, the Inno Setup Unpacker
Version 0.10
Supports Inno Setup versions 3.0.0-beta through 4.2.1

Inno Setup is a popular program for making software installations. Unfortunately, it is one way - once made, there is no official method of getting the files out of the self-extracting executable other than running it. One piece of software that addresses this issue is Sergei Wanin's InstallExplorer, a plug-in for the FAR Manager that unpacks several types of installations, including Inno Setup (IS). Actually, innounp was made during the period when InstallExplorer was not updated, and was meant to replace it. Now that a new version is out, innounp still has some unique features:

If you want to report a bug, request a feature, or discuss anything else related to the program, please write to the forum.

Both the source and the executable packages are compressed with WinRar. While the full-featured packer is shareware, the UnRar utility that can only extract files is free. And there are lots of free third-party programs that unpack rar just fine, e.g. 7-Zip.

As a bonus, a simple unpacker for Setup Factory installations is available on the download page.

Usage

Innounp is a console application and it uses command-line options to find out what to do. For a more user-friendly interface using FAR or Total Commander as a front-end see the MultiArc section below.

innounp [command] [options] <setup.exe or setup.0> [@filelist] [filemask ...]
Commands:
  -i     show miscellaneous non-file information (default)
  -v     verbosely list the files (with sizes and timestamps)
  -x     extract the files from the installation to the current directory
  -e     extract files without paths
  -cFILE writes the compiled Pascal Script code to FILE
Options:
  -q     do not indicate progress while extracting
  -m     extract internal embedded files (such as license or uninstall.exe)

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.

The output of the -c command is the code made by the Innerfuse Pascal Script compiler. It is possible to disassemble it using the ifps3_disasm.rar package on the download page. The result is not very readable though since it uses the basic 'disassembler' from IFPS3. Anyone wants to write a decompiler?

How to report bugs

OK, I know innounp is far from being perfect, but it is my intention to make it usable. User feedback is a great way to achieve this. Here's what you should do if you find a bug and want it fixed.

Tell me what's wrong with innounp. If you encountered incorrect behaviour, say what you think it should do and what it actually does. If it crashed or gave an error message, say what did that - innounp, Windows, FAR, etc, and include the details.

Describe the exact steps necessary to reproduce the bug. Say what are the preconditions. Is the bug specific to some system settings? To a setup file you have? (include the problem part of the installation script or a link to the compiled setup, if it is small enough) To an IS version? To something else? Or does the bug occur regardless of these things?

Once you have the bug report ready, post it to the forum. Remember, if I can't reproduce the bug using the description you gave, the chances that it will be fixed fall dramatically.

If the above guidelines were not obvious for you, I suggest that you read the following articles.

How To Ask Questions The Smart Way by Eric Raymond.
How To Report Bugs Effectively by Simon Tatham.

What's new / History

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)

MultiArc settings

Unless you are a die-hard fan of command line, you may like the idea of working with IS installations like with conventional archives in a file manager. Right now two programs support this - FAR and Total Commander. Below are the instructions how to integrate innounp into each.

FAR

Copy innounp.exe to a directory in your PATH and edit your FAR\Plugins\MultiArc\Formats\Custom.ini file. There are two alternate settings differing in several aspects and each having its own pros and cons. Try the recommended setting first, if it does not work well for you, try the other setting or even combine them together.

Co-operation with InstallExplorer

If you have InstallExplorer installed, (or another plug-in that handles IS, but you will need to adjust the settings accordingly), you might want to let it process all the other types of installations but keep IS installations for innounp. FAR does not provide a means of customizing the plug-in call order, however, an empirical study has shown that it loads plug-ins and applies them to files in lexical order. So the solution is to rename InstallExplorer's dll file from 6InstExpl.dll to e.g. zInstExpl.dll (and restart FAR).

FAR: recommended setting

[InnoSetup4]
TypeName=InnoSetup4
ID=49 6E 6E 6F 20 53 65 74 75 70 20 53 65 74 75 70 20 44 61 74 61 20 28 34 2E
IDOnly=1
List="innounp -v -m"
Errorlevel=1
Start="^---------"
End="^---------"
Format0="zzzzzzzzzz  yyyy tt dd hh:mm  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract=innounp -x -m %%A {@%%LMQ}
ExtractWithoutPath=innounp -e -m %%A {@%%LMQ}
AllFilesMask="*.*"
[InnoSetup3]
TypeName=InnoSetup3
ID=49 6E 6E 6F 20 53 65 74 75 70 20 53 65 74 75 70 20 44 61 74 61 20 28 33 2E
IDOnly=1
List="innounp -v -m"
Errorlevel=1
Start="^---------"
End="^---------"
Format0="zzzzzzzzzz  yyyy tt dd hh:mm  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract=innounp -x -m %%A {@%%LMQ}
ExtractWithoutPath=innounp -e -m %%A {@%%LMQ}
AllFilesMask="*.*"

FAR: alternate setting

[InnoSetup]
TypeName=InnoSetup
ID=49 6E 6E 6F
IDPos=48
Extension=exe
List="innounp -v -m"
Errorlevel=1
Start="^---------"
End="^---------"
Format0="zzzzzzzzzz  yyyy tt dd hh:mm  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract=innounp -x -m %%A {@%%LMQ}
ExtractWithoutPath=innounp -e -m %%A {@%%LMQ}
AllFilesMask="*.*"

Total Commander

Configuration made up by Gnozal and Maxwish and posted on TC forum. Change the path below to where you have innounp installed and add this to you MultiArc.ini. Note that MultiArc is not included in the default TC installation, instead it is available as a separate download from Siarzhuk Zharski's web site. Refer to the help file for information on any additional configuration necessary.

[InnoSetup]
Description="InnoSetup"
Archiver=C:\PROGRAM FILES\WINCMD\WCXPlugin\MultiArc\innounp.exe
Extension=exe
ID=49 6E 6E 6F
IDPos=48
Start="^--------------------------------------"
End="^--------------------------------------"
Format0="zzzzzzzzzz  yyyy.tt.dd hh:mm  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
List=%P -v -m %AQ
Extract=%P -e -m %AQ @%LQ
ExtractWithPath=%P -x -m %AQ @%LQ
IgnoreErrors=0
SkipEmpty=0
SkipDirsInFileList=0
SearchForUglyDirs=0
BatchUnpack=1
UnixPath=0
AskMode=0
SkipLIST=1
Debug=0

Copyrights and licensing

Copyright © 2004 QuickeneR.
This program is licensed under the terms of GNU General Public License (GPL). See http://www.gnu.org/copyleft/gpl.html for details.
If you distribute innounp (e.g. by hosting it on your site) please put a link to its home page, http://innounp.sourceforge.net

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

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

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

Contains LZMA code, Copyright © 1999-2004 Igor Pavlov.


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

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


SourceForge.net