Download 64-bit editionHere are the general notes:
Download 32-bit edition
Using the 64-bit edition is recommended. As noted below, it can still build 32-bit installers.
Please report success or failure with this version by sending a quick email to inno...@googlegroups.com (preferred) or ml...@innosetup.nl. Thank you!
If you installed the 32-bit edition of preview-1, please uninstall it yourself before installing preview-2, because its AppId has changed.
Changes related to 32-bit vs 64-bit:
Other changes:
- The 32-bit edition of Inno Setup's own installer now supports a non-administrative install again.
- Added new System Path Redirection help topic.
- Pascal Scripting:
- Fixed an issue with the built-in TFindRec record type in 64-bit installers.
- Added the following note:
In both 32-bit and 64-bit installers, Pascal Script records are always "packed". When calling a Windows API or external DLL function that expects aligned records, you may need to add manual padding fields. Even if this was not needed in a 32-bit installer, it may be needed in a 64-bit installer because alignment rules and field sizes differ.- We tested support of Windows Server Core with WOW64 removed:
In our tests on 'Windows Server 2016 Datacenter Server Core' and 'Windows Server 2025 Datacenter: Azure Edition Core', with all WOW64 features disabled and removed using DISM, 64-bit installers still function correctly, even when run in 32-bit install mode.- Improved 'regtypelib' handling and documentation.
- [Setup] section directive ArchiveExtraction can now also be set to auto, the new default.
- Pascal Scripting: Added new optional OnLog parameter to the [Run] section.
- Updated the 7-Zip and LZMA SDK source code used by Inno Setup to the latest versions.
- As a proactive security measure, the compiler no longer allows .isl message files specified in the [Languages] section to contain compiler directives such as #include.
- Other minor improvements.
Please test your scripts and installers with this preview, even if you do not intend to use 64-bit installers, and report success or failure here. Thank you in advance. Especially please test and report this functionality:
Please do not use this preview to build installers you will use in production.
- Using 64-bit install mode in a 32-bit installer.
This is not new functionality but we did many changes related to system path redirection.- Using 32-bit install mode in a 64-bit installer.
- Using Pascal Scripting in a 64-bit installer.
Please do first ensure your script is actually compatible with 64-bit execution. Whatsnew (linked below) has some tips about this.
We are proud to announce the first preview of Inno Setup 7, which includes a 64-bit edition, as well as a 32-bit edition.Greetings,
Both editions of Inno Setup 7 can build either 32-bit or 64-bit installers, and they can be installed side by side, and they can coexist alongside Inno Setup 6.
Additionally, support for extended-length paths was added, removing MAX_PATH limitations.
Great care has been taken to ensure maximum backward compatibility with Inno Setup 6, including backward compatibility for the extended-length path support, and compatibility between 32-bit and 64-bit installers.
For the complete list of changes, see What's new in this version?
- As a proactive security measure, the compiler no longer allows .isl message files specified in the [Languages] section to contain compiler directives such as #include.
On Monday, March 16, 2026 at 1:49:25 AM UTC+13 Martijn Laan wrote:
- As a proactive security measure, the compiler no longer allows .isl message files specified in the [Languages] section to contain compiler directives such as #include.
Is there a way to opt out of this? I quite like having an app-specific isl file which includes a suite-specific file which includes a company-specific file which includes the default.isl. I know this is possible to achieve by listing the chain of files directly in the iss instead but that feels more fragile and inconvenient, since there are more places to update if you want to introduce more files.
Script.iss:
#include "SuiteDefs.iss"
[Languages]
Name: en; MessagesFile: "{#SuiteMessageFiles}"
SuiteDefs.iss:
#include "CompanyDefs.iss"
#define SuiteMessageFiles CompanyMessageFiles + ", Suite.isl"
CompanyDefs.iss:
#define CompanyMessageFiles "compiler:Default.isl, Company.isl"
You could also #include trusted .isl files, with only Default.isl
specified in MessagesFile. All compiler directives will continue to work.
I realize that this change could break some (very unusual) use cases --
which is why it was done for 7.0 and not a point release -- but before
any "opt out" option is considered, I'd want to see a use case where no
reasonable alternative approach exists. I tend to not like adding
"restore the previous behavior" options because people will take
advantage of it not because they genuinely need to, but just as a "quick
fix" to avoid having to change what they're doing. And then they're
dependent on the option indefinitely.
The biggest risk comes from allowing ISPP function calls like Exec
(arbitrary command execution), but even #include is not 100% risk-free.
A UNC path could be specified to cause the system to make an outbound
SMB connection to an attacker-controlled IP address. A malicious SMB
server at that address could try to exploit unpatched/zero-day
vulnerabilities in the connecting SMB client, which if successful (a big
if) could allow the attacker to gain control over the system.
my setup will fail to uninstall using 7.0.0 preview 2... Internal error: pathredir: not initialiized
my setup will fail to uninstall using 7.0.0 preview 2... Internal error: pathredir: not initialiized
I will make sure this is not necessary in the next version.[Code]function InitializeSetup: Boolean;beginResult := True;end;