Decompiler Installshield Installation
2021年11月27日Download here: http://gg.gg/x1z6r
*Help with OOOLLLD Installshield decompiler. I recieved an old (win 95 era) program I have wanted for a long time recently. It won’t install, and acts like there was a.
*InstallShield Program Files Folder Program 0409 ISDbg.chm (for the English version of InstallShield) or InstallShield Program Files Folder Program 0411 ISDbg.chm (for the Japanese version of InstallShield).
*Installshield Install Log
*Microsoft Installshield Download
*Decompiler Installshield Installation Tool
*Install Installshield Windows 10
*Decompiler Installshield Installation WindowsisDccAn installshield DecompilerAdvanced reversing 30 October 1998 by adq Courtesy of Fravia’s page of reverse engineering slightly edited by fravia+fra_00xx981030adq0010AD0T Well, well, well... a ’real’ reversing essay! Andrew shows us all here what’s like when you seriously work on an ’our tools’ project. You’ll be able to download isDcc either here or on Andrew’s main page. Installshield decompiling is developing into a full-fledged science, after NaTzGUL’s ’bahnbrechenden’ InstallSHIELD Script Cracking. That’s GOOD. In a sofware world where more and more processes are hidden or concealed from the users, the fact that (some) users are re-gaining control is a very positive development. Transparency and free knowledge are our (very strong) weapons, dark hyding and hideous concealing are the (very strong) weapons of our enemies... There is a crack, a crack in everything That’s how the light gets in... how true! Our toolsThere is a crack, a crack in everything That’s how the light gets in Rating ( )Beginner ( )Intermediate (X)Advanced ( )Expert
If there’s no ’compatibility mode’ (like in XP) to run the installer under, you can either try to fix the InstallShield script (’SETUP.INS’) or use a program to open any InstallShield archives to copy the files from there (but that can be a mess if the program req. Registry entries or registers DLLs and what not).
This is an overview of the main structure of isDcc. It describes how the main algorithms work, so you should have a good understanding of computer algorithm design. isDcc An installshield decompiler Written by adq
Introduction Like wisdec, isDcc allows decompilation of a compiled installshield script (.ins file) into source code (.rul file). Due to the nature of the original installshield compiler, the ’original’ source code cannot be recovered exactly, but compilable scripts are produced, providing the same version of the installshield compiler is used to recompile them.
Tools required GNU Emacs, and MS Visual C++ would be useful if you intend to recompile the thing.
Target’s URL/FTPhttp://www.tardis.ed.ac.uk/~adqhttp://www.installshield.com/
Program History v1.00 - Initial release
v1.01 - Couple of bugs fixed
Essay isDcc was written with the help of wisdec v1.0, by NaTzGUL/SiraX, see NaTzGUL’s InstallSHIELD Script Cracking. Wisdec is a masterful piece of work, which obviously involved reverse engineering the installshield compiler to discover the format of the compiled script files.
I used wisdec to explore the compiled files, changing scripts, recompiling them, and observing the differences reported by wisdec. It took a couple of evenings to divine the format of an installshield 2 file in this manner.
Here, I shall describe a couple of things about installshield files which are essential to understand the following:
*High level code structures: Some higher level code structures (e.g. FOR, WHILE) are transformed by the installshield compiler into lower level sequences, often involving lots of gotos.
*Functions: In the compiled files, functions are indicated by a special ’function start’ opcode, and a ’function end’ opcode.
*Function prototypes: In the header, there is a set of function prototypes describing each of the functions present in the file, indicating their parameter types, what type of function it is (e.g. a DLL function, or a script function), and it’s name if it is a DLL import function. Installshield scripts consist of a header, describing global features, for example function prototypes. The actual body of the script consists of a set of opcodes, describing the series of operations to take. Each opcode has some associated information after it (e.g. for a function call, you will find the parameters for the function call immediately after the opcode).
The first thing written was a parser for the header. This code is fairly simple: it reads values in from the file, processes them, and stores them in appropriate data structures.
However, the main script decoder is rather more complex. It involves three passes through the script code: The first pass actually reads the raw opcodes from the file, and transforms them into an internal structure describing the code. This is implemented as a massive table-driven algorithm. The table is keyed by opcode. Each entry contains a function pointer to a specific parser function, along with some extra information, such as the parameter count. For an ’installshield system function’, a generic decoder function is available, since they all have the same format. The main loop of this stage reads in an opcode, looks it up in the table, and executes the associated function there. This function takes care of the specific processing for that opcode, before returning to the main loop. This continues until the end of the file is encountered.
The second pass works out function/prototype pairings, and fixes local variable counts. Because of the way a compiled script works, it is only possible to work out which function prototype is associated with which function body after a call has been made to that function. This stage goes through the interpreted code, looking for function calls, and associating function bodies with prototypes when it finds one. It also works out which variables in the function are locals, and which are parameters, since, again, this is not possible until it is discovered which function prototype pairs with which function. Note that it doesn’t actually alter the code in the function to reflect this; it just works out which variables are which. Note that this means any function which is not called cannot be matched to it’s prototype, and therefore has to be discarded.
The third, and final pass, goes through the code again, this time transforming the code in function bodies to reflect whether a local or a parameter variable is being accessed, to simplify any later processing.
Now, we have a huge memory structure, representing the compiled file. The next step will be to optimise the code sequences, and recover more of the original structure, for example FOR loops, and IF/ELSE sequences. However, this part is still under development.
Finally, the memory structure is decoded into a .RUL file and output it. Installshield 5 brings a few changes. Some functions have had extra parameters added, necessitating special decoder functions for some installshield system functions. Also, user defined datatypes are possible, which changed the header slightly.
It has also had a large number of functions added to it. To find these, I examined the handy installshield documentation. (I even found some hidden features - see below)
Several functions have been removed from installshield 5, notably the CompressGet family. Installshield have completely revamped their method of installation, and have unfortunately decided to completely unsupport the previous method.
All this means that you cannot recompile an installshield 3 script with the installshield 5 compiler, and vice versa.Final Notes One of the main problems with the decompiler at the moment is that it cannot recover higher level code structures (e.g. FOR loops) from the sequence of GOTOs they are transformed into by the compiler. This means that if one of these structures is used in a function, we will end up with GOTOs in a function, which is not allowed by the installshield script compiler version 3. Hoever, the compiler for installshield version 5 does not check for this, so installshield 5 scripts are recompilable as they are at the moment.
Due to the fact that the code automatically discards unused functions, installshield scripts tend to halve in size when recompiled. For example, even if you only use one of the SdDialog functions, the compiler includes all of them in the compiled file.
Incidentally, I discovered a hidden feature of installshield scripts: the call statement. It seems you can have subroutines based on call/return as well as functions. I saw one script which used this feature, which prompted me to investigate further. I wonder why they don’t tell anyone about it, since it is still in the compiler.
Currently I am developing code the recover higher level code structures, so that installshield 3 scripts should soon be recompilable too.Ob DuhDoesn’t apply: we are reversing on our own and creating our own toolsYou are deep inside fravia’s page of reverse engineering, choose your way out:
Back to Advanced reversing -->homepagelinkssearch_forms+ORCstudents’ essaysacademy databasereality crackinghow to searchjavascript warstoolsanonymity academycocktailshttp://fravia.org/ideale.htm’>antismut CGI-scriptsmail_fravia+Is reverse engineering legal? 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.1.2. (details)
Author: DanielScharrer (daniel@constexpr.org) 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
*Added preliminary support for Inno Setup 6.1.0
*Added support for a modified Inno Setup 5.4.2 variant
*Fixed output directory being created for unsupported installers
*Fixed some safe non-ASCII characters being stripped from filenames
*Fixed handling of path separators in Japanese and Korean installers
*Fixed build with newer Boost versions
*Windows: Fixed heap corruption
*Windows: Fixed garbled output See the full changelog for more details. Installshield Install LogDownload
The current version of innoextract is 1.9 (changelog):
*innoextract Source Code(mirror)innoextract-1.9.tar.gz202 KiBMD5: 964f39bb3f8fd2313629e69ffd3dab9fsignature
*innoextract Windows Binaries(mirror)innoextract-1.9-windows.zip509 KiBMD5: 72d0d0dd874b6236eaa44411f4470ee1signature
*innoextract Linux Binaries(mirror)innoextract-1.9-linux.tar.xz888 KiBMD5: 33bdf359c62d4f88a51ae15048ea480esignature
*innoextract FreeBSD Binaries(mirror)innoextract-1.8-freebsd.tar.xz712 KiBMD5: 7e50020f771ce4b1827c1088c6c72a3fsignature
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 Microsoft Installshield Downloadinnoextract 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 / DistributionRepositoryPackageVersionTypeAlpine LinuxAlpine packagesinnoextract1.9distroALT LinuxSisyphus repositoryinnoextract1.9distroAOSC OSAOSC packagesinnoextract1.8distroArch Linuxcommunityinnoextract1.9distroInstructionsCalculate LinuxPortageinnoextract1.8distroChakraChakra Community Repoinnoextract1.4userInstructionsClear Linuxsysadmin-basicinnoextract1.8distroDebian stablehome:dscharrer on OBSinnoextract1.9ownInstructionsDebian 8 (jessie)maininnoextract1.4distroInstructionsDebian 9 (stretch)maininnoextract1.6distroInstructionsDebian 10 (buster)maininnoextract1.7distroInstructionsDebian testing (bullseye)maininnoextract1.8distroInstructionsDebian unstable (sid)maininnoextract1.8distroInstructionsDeepindeepininnoextract1.6distroDevuan 1 (Jessie)maininnoextract1.4distroDevuan 2 (ASCII)maininnoextract1.6distroDevuan 3 (Beowulf)maininnoextract1.7distroDevuan Testing (Chimaera)maininnoextract1.8distroDevuan Unstable (Ceres)maininnoextract1.8distroDragonFlyBSDDPortsinnoextract1.8distroEL 7 (RHEL 7, CentOS 7, …)scx on Coprinnoextract1.7userFedorahome:dscharrer on OBSinnoextract1.9ownInstructionsFedora 31fedorainnoextract1.8distroInstructionsFedora 32fedorainnoextract1.8distroInstructionsFreeBSDFreeBSD portsinnoextract1.8distroInstructionsFuntoonokitinnoextract1.7distroGentooarx-libertatis overlayinnoextract1.9ownInstructionsGuixSDGNU Guixinnoextract1.9distroHaikuHaikuPortsinnoextract1.8distroKali Linuxmaininnoextract1.8distroLinuxbrewlinuxbrew-coreinnoextract1.9distromacOSHomebrewinnoextract1.9distroInstructionsmacOSMacPortsinnoextract1.8distroMageiahome:dscharrer on OBSinnoextract1.9ownInstructionsMageia 6Coreinnoextract1.6distroInstructionsMageia 7Coreinnoextract1.7distroInstructionsMageia CauldronCoreinnoextract1.9distroInstructionsManjarocommunityinnoextract1.8distroNetBSDpkgsrcinnoextract1.9distroInstructionsNixOSNixOS packagesinnoextract1.9distroInstructionsOpenBSDOpenBSD portsinnoextract1.9distroInstructionsOpenMandrivaOpenMandriva Associationinnoextract1.9distroopenSUSEhome:dscharrer on OBSinnoextract1.9ownInstructionsopenSUSEArchiving on OBSinnoextract1.9distroInstructionsopenSUSE Leap 42.1official releaseinnoextract1.4distroInstructionsopenSUSE Leap 42.2official releaseinnoextract1.6distroInstructionsopenSUSE Leap 42.3official releaseinnoextract1.6distroInstructionsopenSUSE Leap 15.0official releaseinnoextract1.6distroInstructionsopenSUSE Leap 15.1official releaseinnoextract1.7distroInstructionsopenSUSE Leap 15.2official releaseinnoextract1.7distroInstructionsopenSUSE Tumbleweedofficial releaseinnoextract1.9distroInstructionsParabola GNU/Linux-librecommunityinnoextract1.9distroPardusmaininnoextract1.7distroParrot OSmaininnoextract1.8distroPLD Linuxpackagesinnoextract1.9distroPureOSmaininnoextract1.8distroRaspbian stablehome:dscharrer on OBSinnoextract1.9ownInstructionsRaspbianmaininnoextract1.8distroInstructionsSlackware 14.0slackbuilds.orginnoextract1.4userSlackware 14.1slackbuilds.orginnoextract1.5userSlackware 14.2slackbuilds.orginnoextract1.7userSolusshannoninnoextract1.9distroSolusunstableinnoextract1.9distroSource Magegrimoireinnoextract1.8distroSUSE Linux Enterprise 15SUSE Package Hubinnoextract1.7distroTrisquelmaininnoextract1.6distroUbuntuppa:arx/releaseinnoextract1.9ownInstructionsUbuntu 16.04 (xenial)universeinnoextract1.5distroInstructionsUbuntu 18.04 (bionic)universeinnoextract1.6distroInstructionsUbuntu 20.04 (focal)universeinnoextract1.8distroInstructionsUbuntu 20.10 (groovy)universeinnoextract1.8distroInstructionsUbuntu 21.04 (hirsute)universeinnoextract1.8distroInstructionsVoid LinuxVoid Packagesinnoextract1.9distroWindowsChocolateyinnoextract1.9userInstructionsWindowsMSYS2innoextract1.9userWindowsScoopinnoextract1.9userWindowsYet Another Cygwin Portsinnoextract1.9user
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 innoextractCompatibility
innoextract cannot guarantee good forward compatibility as the Inno Setup data format changes frequently. The following table lists the supported versions: innoextract 1.9or newerInno Setup 1.2.10 to 6.1.2innoextract 1.8Inno Setup 1.2.10 to 6.0.5innoextract 1.7Inno Setup 1.2.10* to 5.6.1innoextract 1.6Inno Setup 1.2.10* to 5.5.9innoextract 1.5Inno Setup 1.2.10* to 5.5.6innoextract 1.3 to 1.4Inno Setup 1.2.10* to 5.5.5innoextract 1.0 to 1.2Inno 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. GOG.com InstallersDecompiler Installshield Installation Tool
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
*There is no support for extracting individual components and limited support for filtering by name.
*Included scripts and checks are not executed.
*The mapping from Inno Setup constants like the application directory to subdirectories is hard-coded.
*Names for data slice/disk files in multi-file installers must follow the standard naming scheme.
Also see the list of planned/requested enhancements on the issue tracker.
Another (Windows-only) tool to extract Inno Setup files is innounp. Development InformationInstall Installshield Windows 10Projects using innoextractDecompiler Installshield Installation Windows
*Inno Setup Extractor for And
https://diarynote.indered.space
*Help with OOOLLLD Installshield decompiler. I recieved an old (win 95 era) program I have wanted for a long time recently. It won’t install, and acts like there was a.
*InstallShield Program Files Folder Program 0409 ISDbg.chm (for the English version of InstallShield) or InstallShield Program Files Folder Program 0411 ISDbg.chm (for the Japanese version of InstallShield).
*Installshield Install Log
*Microsoft Installshield Download
*Decompiler Installshield Installation Tool
*Install Installshield Windows 10
*Decompiler Installshield Installation WindowsisDccAn installshield DecompilerAdvanced reversing 30 October 1998 by adq Courtesy of Fravia’s page of reverse engineering slightly edited by fravia+fra_00xx981030adq0010AD0T Well, well, well... a ’real’ reversing essay! Andrew shows us all here what’s like when you seriously work on an ’our tools’ project. You’ll be able to download isDcc either here or on Andrew’s main page. Installshield decompiling is developing into a full-fledged science, after NaTzGUL’s ’bahnbrechenden’ InstallSHIELD Script Cracking. That’s GOOD. In a sofware world where more and more processes are hidden or concealed from the users, the fact that (some) users are re-gaining control is a very positive development. Transparency and free knowledge are our (very strong) weapons, dark hyding and hideous concealing are the (very strong) weapons of our enemies... There is a crack, a crack in everything That’s how the light gets in... how true! Our toolsThere is a crack, a crack in everything That’s how the light gets in Rating ( )Beginner ( )Intermediate (X)Advanced ( )Expert
If there’s no ’compatibility mode’ (like in XP) to run the installer under, you can either try to fix the InstallShield script (’SETUP.INS’) or use a program to open any InstallShield archives to copy the files from there (but that can be a mess if the program req. Registry entries or registers DLLs and what not).
This is an overview of the main structure of isDcc. It describes how the main algorithms work, so you should have a good understanding of computer algorithm design. isDcc An installshield decompiler Written by adq
Introduction Like wisdec, isDcc allows decompilation of a compiled installshield script (.ins file) into source code (.rul file). Due to the nature of the original installshield compiler, the ’original’ source code cannot be recovered exactly, but compilable scripts are produced, providing the same version of the installshield compiler is used to recompile them.
Tools required GNU Emacs, and MS Visual C++ would be useful if you intend to recompile the thing.
Target’s URL/FTPhttp://www.tardis.ed.ac.uk/~adqhttp://www.installshield.com/
Program History v1.00 - Initial release
v1.01 - Couple of bugs fixed
Essay isDcc was written with the help of wisdec v1.0, by NaTzGUL/SiraX, see NaTzGUL’s InstallSHIELD Script Cracking. Wisdec is a masterful piece of work, which obviously involved reverse engineering the installshield compiler to discover the format of the compiled script files.
I used wisdec to explore the compiled files, changing scripts, recompiling them, and observing the differences reported by wisdec. It took a couple of evenings to divine the format of an installshield 2 file in this manner.
Here, I shall describe a couple of things about installshield files which are essential to understand the following:
*High level code structures: Some higher level code structures (e.g. FOR, WHILE) are transformed by the installshield compiler into lower level sequences, often involving lots of gotos.
*Functions: In the compiled files, functions are indicated by a special ’function start’ opcode, and a ’function end’ opcode.
*Function prototypes: In the header, there is a set of function prototypes describing each of the functions present in the file, indicating their parameter types, what type of function it is (e.g. a DLL function, or a script function), and it’s name if it is a DLL import function. Installshield scripts consist of a header, describing global features, for example function prototypes. The actual body of the script consists of a set of opcodes, describing the series of operations to take. Each opcode has some associated information after it (e.g. for a function call, you will find the parameters for the function call immediately after the opcode).
The first thing written was a parser for the header. This code is fairly simple: it reads values in from the file, processes them, and stores them in appropriate data structures.
However, the main script decoder is rather more complex. It involves three passes through the script code: The first pass actually reads the raw opcodes from the file, and transforms them into an internal structure describing the code. This is implemented as a massive table-driven algorithm. The table is keyed by opcode. Each entry contains a function pointer to a specific parser function, along with some extra information, such as the parameter count. For an ’installshield system function’, a generic decoder function is available, since they all have the same format. The main loop of this stage reads in an opcode, looks it up in the table, and executes the associated function there. This function takes care of the specific processing for that opcode, before returning to the main loop. This continues until the end of the file is encountered.
The second pass works out function/prototype pairings, and fixes local variable counts. Because of the way a compiled script works, it is only possible to work out which function prototype is associated with which function body after a call has been made to that function. This stage goes through the interpreted code, looking for function calls, and associating function bodies with prototypes when it finds one. It also works out which variables in the function are locals, and which are parameters, since, again, this is not possible until it is discovered which function prototype pairs with which function. Note that it doesn’t actually alter the code in the function to reflect this; it just works out which variables are which. Note that this means any function which is not called cannot be matched to it’s prototype, and therefore has to be discarded.
The third, and final pass, goes through the code again, this time transforming the code in function bodies to reflect whether a local or a parameter variable is being accessed, to simplify any later processing.
Now, we have a huge memory structure, representing the compiled file. The next step will be to optimise the code sequences, and recover more of the original structure, for example FOR loops, and IF/ELSE sequences. However, this part is still under development.
Finally, the memory structure is decoded into a .RUL file and output it. Installshield 5 brings a few changes. Some functions have had extra parameters added, necessitating special decoder functions for some installshield system functions. Also, user defined datatypes are possible, which changed the header slightly.
It has also had a large number of functions added to it. To find these, I examined the handy installshield documentation. (I even found some hidden features - see below)
Several functions have been removed from installshield 5, notably the CompressGet family. Installshield have completely revamped their method of installation, and have unfortunately decided to completely unsupport the previous method.
All this means that you cannot recompile an installshield 3 script with the installshield 5 compiler, and vice versa.Final Notes One of the main problems with the decompiler at the moment is that it cannot recover higher level code structures (e.g. FOR loops) from the sequence of GOTOs they are transformed into by the compiler. This means that if one of these structures is used in a function, we will end up with GOTOs in a function, which is not allowed by the installshield script compiler version 3. Hoever, the compiler for installshield version 5 does not check for this, so installshield 5 scripts are recompilable as they are at the moment.
Due to the fact that the code automatically discards unused functions, installshield scripts tend to halve in size when recompiled. For example, even if you only use one of the SdDialog functions, the compiler includes all of them in the compiled file.
Incidentally, I discovered a hidden feature of installshield scripts: the call statement. It seems you can have subroutines based on call/return as well as functions. I saw one script which used this feature, which prompted me to investigate further. I wonder why they don’t tell anyone about it, since it is still in the compiler.
Currently I am developing code the recover higher level code structures, so that installshield 3 scripts should soon be recompilable too.Ob DuhDoesn’t apply: we are reversing on our own and creating our own toolsYou are deep inside fravia’s page of reverse engineering, choose your way out:
Back to Advanced reversing -->homepagelinkssearch_forms+ORCstudents’ essaysacademy databasereality crackinghow to searchjavascript warstoolsanonymity academycocktailshttp://fravia.org/ideale.htm’>antismut CGI-scriptsmail_fravia+Is reverse engineering legal? 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.1.2. (details)
Author: DanielScharrer (daniel@constexpr.org) 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
*Added preliminary support for Inno Setup 6.1.0
*Added support for a modified Inno Setup 5.4.2 variant
*Fixed output directory being created for unsupported installers
*Fixed some safe non-ASCII characters being stripped from filenames
*Fixed handling of path separators in Japanese and Korean installers
*Fixed build with newer Boost versions
*Windows: Fixed heap corruption
*Windows: Fixed garbled output See the full changelog for more details. Installshield Install LogDownload
The current version of innoextract is 1.9 (changelog):
*innoextract Source Code(mirror)innoextract-1.9.tar.gz202 KiBMD5: 964f39bb3f8fd2313629e69ffd3dab9fsignature
*innoextract Windows Binaries(mirror)innoextract-1.9-windows.zip509 KiBMD5: 72d0d0dd874b6236eaa44411f4470ee1signature
*innoextract Linux Binaries(mirror)innoextract-1.9-linux.tar.xz888 KiBMD5: 33bdf359c62d4f88a51ae15048ea480esignature
*innoextract FreeBSD Binaries(mirror)innoextract-1.8-freebsd.tar.xz712 KiBMD5: 7e50020f771ce4b1827c1088c6c72a3fsignature
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 Microsoft Installshield Downloadinnoextract 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 / DistributionRepositoryPackageVersionTypeAlpine LinuxAlpine packagesinnoextract1.9distroALT LinuxSisyphus repositoryinnoextract1.9distroAOSC OSAOSC packagesinnoextract1.8distroArch Linuxcommunityinnoextract1.9distroInstructionsCalculate LinuxPortageinnoextract1.8distroChakraChakra Community Repoinnoextract1.4userInstructionsClear Linuxsysadmin-basicinnoextract1.8distroDebian stablehome:dscharrer on OBSinnoextract1.9ownInstructionsDebian 8 (jessie)maininnoextract1.4distroInstructionsDebian 9 (stretch)maininnoextract1.6distroInstructionsDebian 10 (buster)maininnoextract1.7distroInstructionsDebian testing (bullseye)maininnoextract1.8distroInstructionsDebian unstable (sid)maininnoextract1.8distroInstructionsDeepindeepininnoextract1.6distroDevuan 1 (Jessie)maininnoextract1.4distroDevuan 2 (ASCII)maininnoextract1.6distroDevuan 3 (Beowulf)maininnoextract1.7distroDevuan Testing (Chimaera)maininnoextract1.8distroDevuan Unstable (Ceres)maininnoextract1.8distroDragonFlyBSDDPortsinnoextract1.8distroEL 7 (RHEL 7, CentOS 7, …)scx on Coprinnoextract1.7userFedorahome:dscharrer on OBSinnoextract1.9ownInstructionsFedora 31fedorainnoextract1.8distroInstructionsFedora 32fedorainnoextract1.8distroInstructionsFreeBSDFreeBSD portsinnoextract1.8distroInstructionsFuntoonokitinnoextract1.7distroGentooarx-libertatis overlayinnoextract1.9ownInstructionsGuixSDGNU Guixinnoextract1.9distroHaikuHaikuPortsinnoextract1.8distroKali Linuxmaininnoextract1.8distroLinuxbrewlinuxbrew-coreinnoextract1.9distromacOSHomebrewinnoextract1.9distroInstructionsmacOSMacPortsinnoextract1.8distroMageiahome:dscharrer on OBSinnoextract1.9ownInstructionsMageia 6Coreinnoextract1.6distroInstructionsMageia 7Coreinnoextract1.7distroInstructionsMageia CauldronCoreinnoextract1.9distroInstructionsManjarocommunityinnoextract1.8distroNetBSDpkgsrcinnoextract1.9distroInstructionsNixOSNixOS packagesinnoextract1.9distroInstructionsOpenBSDOpenBSD portsinnoextract1.9distroInstructionsOpenMandrivaOpenMandriva Associationinnoextract1.9distroopenSUSEhome:dscharrer on OBSinnoextract1.9ownInstructionsopenSUSEArchiving on OBSinnoextract1.9distroInstructionsopenSUSE Leap 42.1official releaseinnoextract1.4distroInstructionsopenSUSE Leap 42.2official releaseinnoextract1.6distroInstructionsopenSUSE Leap 42.3official releaseinnoextract1.6distroInstructionsopenSUSE Leap 15.0official releaseinnoextract1.6distroInstructionsopenSUSE Leap 15.1official releaseinnoextract1.7distroInstructionsopenSUSE Leap 15.2official releaseinnoextract1.7distroInstructionsopenSUSE Tumbleweedofficial releaseinnoextract1.9distroInstructionsParabola GNU/Linux-librecommunityinnoextract1.9distroPardusmaininnoextract1.7distroParrot OSmaininnoextract1.8distroPLD Linuxpackagesinnoextract1.9distroPureOSmaininnoextract1.8distroRaspbian stablehome:dscharrer on OBSinnoextract1.9ownInstructionsRaspbianmaininnoextract1.8distroInstructionsSlackware 14.0slackbuilds.orginnoextract1.4userSlackware 14.1slackbuilds.orginnoextract1.5userSlackware 14.2slackbuilds.orginnoextract1.7userSolusshannoninnoextract1.9distroSolusunstableinnoextract1.9distroSource Magegrimoireinnoextract1.8distroSUSE Linux Enterprise 15SUSE Package Hubinnoextract1.7distroTrisquelmaininnoextract1.6distroUbuntuppa:arx/releaseinnoextract1.9ownInstructionsUbuntu 16.04 (xenial)universeinnoextract1.5distroInstructionsUbuntu 18.04 (bionic)universeinnoextract1.6distroInstructionsUbuntu 20.04 (focal)universeinnoextract1.8distroInstructionsUbuntu 20.10 (groovy)universeinnoextract1.8distroInstructionsUbuntu 21.04 (hirsute)universeinnoextract1.8distroInstructionsVoid LinuxVoid Packagesinnoextract1.9distroWindowsChocolateyinnoextract1.9userInstructionsWindowsMSYS2innoextract1.9userWindowsScoopinnoextract1.9userWindowsYet Another Cygwin Portsinnoextract1.9user
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 innoextractCompatibility
innoextract cannot guarantee good forward compatibility as the Inno Setup data format changes frequently. The following table lists the supported versions: innoextract 1.9or newerInno Setup 1.2.10 to 6.1.2innoextract 1.8Inno Setup 1.2.10 to 6.0.5innoextract 1.7Inno Setup 1.2.10* to 5.6.1innoextract 1.6Inno Setup 1.2.10* to 5.5.9innoextract 1.5Inno Setup 1.2.10* to 5.5.6innoextract 1.3 to 1.4Inno Setup 1.2.10* to 5.5.5innoextract 1.0 to 1.2Inno 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. GOG.com InstallersDecompiler Installshield Installation Tool
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
*There is no support for extracting individual components and limited support for filtering by name.
*Included scripts and checks are not executed.
*The mapping from Inno Setup constants like the application directory to subdirectories is hard-coded.
*Names for data slice/disk files in multi-file installers must follow the standard naming scheme.
Also see the list of planned/requested enhancements on the issue tracker.
Another (Windows-only) tool to extract Inno Setup files is innounp. Development InformationInstall Installshield Windows 10Projects using innoextractDecompiler Installshield Installation Windows
*Inno Setup Extractor for And
https://diarynote.indered.space
コメント