Inno Setup 6
Revision History

Copyright © 1997-2020 Jordan Russell. All rights reserved.
Portions Copyright © 2000-2020 Martijn Laan. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.

Want to be notified by e-mail of updates? Then click here to subscribe to the Inno Setup announcements mailing list.
If you subscribed before October 2019, please resubscribe.

6.0.4 (2020-03-12)

- [Setup] section directives `LicenseFile`, `InfoBeforeFile` and `InfoAfterFile` now support objects such as images in .rtf (rich text) files.
- Added new constant: `{usersavedgames}`.
- Compiler IDE changes:
  - The Welcome dialog is now higher and wider by default and also resizable.
  - Added Dark theme support to the scrollbars (on newer versions of Windows) and the bottom tab set.
- Restart Manager changes:
  - Setup now ignores attempts by the script to register Setup itself with Restart Manager for a being in use check.
  - If all files are excluded by [Setup] section directive `CloseApplicationsFilter`, Setup now no longer calls Restart Manager's RmGetList asking it to check 0 files.
  - /LOG: Now logs how many files Setup asked Restart Manager's RmGetList to check.
  - Added new command line parameter /LOGCLOSEAPPLICATIONS. Instructs Setup to create extra logging when closing applications for debugging purposes.
  - Fix: [Setup] section directive `CloseApplicationsFilter` was ignored by checks for [InstallDelete] entries.
- Windows AppLocker publisher conditions are now supported by Setup up to and including the file name level.
- Pascal Scripting change: Added new `IsDotNetInstalled` support function, based on code by Cristoph Nahr.
- Inno Setup Preprocessor (ISPP) change: Added new `UpperCase` support function.
- Fix: Event attributes for uninstall event functions now actually work.
- Minor tweaks and documentations improvements.
- Enabled HTTPS on jrsoftware.org.

6.0.3 (2019-10-11)

- /LOG: Now logs Windows compatibility mode when this is activated by the user.
- Added new [Setup] section directive: `SignToolRunMinimized`.
- [Setup] section directive `UsePreviousLanguage` now also has an effect when the Select Language dialog is not displayed because Setup is for example running silently.
- Checkboxes displayed by lists now look better on high DPI systems.
- Compiler IDE changes:
  - Added Dark theme support to the toolbar.
  - When paused on a breakpoint in the [Code] section the new "Debug Call Stack" view now shows the call stack.
  - The "Compiler Output" and "Debug Output" views now support multi selection, an extra Select All popup menu item and Ctrl+C and Ctrl+A keyboard shortcuts. The Copy action now only copies the selected lines instead of all lines.
- Inno Setup Preprocessor (ISPP) changes:
  - Array variables declared with `#dim` can now be initialized directly, like `#dim MyArray[3] {1, 2, 3}` for example.
  - Added new predefined variable `Tab`.
- Pascal Scripting change: Added new `Set8087CW` and `Get8087CW` support functions.
- Some messages have been added in this version: (View differences in Default.isl).
  - PrepareToInstallNeedsRestart: This message is used by the Preparing to Install wizard page if a restart is needed. If this message is not set by a translation, Setup will instead use FinishedRestartLabel and FinishedRestartMessage as before.
  - ComponentsDiskSpaceGBLabel and DiskSpaceGBLabel: These messages are used by Setup to display required disk spaces of 1000.0 MB or more in gigabytes instead of in megabytes. If these messages are not set by a translation, Setup will instead use ComponentsDiskSpaceMBLabel and DiskSpaceMBLabel as before.
- Added official Slovak translation.
- Minor tweaks and cosmetic fixes.

Contributions via GitHub: Thanks to Vizit0r for their contributions.

6.0.2 (2019-04-26)

- Added new `{sysnative}` constant.
- Pascal Scripting changes:
  - Added new `WizardSelectComponents` and `WizardSelectTasks` support functions.
  - Renamed the `IsComponentSelected` and `IsTaskSelected` support functions to `WizardIsComponentSelected` and `WizardIsTaskSelected`. The old names are still supported, but it is recommended to update your scripts to the new names and the compiler will issue a warning if you don't.
- Minor cosmetic fixes.

6.0.1-beta (2019-03-07)

- Fix: In 6.0.0 it was no longer possible to use [Setup] section directive `InfoAfterFile`.
- Pascal Scripting changes:
  - Fix: Added `Anchors` properties to all controls created by the `Create...Page` support functions to add full support for `WizardResizable` and `WizardSizePercent`.
  - Updated the AllPagesExample.iss example script with examples of all `Create...Page` support functions.
  - The multi-line edit control created by the `CreateOutputMsgMemoPage` support function now has a more modern look.
