SkillAgentSearch skills...

Issrc

Inno Setup is an open-source installation builder for Windows applications by Jordan Russell and Martijn Laan. Since its introduction in 1997, Inno Setup has been trusted by developers and organizations of all sizes to reliably deploy software to millions of PCs worldwide.

Install / Use

/learn @jrsoftware/Issrc
About this skill

Quality Score

0/100

Category

Operations

Supported Platforms

Universal

README

Inno Setup

Copyright (C) 1997-2026 Jordan Russell. All rights reserved. Portions Copyright (C) 2000-2026 Martijn Laan. All rights reserved. For conditions of distribution and use, see LICENSE.TXT.

Source code README

Getting Started

  1. Obtain sources

    First you need to download the sources from Github. From the command line do:

    > git clone https://github.com/jrsoftware/issrc.git issrc
    > cd issrc
    

    If you don't have the Git client (git), get it from:

    https://git-scm.com/

    To update your sources from the command line do:

    > git pull
    

    To be able to contribute to Inno Setup, clone your own fork instead of cloning the main Inno Setup repository, commit your work on topic branches and make pull requests. See [CONTRIBUTING.md].

  2. Install Embarcadero Delphi

    We compile all of Inno Setup's projects under Delphi 12.3 Athens with the May Patch installed.

    There's a free version of Delphi available called the Community Edition. See https://www.embarcadero.com/products/delphi/starter/free-download.

    After installation of Delphi, you must install GetIt dependencies by running getit.bat and following the instructions.

  3. Install Microsoft HTML Help Workshop

    Install Microsoft HTML Help Workshop if you haven't already done so. See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/htmlhelp/microsoft-html-help-downloads and http://web.archive.org/web/20160201063255/http://download.microsoft.com/download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe

    Note: Microsoft HTML Help Workshop is only needed to be able to compile the help file.

  4. Build Inno Setup

    Unfortunately, Embarcadero has removed command line compilation support from the Community Edition, which means there's two different build scripts.

    Community Edition: To build all files in Release mode run build-ce.bat and follow the instructions.

    Otherwise: To build all files in Release mode run build.bat and follow the instructions.

    To just compile 64-bit Inno Setup in Release mode run compile.bat x64 and follow the instructions. Run compile.bat x86 for 32-bit Inno Setup. These batch files cannot be used with the Community Edition, open Projects\Projects.groupproj instead.

    To just compile the Inno Setup help file and its web version run compile.bat x64 ishelpgen and ISHelp\compile.bat and follow the instructions. The former batch file cannot be used with the Community Edition, open Projects\Projects.groupproj instead.

Component Installation

If you intend to view or modify the Setup project's forms, you must install the following component units, which can be found in the [Components] directory.

  • BitmapButton
  • BitmapImage
  • FolderTreeView
  • NewCheckListBox
  • NewCtrls
  • NewNotebookReg
  • NewProgressBar
  • NewStaticText
  • PasswordEdit
  • RichEditViewer

If you intend to view or modify the ISIDE project's forms, you must additionally install the following components.

  • DropListBox
  • NewGroupBox
  • NewTabSet

The [Components] directory contains a Components.dpk file which you can use to install all these components.

If you only want to edit code, then you may skip installation of the components, and choose "Cancel" if the Delphi IDE tells you a class can't be found.

The [Components] directory also includes various units that are not installable components; however, they are still considered components because they can function independently from Inno Setup.

Overview

Inno Setup consists of eight projects:

ISIDE - This is the GUI front-end for the compiler, also known as the Compiler IDE. ISIDE does not do the actual compilation itself; it relegates it to ISCmplr.dll. If the ISCmplr project is changed, you normally don't need to recompile ISIDE since it's essentially a text editor, and is not affected by internal changes to the compiler.

ISCC - This is the command-line front-end to the compiler. Like ISIDE, it depends on ISCmplr.dll to do the actual compiling.

ISCmplr - This is a DLL which is loaded by ISIDE and ISCC to compile scripts. The actual compiler code is in Compiler.SetupCompiler.pas. See Shared.CompInt.pas for the various structures and function declarations used to interface to the DLL.

ISPP - This is a DLL implementing Inno Setup's preprocessor interface.

Setup - This is the actual "Setup" program. It displays the wizard, and performs all (un)installation-related tasks.

SetupCustomStyle - Identical to Setup, except that it includes code to support VCL Styles.

SetupLdr - This is the "setup loader." It self-extracts a compressed Setup program into the user's TEMP directory and runs it from there. It also displays the "This will install..." and /HELP message boxes.

