Inno Setup 6
Revision History
Copyright © 1997-2025 Jordan Russell. All rights reserved.
Portions Copyright © 2000-2025 Martijn Laan. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.
Want to be notified by e-mail of new Inno Setup releases? Subscribe to the Inno Setup Mailing List!
6.5.2-dev (?)
Thank you to everyone who has already purchased a commercial license! Your support is very important to our ongoing development.
Improved graphics in Setup and Uninstall
Setup and Uninstall now both support dark mode, forced or automatic.
All of this is optional, fully backward compatible, and does not increase the size of Setup if not used.
- Enhanced [Setup] section directive WizardStyle with new appearance modes:
- Added four new DynamicDark directives to the [Setup] section, for specifying separate custom images and colors used specifically when dynamic mode switches to dark appearance.
- The default style can be customized by specifying a VCL Styles file using the new WizardStyleFile directive and a fifth DynamicDark directive.
- When forced light (light) or dynamic dark (dynamic with Windows in light mode) is active, the default style is the system's native light style. Otherwise, the default style is a built-in custom dark style.
- When a custom style (including the built-in custom dark style) is active, all text labels, except for the label associated with the BeveledLabel message, are transparent rather than opaque.
Pascal Scripting: Add new support functions IsWinDark and IsDarkInstallMode.
It's now also possible to use .png files in Setup and Uninstall, and use of transparency has been increased.
- Added support for .png files to [Setup] section directives WizardImageFile and WizardSmallImageFile, and their new DynamicDark counterparts.
- Improved support for stretching 32-bit .bmp files with transparency.
- The built-in wizard images and icons now have transparent backgrounds, allowing their background colors to be customized again using Setup section directives WizardImageBackColor and WizardSmallImageBackColor, which are no longer obsolete.
The default values of these directives match previously used colors, so the appearance of all images and icons remains unchanged by default.
- Pascal Scripting:
- Added new TPngImage support class.
- Added new PngImage property to support classes TBitmapButton and TBitmapImage.
Removed main size limits
The size limit of 2 GB for a single Setup.exe and for disk slices has been removed.
- The maximum size for a single Setup.exe without disk spanning has increased from almost 2 GB to nearly 4 GB, which is near the maximum Windows supports.
However, disk spanning is still recommended for large executables due to slow startup times imposed by Windows, especially when the executables are digitally signed.
- With disk spanning enabled, the maximum disk slice size has been increased from almost 2 GB to effectively unlimited (9223 PB).
The default disk slice size is still 2100000000, which is almost 2 GB. To update, you can simply set [Setup] section directive DiskSliceSize to max.
Improved downloading and archive extraction
- All download functionality now supports TLS 1.3 when available. Support for TLS 1.0 and 1.1 has been removed on all versions of Windows.
- Archive extraction now supports the RAR5 format. Requires Setup section directive ArchiveExtraction to be set to full.
Other changes
- Compiler IDE:
- Added new Automatically reload files and Allow Undo after reload options. Both are enabled by default, consistent with most other modern editors, and improving integration with tools like Claude Code.
- Added dark mode support for command line options /cc and /wizard.
- Pascal Scripting: Added new LogFmt support function.
Using Inno Setup commercially? Please purchase a license.
6.5.1 (2025-08-18)
- Downloads are now performed from a secondary thread, just as was first introduced for archive extraction in the previous version. This ensures Setup stays responsive, even if the system fails to report progress.
- Fix: Using the /cc command line option of the Compiler IDE to compile a script no longer causes an error.
- Minor tweaks.
6.5.0 (2025-08-12)
Introducing commercial licenses
Over the years, a number of users have expressed to us a desire to see their organizations support the ongoing development of Inno Setup, but have found that organization policies often make it difficult or impossible to approve a donation. By introducing a commercial license option, we aim to provide a straightforward and familiar way for organizations to contribute to the project's sustainability.
Additionally, many organizations prefer having official licenses on record for all software they use, as it helps with audits and internal compliance checks.
Finally, your support through license purchases directly enables us to improve and maintain Inno Setup.
For these reasons we are introducing commercial licenses. If you or your organization benefit from using Inno Setup in a commercial context, we kindly ask that you purchase a license. Thank you for helping ensure the continued development of this software.
Licenses can be purchased from our new order page, which includes more questions and answers. All commercial licenses are perpetual and require a single payment. They include two years of updates, major and minor. After this period, your current version will remain licensed and functional as-is.
Improved archive extraction
It's now possible to extract password-protected archives, multi-volume archives, and multiple extra archive formats such as .zip.
Additionally, the [Files] section now supports archive extraction. Writing Pascal Script to extract an archive is no longer necessary.
All of this is optional and does not increase the size of Setup if not used.
- Updated [Setup] and [Files] section:
- Added new [Setup] section directive ArchiveExtraction to specify the method of archive extraction used by new [Files] section flag extractarchive (see below) and support functions ExtractArchive and CreateExtractionPage:
- basic (default) is the method introduced by Inno Setup 6.4.0. It only supports .7z archives that are not password-protected.
- enhanced/nopassword is a new method and internally uses 7zxr.dll from the 7-Zip source code by Igor Pavlov, as-is, except that it was recompiled, code-signed, and renamed to is7zxr.dll. Compared to basic, it has lower memory requirements for archives that contain large files but increases the size of the Setup file(s). It still only supports .7z archives that are not password-protected.
- enhanced uses 7zxa.dll instead of 7zxr.dll, recompiled, code-signed, and renamed to is7zxa.dll. It still only supports .7z archives, but they may be password-protected.
- full uses 7z.dll instead of 7zxa.dll, recompiled, code-signed, and renamed to is7z.dll. It supports multiple archive formats (.7z, .zip, .rar, and more), although not as many as the original 7z.dll, to reduce its size. Additionally, it supports multi-volume archives.
New documentation topic ArchiveExtraction has a table summarizing the differences between these methods.
- Added new [Files] section flag extractarchive and parameter ExtractArchivePassword, intended to enable the seamless integration and extraction of archives.
- Archive extraction now honors the file system redirection state set by 64-bit install mode, entry flags, and support function EnableFsRedirection.
- Updated Pascal Scripting:
- New support function ExtractArchive replaces the deprecated Extract7ZipArchive. ExtractArchive includes an additional parameter to optionally specify a password.
- ExtractArchive and CreateExtractionPage now overwrite read-only files which already exist in the destination directory without prompting the user. Previously this would cause an extraction error.
- Added new MapArchiveExtensions support function to allow the extraction of archives with custom extensions, such as self-extracting archives.
- Added new AddEx function to support class TExtractionWizardPage to add password-protected archives.
Improved file downloads
The [Files] section now supports file downloads. Writing Pascal Script to download a file is no longer necessary and is in fact less efficient since it requires an intermediate temporary file which this new download support doesn't.
New signature-verification capability
Inno Setup now includes an integrated signature-verification capability that can be used to detect corruption or tampering in your files at compile time, before files are included in an installer being built, or during installation, before Setup copies external files onto a user's system.
Any type of file may be signed and verified, and creation of signatures does not require a certificate from a certificate authority. There is no cost involved.
Note, however, that these signatures cannot be used to eliminate an "Unknown publisher" warning message shown by Windows when an installer or other EXE file is started. That requires a completely different kind of signature (Authenticode) embedded inside the EXE file by a different tool (Microsoft's signtool.exe), and it does require a (usually expensive) code-signing certificate from a certificate authority.
A more detailed summary:
- New [ISSigKeys] section:
- Updated [Files] section:
- New Inno Setup Signature Tool:
- Updated documentation:
- Other related changes:
Other changes
- Compiler IDE:
- The Find in Files result list will now update its line numbers when you add or delete lines.
- The Highlight occurrences of current word option (which is disabled by default) no longer highlights a section's directive names, parameter names, or Pascal keywords. The Highlight occurrences of current selection option (which is enabled by default) still does.
- Dark mode is now supported throughout.
- Improved support for high-contrast themes.
- Improved support for screen readers.
- [Setup] section directive Encryption can now be set to full, which will encrypt the entire installation and requires the password to be specified using the /PASSWORD= command line parameter.
- Increased the maximum value of [Setup] section directive LZMANumBlockThreads from 32 to 256.
- [Files] section parameter Excludes can now be combined with the external flag.
- Parameters ExternalSize, ExtraDiskSpaceRequired, and UninstallDisplaySize now support digit separators. Example: UninstallDisplaySize=1_073_741_824.
- ISPP changes:
- Added predefined variable __DIR__. Returns the directory of the current include file.
- Renamed predefined variables __FILE__ to __FILENAME__ and ISPPCC_INVOKED to ISCC_INVOKED. The old names still work.
- Renamed support function RemoveBackslash to RemoveBackslashUnlessRoot. The old name still works.
- Fix: The return value of support function ExtractFilePath did not always include a trailing backslash as intended.
- Pascal Scripting changes:
- Added new TBitmapButton support class which works just like TBitmapImage, but is accessible by keyboard and compatible with screen readers. Make sure to set the Caption property, even if it isn't visible. See updated example script CodeClasses.iss for an example.
- Added new InitializeBitmapButtonFromIcon and GetSHA256OfStream support functions.
- Added new LastBaseNameOrUrl property to support class TDownloadWizardPage. See updated example script CodeDownloadFiles.iss for an example.
- Fix: Event function CurPageChanged is now always only triggered when the current page actually changes. Before it was called twice in a row for wpPreparing when the script had a PrepareToInstall event function which returned a non empty string to instruct Setup to stop.
- When available, Setup now retrieves the temporary directory path using the GetTempPath2 API, which was first introduced in Windows 11 and later backported to Windows 10 and Windows Server 2016 via monthly updates. When running under the SYSTEM account, GetTempPath2 returns a private directory (typically C:\Windows\SystemTemp), potentially enhancing security. On older versions of Windows or systems that haven't been updated, Setup falls back to the original GetTempPath API. (This change adds defense-in-depth; it does not address a known vulnerability.)
- Inno Setup 6.4.3 increased the maximum width of all task dialogs by about 50%, which helps to keep long paths from being truncated with ellipses. It now only does this if the task dialog's content actually contains a path.
- All official translations which still had an UTF-8 BOM had their BOM removed. Using a BOM in UTF-8 encoded files is not needed and not recommended since Inno Setup 6.3.0.
- Inno Setup is now built using Delphi 12.3 Athens instead of Delphi 12.1 Athens. Thanks to Ian Barker from Embarcadero for providing us with a license!
- Documentation improvements.
- Minor tweaks.
Some messages have been added and removed in this version: (View differences in Default.isl.)
- New messages:
- DownloadingLabel2, ExtractingLabel.
- ArchiveIncorrectPassword, ArchiveIsCorrupted, ArchiveUnsupportedFormat.
- RetryCancelSelectAction, RetryCancelRetry, RetryCancelCancel.
- StatusDownloadFiles.
- SourceVerificationFailed, VerificationSignatureDoesntExist, VerificationSignatureInvalid, VerificationKeyNotFound, VerificationFileNameIncorrect, VerificationFileTagIncorrect, VerificationFileSizeIncorrect, VerificationFileHashIncorrect.
- ErrorDownloading, ErrorExtracting.
- Removed messages:
- ErrorFileHash1, ErrorFileHash2.
- DownloadingLabel, ExtractionLabel.
Note: The official Icelandic translation has been reclassified as unofficial due to the absence of a maintainer.
Inno Setup 6.4 Revision History