- Added official German translation.
- Demoted the official Greek, Hungarian, and Scottish Gaelic translations to unofficial because of a no longer available maintainer. To send updates yourself, see this post for what needs updating and use this form to send updates (or use GitHub). See the Inno Setup Translations page for more information.
- Other documentation improvements.

6.0.0-beta (2019-02-11)

Inno Setup 6 introduces a large number of changes:

Administrative vs. non administrative install mode

A number of changes have been made to the administrative vs. non administrative install mode functionality:

- Added new "auto" constants which automatically map to their "common" form unless the installation is running in non administrative install mode, in which case they map to their "user" form. It is recommended to update your scripts to use these "auto" constants as much as possible to avoid mistakes. The list of added "auto" constants is: `{autoappdata}`, `{autocf}`, `{autocf32}`, `{autocf64}`, `{autodesktop}`, `{autodocs}`, `{autopf}`, `{autopf32}`, `{autopf64}`, `{autoprograms}`, `{autostartmenu}``, {autostartup}`, and `{autotemplates}`.
- Updated all examples and the Compiler IDE's New Script Wizard to use `{autopf}` instead of `{pf}`, etc.
- Change in default behavior: The "common" shell folder constants are no longer mapped to their "user" form if the installation is running in non administrative install mode. Instead they simply return the requested common directory. The list of affected "common" constants is: `{commonappdata}`, `{commondesktop}`, `{commondocs}`, `{commonprograms}`, `{commonstartmenu}``, {commonstartup}`, and `{commontemplates}`.
- The `{pf}` and `{cf}` constants have been renamed to `{commonpf}` and `{commoncf}`. This includes `{pf32}` to `{commonpf32}`, etc. The old names are still supported, but it is recommended to update your scripts to the new names and the compiler will issue a warning if you don't.
- The `{commonfavorites}` constant has been removed: this directory doesn't exist anymore in Windows.
- The `{userpf}`, `{usercf}`, and `{username}` constants and the `AlwaysUsePersonalGroup` [Setup] section directive can now correctly trigger a used user areas warning.
- Pascal Scripting change: Removed the `GetShellFolder` support function. As the help file already recommended, use `ExpandConstant` instead.

- Added new [Registry] section `Root` value `HKA`. Equals `HKLM` in administrative install mode, and `HKCU` otherwise. Also supported by `{reg:...}` constants and `HKA32`/`HKA64` are also supported. Note: `HKA` (like `HKCU`) should only be used for settings which are compatible with roaming profiles.
- Using [Registry] section `Root` value `HKCR` is no longer recommended, use `HKA` with the `Subkey` parameter set to "Software\Classes" instead.
- Pascal Scripting change: Added `HKA` and `HKEY_AUTO` constants. `HKA32`, `HKA64`, `HKEY_AUTO_32`, and `HKEY_AUTO_64` are also supported.

- The Compiler IDE's New Script Wizard now offers an option to select administrative or non administrative install mode and outputs scripts which work in both modes.
- Pascal Scripting change: Added new `IsAdminInstallMode` support function.
- Added a Non Administrative Install Mode topic to the help file.

Overridable install mode

Once your script is fully updated to support both administrative and non administrative install mode (for example by using the new "auto" constants and the new [Registry] section `Root` value `HKA`) you can then use the following:

- Added new [Setup] section directive: `PrivilegesRequiredOverridesAllowed`, which can be set to one or more overrides which allow the end user to override the script's default `PrivilegesRequired` setting. The following overrides are supported: `commandline` and `dialog`.

- If override `commandline` is allowed then Setup will support two additional command line parameters to override the script's default `PrivilegesRequired` setting: /ALLUSERS and /CURRENTUSER.
- If override `dialog` is allowed then Setup will ask the user to choose the install mode based on the script's default `PrivilegesRequired` setting using a suppressible dialog (example if `PrivilegesRequired` is set to `admin`). Allowing `dialog` automatically allows `commandline` and when one of the command line parameters is used then Setup will not ask the user.

- Added new [Setup] section directive: `UsePreviousPrivileges`. If this directive is set to `yes` (which it is by default) and `PrivilegesRequiredOverridesAllowed` is set to `dialog`, at startup Setup will look in the registry to see if the same application is already installed in one of the two install modes, and if so, it will use that install mode and not ask the user.

- The Compiler IDE's New Script Wizard now offers options to allow the `commandline` and `dialog` overrides.
- Inno Setup's own installer script now supports both administrative and non administrative install mode and allows the `dialog` override.

Side-by-side installations

Support for side-by-side installations has been improved:

- Two separate installation runs that do not share the same administrative or non administrative install mode no longer count as the same application. This means you can now install these modes side-by-side even if the installers share the same `AppId` setting (or if `AppId` is not set, the same `AppName` setting) without the odd side effects you would get in previous versions.
- Change in default behavior: To avoid entries with identical names in the Add/Remove Programs Control Panel applet Setup will now automatically mark the new entry with a text like "Current user" or "64-bit" when necessary during a side-by-side installation.
- Added a Side-by-side installation topic to the help file.