ISSigTool - This is a command-line utility which can be used to sign and verify any of your files. ISIDE, ISCC, and ISCmplr use these signatures to verify the authenticity of a number of DLL, E32, E64, and EXE files before loading them. Note: this utility does not replace Microsoft's signtool.exe in any way and is in fact not related to Authenticode Code Signing at all.

How do the projects link together?

  • ISIDE, ISCmplr, ISPP, Setup, SetupCustomStyle, and SetupLdr share the unit Shared.Struct.pas. This unit contains various data structures and constants shared by the projects. If Shared.Struct.pas is changed, you usually will need to recompile all these projects and the required targets using the Release64 or Debug64 build group so that everything is in synch.

  • There are more units which are shared between projects. Search the .dpr files of the projects if you aren't sure if a project uses a particular unit.

Source code tips

  • When building the projects in Release mode, it outputs to [Files]. Before running ISIDE, ensure that all .issig files are up to date. Use the Release64 build group to ensure all required targets are built.

  • You can open the Build Groups pane from the Projects tool window.

  • When building the projects in Debug mode, it outputs to [Projects\Bin] and when debugging, it will run from within this directory. To prepare this directory with some extra files you must run Projects\Bin\synch-isfiles.bat. Running the aforementioned build.bat or build-ce.bat first is not necessary.

  • To debug the Setup project, you should first build the Debug64 build group, then run the ISIDE project and compile the Debug.iss script which should open automatically, and finally open and run the Setup project. This way you can simulate an actual installation while running under the Delphi debugger.

  • To debug the SetupLdr project, first build the Debug64 build group and compile the Debug.iss script as explained above, except with the UseSetupLdr=no line set to yes. Then open and run the SetupLdr project with a 32-bit or 64-bit target (latter does not require using UseSetupLdr=x64). It will automatically set a special debug-only /SELFFILENAME=Setup.exe command line parameter, which will cause it to load and run the Setup.exe you just compiled using ISIDE, instead of the SetupLdr.e32 or .e64 just compiled by Delphi.

  • To debug the uninstaller first run Setup.exe to completion with the /DETACHEDMSG command line parameter set. Afterwards copy uninst000.dat and uninst000.msg as setup.dat and setup.msg to the [Projects\Bin] directory in your issrc path. Then open the Setup project and set the command line parameters to /UNINSTMODE /KEEPEXEDATMSG "/SECONDPHASE=<your issrc path\Projects\Bin\Setup.exe" and start debugging.

  • All of the forms in the Setup project have Scaled set to False. This is because they dynamically scale themselves at run-time by calling a function named InitializeFont.

  • A note for those curious: ISIDE creates single exe Setups by first creating the Setup.exe as usual, then concatenating the Setup.0 and Setup-1.bin to the end of the Setup.exe, and finally modifying an internal data block in Setup.exe so it knows it's in "single exe" form.

Precompiled executables and libraries

The source code contains several precompiled and code-signed executables and libraries:

Files\is7z(-x64).dll, Files\is7zxa(-x64).dll, Files\is7zxr(-x64).dll - Compiled by Visual Studio 2022 from 7-Zip source code in the [is7z] repository. Used by Setup.

Files\isbunzip(-x64).dll, Files\isbzip(-x64).dll - Compiled by Visual Studio 2022 from the bzlib directory in the [iscompress] repository. Used by Setup and ISCmplr respectively.

Files\isunzlib(-x64).dll, Files\iszlib(-x64).dll - Compiled by Visual Studio 2022 from the zlib directory in the [iscompress] repository. Used by Setup and ISCmplr respectively.

Files\islzma(-x64|-Arm64EC).dll, Files\islzma32.exe, Files\islzma64.exe - Compiled by Visual Studio 2022 from the [Projects\Src\Compression.LZMACompressor\islzma] directory. Used by ISCmplr.

Files\isscint(-x64).dll - Compiled by Visual Studio 2022 from Scintilla source code in the [isscint] repository. Used by ISIDE.

Projects\Src\Compression.LZMADecompressor\Lzma2Decode\ISLzmaDec(-x86|-x64).obj - Compiled by Visual Studio 2022 from the [Projects\Src\Compression.LZMADecompressor\Lzma2Decode] directory. Used by Setup.

Projects\Src\Compression.LZMA1SmallDecompressor\LzmaDecode\LzmaDecodeInno(-x86|-x64).obj - Compiled by Visual Studio 2022 from the [Projects\Src\Compression.LZMA1SmallDecompressor\LzmaDecode] directory. Used by SetupLdr.

**Projects\Src

View on GitHub
GitHub Stars5.3k
CategoryOperations
Updated1h ago
Forks1.1k

Languages

Pascal

Security Score

85/100

Audited on Mar 30, 2026

No findings