Resizable wizard window

The wizard window is now optionally resizable:

- Added new [Setup] section directive: `WizardResizable`. If this directive is set to `yes`, the user will be able to resize the main Setup wizard window.
- Added new [Setup] section directive: `WizardSizePercent`, which can be used to increase the default size of all Setup and Uninstall wizard windows without increasing the font size.
- Pascal Scripting changes:
  - Added new `Anchors` property to all controls and new `KeepSizeY` property to `TSetupForm` which allows you to add full support for `WizardResizable` and `WizardSizePercent` to all your custom controls, custom wizard pages and `TSetupForm` forms if you have any. See the CodeClasses.iss example script for an example. This example also shows other changes done to `TSetupForm`.
  - Added new `Constraints` property to the `TForm` support class.

New modern wizard style

The wizard window now supports a more modern look:

- Added new [Setup] section directive: `WizardStyle`. If this directive is set to `modern`, Setup and Uninstall will show a more modern look and also the defaults for `WizardResizable` and `WizardSizePercent` change to respectively `yes` and `120,120`.
- Change in default behavior: Earlier versions of Inno Setup also supported `WizardStyle` and if you still have `WizardStyle=modern` in your script (which was allowed for backward compatibility but didn't actually change anything) and don't want to new modern look, you should remove this line or change it to `WizardStyle=classic`.
- Updated all examples and the Compiler IDE's New Script Wizard to use `WizardStyle=modern`.
- Pascal Scripting change: Added new `SurfaceColor` property to the `TWizardPage` support class.

A few elements now always have a more modern look regardless of the `WizardStyle` setting:

- The Select Language dialog now has more modern look, consistent with Windows 10 task dialogs and message boxes (example).
- Flattened a few elements of Setup's interface for a more modern look.

Compiler IDE updates

The look and feel of the Compiler IDE has been updated:

- Updated all toolbar icons and flattened the interface of the Compiler IDE for a more modern look.
- The Compiler IDE now supports three themes: Light (example), Dark (example) and Classic (example). The Light theme is the new default theme, unless the system is running Windows 10 and dark mode is enabled in which case the Dark theme is the default theme. The active theme can be changed in the options.
- The Compiler IDE now uses per-monitor DPI awareness mode and also allows the "Segoe UI" font for its interface elements.
- The "Compiler Output" view is now colorized. This can be turned off in the options.
- The "Debug Output" view now uses bold text for any entry lines such as '-- File entry --'.
- Options button Associate .iss files with this compiler can now associate for the current user instead of displaying an error if administrative privileges are not available.
- Options Allow Undo after save and Show indentation guides are now on by default for new installations.
- The "Configure Sign Tools" window is now wider by default and also resizable.

Other changes

- OS requirements change: Windows 2000, XP, and Server 2003 are no longer supported. Windows Vista is now the minimum supported operating system.
- Change in default behavior: Starting with Inno Setup 6 there's only one version available: Unicode Inno Setup. Unicode Inno Setup has been available for 9 years but in case you have not yet updated to it: please see the Unicode Inno Setup topic in the help file for more information. Basically, unless you're using [Code] to make DLL calls with string parameters you shouldn't have to make any changes to your script.

- Added support for 64-bit mode on Windows 10 on ARM which can be used to install ARM64 binaries. See the 64BitThreeArch.iss example script for an example which demonstrates how to install a program built for three different architectures (x86, x64, ARM64) using a single installer.

- The Abort/Retry/Ignore dialogs shown by Setup now display task dialogs. These task dialogs are much more user friendly than the message boxes previously used (example: task dialog versus message box).
- Added new [Setup] section directive: `VersionInfoOriginalFileName`, which sets the original filename version value.
- The `Permissions` parameter supported by [Files], [Dirs] and [Registry] entries now also allows you to grant permission to the Guests group, the Local Service account, the Network Service account, and to the Creator Owner.
- Added new special-purpose HelpTextNote message that can be used to specify one or more lines of text that are added to the list of parameters in the summary shown when passing /HELP on the command line. This message defaults to an empty string so make sure to provide a non-empty default for all languages from your main script if you want to use it.
- The compiler now supports UTF-8 encoded .isl files without requiring a special extension. Translators should still always set `LanguageCodePage` when possible.
- The compiler will now throw an error if the $f sequence is missing in a Sign Tool command instead of executing it anyway.
- Fix: The compiler now checks `OutputBaseFileName` and `OutputManifestFile` for bad characters even if `Output` is set to `no`.
- /LOG: Now logs some additional information about Restart Manager.

- Pascal Scripting changes:
  - Using event attributes it is now possible to have multiple implementations of the same event function in your script. This is especially useful in included scripts implementing an event function to avoid conflicts with the main script. See the help file for more information and the CodeExample1.iss example script for an example.
  - Added new `TaskDialogMsgBox` and `SuppressibleTaskDialogMsgBox` support functions which display a message box using a task dialog (example). See the help file for more information and the CodeClasses.iss example script for an example.
  - Added new `CreateCallback` support function which allows you to perform direct callbacks from DLL functions (like Windows API functions) to functions in your script. See the help file and the CodeDll.iss example script for an example.
  - [Setup] section directives `ChangesAssociations` and `ChangesEnvironment` may now be set to a boolean expression, which may contain calls to check functions.
  - Many properties which did not support mouseover evaluation from the Compiler IDE now do.
  - To enable mouseover evaluation of their properties from the Compiler IDE, support objects `MainForm`, `WizardForm`, and `UninstallProgressForm` no longer raise an internal error if you try to access them before the forms are created. To get the old behaviour use new support functions `GetMainForm`, `GetWizardForm`, and `GetUninstallProgressForm` instead.
  - Added new `BevelKind` property to the `TPanel` support class and new `BevelKind` and `BorderStyle` properties to the `TRichEditViewer` support class, allowing you to enable a flatter interface for a more modern look. See the CodeClasses.iss example script for an example.
  - Added new `SameStr` and `SameText` support functions.
  - Renamed the `IsAdminLoggedOn` support function to `IsAdmin`. The old name is still supported, but it is recommended to update your scripts to the new name and the compiler will issue a warning if you don't. Also consider using `IsAdminInstallMode` instead.
  - Removed the `TAlphaBitmap` support class. Its functionality is now provided directly by `TBitmap`.
  - Fix: On Windows 10 on ARM, the `IsWin64` support function now correctly returns `True`, and the `ProcessorArchitecture` support function now correctly returns `paARM64`.

- Inno Setup Preprocessor (ISPP) changes:
  - Inno Setup Preprocessor is now always installed.
  - Added new predefined variable `NewLine`.
  - Added new `IsWin64`, `SameStr` and `SameText` support functions.

- Added new AllPagesExample.iss example script which shows all the wizard pages Setup may potentially display.
- All documentation referring to the Power Users group has been removed: this group is not special anymore in Windows.
- Other documentation and examples improvements.
- Added official Icelandic translation.
- Delphi compiler updated from Delphi 2009 to Delphi 10.3 Rio. This change increases the size of Setup but decreases development, testing and deployment times. It also makes it easier to compile Inno Setup yourself using the free Delphi Community Edition.
- Minor tweaks.

Contributions via GitHub: Thanks to jogo-, Martin Prikryl, dscharrer, Kleuter, Gavin Lambert, Stefán Örvar Sigmundsson, DRON, Kevin Puetz, and Sherlock Software for their contributions.

Some messages have been added and changed in this version: (View differences in Default.isl).

- New messages: AbortRetryIgnoreSelectAction, AbortRetryIgnoreRetry, AbortRetryIgnoreIgnore, AbortRetryIgnoreCancel, ExistingFileReadOnly2, ExistingFileReadOnlyRetry, ExistingFileReadOnlyKeepExisting, FileAbortRetryIgnoreIgnoreNotRecommended, FileAbortRetryIgnoreSkipNotRecommended, PrivilegesRequiredOverrideTitle, PrivilegesRequiredOverrideInstruction, PrivilegesRequiredOverrideText1, PrivilegesRequiredOverrideText2, PrivilegesRequiredOverrideAllUsers, PrivilegesRequiredOverrideAllUsersRecommended, PrivilegesRequiredOverrideCurrentUser, PrivilegesRequiredOverrideCurrentUserRecommended, UninstallDisplayNameMark, UninstallDisplayNameMarks, UninstallDisplayNameMark32Bit, UninstallDisplayNameMark64Bit, UninstallDisplayNameMarkAllUsers, UninstallDisplayNameCurrentUser.
- Changed message: SelectLanguageLabel.
- Removed messages: EntryAbortRetryIgnore, ExistingFileReadOnly, ExistingFileReadOnlyAbortRetryIgnore, FileAbortRetryIgnore, FileAbortRetryIgnore2, MissingWOW64APIs.

Note: Not all official translations have been updated for these changes at this moment. Demoted the official German, Nepali, Serbian (Cyrillic) and Serbian (Latin) translations to unofficial because of a no longer available maintainer. To send updates yourself, see this post for what needs updating and use this form to send updates (or use GitHub). See the Inno Setup Translations page for more information.

Inno Setup 5.6 Revision History