Inno Setup 5
Revision History
Copyright © 1997-2011 Jordan Russell. All rights reserved.
Portions Copyright © 2000-2011 Martijn Laan. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.
5.4.3 (2011-12-20)
- QuickStart Pack: Now offers to download and install Inno Script Studio besides InnoIDE.
- Setup now only allows the "Don't create a Start Menu folder" check box to suppress the creation of shortcuts under {group}. Previously, it would also suppress the creation of shortcuts in other locations, such as {userstartup}, on entries that lacked a Tasks parameter.
- Setup now doesn't count files with Tasks/Check parameters when calculating the disk space shown at the bottom of the Select Components page.
- Improved throughput of external file copying on some devices.
- On Unicode, Setup now supports Rich Edit 4.1 when available.
- Inno Setup Preprocessor (ISPP) changes:
- Documentation improvements: Added the functions available from ISPPBuiltins.iss to the help file.
- #ifexist/#ifnexist: For consistency with ISPP functions, prepend SourcePath if the filename is relative, and also support prefix expansion.
- ReadReg: Now only requests KEY_QUERY_VALUE access on the key. Previously, it requested KEY_ALL_ACCESS.
- The Inno Setup source code is now also available as a Git repository at GitHub. This should make it easier to contribute to Inno Setup, see GitHub Help - Fork A Repo for more info.
- Added official Serbian (both Latin and Cyrillic) and Ukrainian translations.
- Minor tweaks.
5.4.2 (2011-03-17)
- Windows 7 change:
- Added new [Icons] section flag: excludefromshowinnewinstall. Prevents a Start menu entry for a newly installed application shortcut from receiving a highlight on Windows 7 (or later). Ignored on earlier Windows versions.
- Compiler IDE change:
- Changed shortcut for Edit | Complete Word to Alt+Right (but still recognize Ctrl+Space). Reportedly, Ctrl+Space conflicts with the Chinese IME.
- Fixes:
- Inno Setup Preprocessor: #include handling of '.\' and '..\' now treats such filenames as relative to the directory containing the current file, not to the current directory (which is undefined).
- On the 5.4.1 Unicode compiler, trying to build a multi-language installer while running under a DBCS code page could unexpectedly result in "Illegal null character" errors.
- On Unicode, string-type parameters passed to BeforeInstall and AfterInstall functions were being converted to ANSI.
5.4.1 (2011-02-09)
- Inno Setup Preprocessor (ISPP) changes:
- ISPP is now an official part of Inno Setup and is included in the standard Inno Setup installer instead of only being included in the QuickStart Pack installer.
- It is now possible to enable ISPP preprocessing on .isl files by adding a line saying #preproc ispp at the top of the .isl file.
- With the exception of Exec, ReadIni, and WriteIni, all ISPP functions that take filenames have been changed to interpret the filenames as relative to SourcePath instead of the current directory. Additionally, these functions, the #include directive, and the #file directive now support prefix expansion (e.g. 'compiler:') in filenames.
- The #include directive no longer searches the current directory.
- Builtins.iss has been renamed to ISPPBuiltins.iss.
- The Compiler IDE no longer displays a separate ISPP version number in its title bar.
- Compiler IDE changes:
- The Edit | Replace | Replace All command now actually replaces all occurrences, instead of doing a Delphi-style "From Cursor" replacement. Also it now counts all replacements as a single undo action and shows how many occurrences were replaced.
- Unicode change: Added a new File | Save Encoding submenu. It now defaults to preserving the UTF-8 BOM of existing files, even if the UTF-8 encoding isn't really needed.
- Unicode change: Added support for Unicode characters in DLL filenames (not specified directly in the script, but returned by constants like {app}). This fixes the "Cannot Import" error seen with for example the CodeDll.iss example script when uninstalling from an {app} path containing non-ANSI characters.
- Two new Setup exit codes related to the Preparing to Install stage were added. See the help file for more information.
- Minor tweaks.
5.4.0 (2010-10-31)
- Compiler IDE changes:
- The editor component has been changed from SynEdit to Scintilla.
- Autocompletion support has been added to all sections except for [Messages], [CustomMessages], and [Code].
- Brace highlighting has been added to all sections.
- Syntax errors are now underlined during editing. (Support for the [Code] section is limited.)
- Constants are now highlighted.
- Variable-pitch fonts may now be selected as the editor font.
- ISPP inline directives ({#...}) are now consistently highlighted in all contexts.
- Zooming is now supported.
- Added new options: Word wrap (default: off), Auto indent mode (default: on), Show indentation guides (default: off), Invoke autocomplete automatically (default: on), Underline syntax errors (default: on), and Use tab character (default: off).
- Setup now instructs edit controls which are used to input a file or folder name to use AutoComplete to help complete file system paths.
- On disk space checks, Setup now queries the nearest volume mount point rather than the root.
- The default directory and Start Menu folder names specified via the /DIR=, /GROUP=, and /LOADINF= command line parameters now may include an "expand:" prefix which instructs Setup to expand any constants in the name. For example: /DIR="expand:{pf}\My Program".
- Pascal Scripting changes:
- TNewProgressBar: Added new Style and State properties. See the CodeClasses.iss example script for an example.
- TBitmapImage: Added new OnClick and OnDblClick properties. See the CodeClasses.iss example script for an example.
- Dropped Itanium-specific 64-bit support for the [Files] section's regtypelib flag and the [Registry] section's Permissions parameter. These features depended on an Itanium-specific "helper" binary, which we no longer have the ability to test or build. (x64 support for these features is unaffected.)
- Updated bzip2 library to version 1.0.6.
- Minor tweaks.
5.3.11 (2010-09-17)
- QuickStart Pack: Now offers to download and install InnoIDE instead of ISTool. InnoIDE is an easy to use Inno Setup Script editor by Graham Murt and meant as a replacement of the standard Compiler IDE that comes with Inno Setup. Using InnoIDE is especially recommended for new users. Note: unlike ISTool, InnoIDE supports Unicode scripts.
- Unicode changes:
- Previously, if a Unicode installer included translations for both Traditional Chinese and Simplified Chinese using the language IDs $0404 (Taiwan) and $0804 (PRC), a user running under another Traditional Chinese language ID—such as $0C04 (Hong Kong)—could have incorrectly received the Simplified Chinese translation by default if it was listed first in the script's [Languages] section. Now, like the ANSI version of Setup, Traditional Chinese and Simplified Chinese are treated as completely separate languages. Thus, provided other options are available, Simplified Chinese will not be considered for selection as the default language on Traditional Chinese systems, and vice versa.
- Compiler IDE editor updated to the latest UniSynEdit version. This fixes the extra empty line appearing at the end of scripts when first saved.
- Ctrl+V/Esc/etc. are no longer intercepted by the Compiler IDE's main window while the Find dialog has the focus.
- Based on RemObjects Pascal Script SVN code revision 233. This fixes GetExceptionMessage always returning "(There is no current exception)" on Unicode.
- Compiler IDE: Added new Build | Open Output Folder command.
- In certain cases, applications started via postinstall nowait [Run] entries did not come to the foreground (top of the Z-order) as expected. This could occur if Setup exited before the spawned process(es) were able to initialize, causing Windows to bring the window that was underneath Setup in the Z-order to the foreground instead. Now, when postinstall nowait [Run] entries are processed, Setup will wait briefly (up to one second) before exiting for another process to bump Setup from the foreground.
- To help protect applications against potential DLL preloading attacks, Setup now always specifies a working directory on shortcuts it creates. If a WorkingDir parameter is not specified or is blank, Setup will try to extract a directory name from the Filename parameter. If for some reason that fails, the working directory will be set to {sys}.
- To help protect installers against potential DLL/EXE preloading attacks, Setup/Uninstall now calls SetDllDirectory to remove the current directory from the DLL search order, and SetSearchPathMode to prevent SearchPath and CreateProcess from searching the current directory before system directories.
- If the Filename parameter of a [Run]/[UninstallRun] entry or Exec/ShellExec call does not include a path, and a WorkingDir value is not provided, Setup/Uninstall will now specify a known-safe default (currently {sys}) for the process's initial current directory, instead of allowing the process to inherit Setup/Uninstall's current directory. You should not rely on this behavior, however; it is best to always specify a path in the Filename parameter.
- When an Open or Save common dialog is dismissed, the current directory is now restored to its original value.
- Updated bzip2 library to version 1.0.5.
- QuickStart Pack: Any ISPP function that uses the system's DLL search path such as GetFileVersion will no longer search the current directory.
- Minor tweaks.
5.3.10 (2010-06-11)
- Added .NET Framework 4.0 support:
- Added constants {dotnet40}, {dotnet4032}, and {dotnet4064}. An exception will be raised if an attempt is made to expand these constants on a system with no .NET Framework version 4.0 present.
- [Files] section flag gacinstall can now be used on .NET Framework 4.0 assemblies too.
- Windows 7 changes:
- [Icons] section flag foldershortcut is now ignored when running on Windows 7 (or later), as folder shortcuts do not expand properly on the Start Menu anymore.
- [Setup] section directive changes:
- When SignedUninstaller is set to yes, any temporary self-copies used by Setup are now digitally signed too.
- Uninstallable may now be set to a boolean expression, which may contain calls to check functions. For example: Uninstallable=not IsTaskSelected('portablemode'). See the Uninstallable documentation for details.
- AppVerName is no longer required if AppVersion is specified. It will now effectively default to: {cm:NameAndVersion,[AppName],[AppVersion]}. The Compiler IDE's New Script Wizard now also asks for an AppVersion instead of an AppVerName.
- If a text VersionInfo* directive is set to an empty string (as opposed to not being specified), then the version info field is really set to an empty string now, instead of forcing a default value.
- VersionInfoProductTextVersion now defaults to VersionInfoProductVersion if set, else AppVersion if AppVersion is set and does not include constants, else VersionInfoTextVersion.
- Unicode Inno Setup: An issue with the taskbar button re-appearing on /VERYSILENT installs has been fixed.
- Unicode [Code] based on RemObjects Pascal Script SVN code revision 228.
- Minor tweaks.
5.3.9 (2010-04-10)
- For better appearance on Windows 7 and Vista when ClearType is enabled, Tahoma is the new default font used by Setup and Uninstall. A new [Setup] section directive DefaultDialogFontName has also been added to make it easy to override the default dialog font for all languages that do not have a custom DialogFontName setting. If you would like to revert to the dialog font used in previous versions of Inno Setup (Microsoft Sans Serif if available, else MS Sans Serif), set DefaultDialogFontName to an empty string (DefaultDialogFontName=).
- Added new [Setup] section directive: DisableWelcomePage to hide the Welcome wizard page. Doing so is recommended by the Aero wizard guidelines. Additionally, the ShouldSkipPage event function is now also called for wpWelcome.
- When Setup is not running silently, the Ready To Install wizard page now ignores attempts to skip it when no other wizard page before it has been shown yet.
- Added LZMA2 compression support:
- Updated the LZMA SDK compression code to version 9.10 which adds support for LZMA2 compression. LZMA2 is a modified version of LZMA that offers a better compression ratio for uncompressible data (random data expands about 0.005%, compared to 1.35% with original LZMA), and optionally can compress multiple parts of large files in parallel, greatly increasing compression speed but with a possible reduction in compression ratio. LZMA2 compression may be activated by setting the Compression [Setup] section directive to lzma2, and lzma2 is now also the default value.
- Added various new [Setup] section directives with names that start with LZMA to fine-tune LZMA and LZMA2 compression parameters, including LZMADictionarySize which allows the LZMA dictionary size to be increased up to 256 MB from the previous maximum of 64 MB. Review the memory requirements listed in the Compression topic before using.
- Tweaked the JMP/CALL instruction optimization algorithm for slightly better compression of executable files. (On Inno Setup's own installer, this saved about 2 KB.)
- Improved compression of x64 executable files: just like for x86 executable files, JMP/CALL instruction optimization is now performed for x64 executable files. On average, this will reduce the compressed size of x64 executable files by 2-3%.
- [Setup] section directive DiskSliceSize can now be set to max, and max is now also the default value.
- Windows 7 change: The Compiler IDE is now pinnable. Also, files that are opened via the Welcome dialog, MRU list, and drag & drop now get added to the Jump List.
- Windows 7 and Vista changes:
- Before deleting a pinned shortcut, Uninstall now automatically removes it from the current user's Start menu pinned list and on Windows 7 also from the taskbar.
- Changed the icon that is shown on Select Start Menu Folder wizard page. Previously, it used the same icon as the preceding Select Destination Location page, but that was never really the intention.
- When Setup and Uninstall respawn for elevation, any SUBST'ed drives in the EXE filename are now expanded before the respawn, since the elevated user will not retain the original user's SUBST mappings. Fixes error seen when starting Setup from a SUBST'ed drive.
- Setup now uses the SHA-1 algorithm instead of MD5 for file checksums and various internally-used hashes.
- Pascal Scripting: Added support functions GetSHA1OfString, GetSHA1OfUnicodeString, and GetSHA1OfFile.
- QuickStart Pack: Added ISPP functions GetSHA1OfString, GetSHA1OfUnicodeString, and GetSHA1OfFile.
- [Icons] section parameter AppUserModelID is now also used on Windows Server 2008 R2.
- In Setup's version info text fields, "(C)" is now automatically replaced with real copyright symbols ("©").
- Unicode Inno Setup: Added workaround for upstream Delphi bug that could cause Setup (versions 5.3.6 to 5.3.8) to display a "Stream read error" error message at startup on Windows 2000 systems that did not have Service Pack 4 installed.
- Compiler IDE change: the Tools | Configure Sign Tools... dialog now allows editing of existing Sign Tools.
- The uninstall program's version is now 51.(10)52.0.0.
- Minor tweaks.
5.3.8 (2010-02-18)
- Added new [Setup] section directive: UsePreviousLanguage. When this directive is yes, the default, at startup Setup will look in the registry to see if the same application is already installed, and if so, it will use the language of the previous installation as the default language selected in the list of available languages on the Select Language dialog. Note that this directive does not change the language used by the Select Language dialog itself because it cannot assume that the current user understands the same languages as the previous user. UsePreviousLanguage must be set to no when AppId includes constants.
- On Windows Vista and newer, Uninstall no longer blocks system shutdown until the uninstallation has actually started. This should make the Windows 7 Logo Kit (which wrongly tests any .exe in the application directory including the uninstaller) happy when it tries to shutdown an Uninstall sitting on its confirmation prompt.
- On Windows NT and newer, PrivilegesRequired=lowest now has an additional effect: the uninstall info root key will always be HKEY_CURRENT_USER, and the "common" forms of the Shell Folder constants are always mapped to the "user" forms, even if administrative privileges are available.
- [Setup] section directive CreateUninstallRegKey may now be set to a boolean expression, which may contain calls to check functions. For example: CreateUninstallRegKey=not IsTaskSelected('portablemode'). See the CreateUninstallRegKey documentation for details.
- The Preparing to Install wizard page now offers the user an option to directly reboot instead of just saying a reboot is needed. To trigger this option from a PrepareToInstall event function set its new NeedsRestart parameter to True.
- In the MinVersion and OnlyBelowVersion directives and parameters, .x is now treated the same as .0x when a major version of 5 or higher is specified. Thus, you now have the option of using either 5.01 or 5.1 to specify Windows XP. However, to maintain compatibility with existing scripts, 4.x will still be interpreted as 4.x0.
- Pascal Scripting: Added new PageIndexFromID support function.
- The online documentation available at http://www.jrsoftware.org/ishelp/ now has an index and is searchable.
- QuickStart Pack changes:
- The uninstall program's version is now 51.(10)51.0.0.
- Minor tweaks.
5.3.7 (2010-01-06)
- The PrivilegesRequired [Setup] section directive can now be set to lowest. On Windows Vista and later this instructs Setup to not request elevated rights (via a User Account Control dialog) even if it was started by a member of the Administrators group. Do not use this setting unless you are sure your installation will run successfully on unprivileged accounts. If you were using PrivilegesRequired=none before, it is recommended to switch to PrivilegesRequired=lowest.
- Added new Compiler IDE option: Autosave before compiling.
- [Tasks] section flags checkedonce and unchecked may now be combined. This combination specifies the task to be unchecked by default on the first install, and always unchecked by default on subsequent installs as well.
- A problem with "Not Implemented" errors when Setup or Uninstall was run on Windows 7 under special conditions such as from a non-interactive service was fixed.
- Changed the CodePrepareToInstall.iss example script to use the RunOnce registry key instead of a shortcut placed in {commonstartup}.
- Pascal Scripting: the Non Unicode compiler now has a PAnsiChar type just like the Unicode compiler.
- Added official Japanese translation.
- Unicode [Code] based on RemObjects Pascal Script SVN code revision 197.
- Minor tweaks.
5.3.6 (2009-11-14)
- Windows 7 change:
- Added new [Setup] section directive: UninstallDisplaySize. On Windows 7 and newer, Setup uses this directive to set the EstimatedSize value in the Uninstall registry key when possible since the Windows 7 Add/Remove Programs Control Panel (called Program and Features) no longer automatically calculates it. If an UninstallDisplaySize is not set, Setup estimates the size itself by taking the size of all files installed and adding any ExtraDiskSpaceRequired values set. Note: Windows 7 only supports the display of values smaller than 4 GB.
- Pascal Scripting now supports IUnknown based COM. Previously it only supported IDispatch based COM but a growing number of Windows API functions are COM based without implementing the IDispatch interface, and you can now use these as well. See the new CodeAutomation2.iss example script for an example. Note: this is only supported by Unicode Inno Setup at the moment, because of Delphi 2's limitations (Delphi 2 is used to compile Non Unicode Inno Setup):
- Added StringToGUID, CreateComObject, and OleCheck support functions.
- Added HResult, TGUID, TCLSID, and TIID support types.
- The compiler no longer allows a single LanguageCodePage directive to be applied to multiple languages at once. If you were using this to force Non Unicode Setup to allow the user to select any language regardless of the system code page, set [Setup] section directive ShowUndisplayableLanguages to yes instead.
- Added new CodePrepareToInstall.iss example script.
- Fix: Unicode Pascal scripting: passing a very long string to Format caused an error.
- Minor tweaks.
5.3.5 (2009-09-23)
- Windows 7 changes:
- Setup, Uninstall and custom TOutputProgressWizardPage pages now make use of the new Windows 7 taskbar functionality to display progress, pause and error indicators on their taskbar buttons.
- Added new [Icons] section parameter: AppUserModelID. Specifies the Windows 7 Application User Model ID for the shortcut. Ignored on earlier Windows versions and on server versions. This parameter can include constants.
- Windows 7 and Vista changes:
- Setup, Uninstall and custom TOutputProgressWizardPage pages now display pause and error indicators on their progress bars.
- Setup and Uninstall now call the Windows API function ShutdownBlockReasonCreate to set the shutdown block reason string to be displayed to the user if system shutdown is initiated. Note: this change is purely cosmetic, the fact that Setup and Uninstall block system shutdown is not new.
- Pascal Scripting changes:
- TWinControl: Added new ParentBackground property. By setting this to False, you can ensure the background of a TPanel will always display the color assigned to its Color property, instead of it becoming transparent under certain conditions. See the CodeClasses.iss example script for an example.
- The Unicode compiler now behaves identical to the Non Unicode compiler if a language uses more than one .isl file (it no longer requires the LanguageCodePage to be set in each file), or if a languages LanguageCodePage is overwritten from the .iss file (it no longer ignores this), or if any language specific plain text ANSI LicenseFile, InfoBeforeFile, or InfoAfterFile is used (it now converts these to Unicode using the languages LanguageCodePage at compile-time, instead of using the system codepage at run-time).
- Fix: Pascal scripting: passing a Unicode string to some built-in functions like Copy caused the string to be converted to ANSI.
- The uninstall program's version is now 51.(10)50.0.0.
- Minor tweaks.
5.3.4 (2009-08-15)
- On Windows 7 the Compiler IDE now makes use of the new Windows 7 taskbar functionality to display progress, pause and error indicators on its taskbar button.
- Pascal Scripting: Documented function IDispatchInvoke, which can be used to access a COM Automation property or method whose name is a reserved word.
- Fix: Unicode [Registry] section entries with ValueType set to binary did not set the correct value.
- Fix: Pascal scripting: setting a COM Automation property or method parameter to a Unicode string variable caused an 'Invalid Type' error.
5.3.3 (2009-08-01)
- [Setup] section directives VersionInfoProductVersion now sets the binary product version value instead of the textual product version value.
- Added new [Setup] section directive: VersionInfoProductTextVersion, which sets the textual product version value. Its default value is VersionInfoProductVersion if set, else VersionInfoVersion.
- [Setup] section directives DisableDirPage and DisableProgramGroupPage can now be set to auto. If they are, at startup Setup will look in the registry to see if the same application is already installed, and if so, it will hide the pages automatically.
- Pascal Scripting changes:
- WizardForm.PrevAppDir is now available and returns the directory of the previous installation. Returns an empty string if there's no previous installation or if UsePreviousAppDir is set to no or if Uninstallable was previously set to no.
- While running any PrepareToInstall event function Setup now displays the Preparing to Install wizard page instead of the Ready to Install page and disables itself.
- Added the Windows 7 "compatibility" section to the various manifest resources used by Inno Setup.
- Documentation improvements.
5.3.2-beta (2009-05-29)
- Replaced constant {regasmexe} with {dotnet11} and {dotnet20}.
- Pascal Scripting: Added new PrepareToInstall event function. Return a non empty string from this function to instruct Setup to stop at the Preparing to Install wizard page showing the returned string as the error message.
- Minor fixes and tweaks.
5.3.1-beta (2009-05-15)
- [Setup] directive AppMutex and support function CheckForMutexes change: to specify a mutex name containing a comma you can now escape the comma with a backslash.
- Minor tweaks.
5.3.0-beta (2009-04-22)
- Added .NET support (these cause an internal error if used on a system with no .NET Framework present):
- Added new [Files] section flag: gacinstall.
- Added new [Files] section parameter: StrongAssemblyName.
- Added new constants: {regasmexe}, {regasmexe32}, {regasmexe64}.
- MinVersion parameter/directive change: if you leave one of the versions empty then it will use the default MinVersion for that platform.
- Pascal Scripting: Added new MinimizePathName support function.
- Added Unicode support: there's now a second version of Inno Setup available called Unicode Inno Setup. Key features of this version are its ability to display any language on any system regardless of the system code page, and its ability to work with Unicode filenames. Notes:
- Unicode Inno Setup uses the existing ANSI .isl language files and you should not and may not convert these to Unicode or anything similar since it does so automatically during compilation using the LanguageCodePage setting listed inside the language's .isl file. However, you do need to convert existing [Messages] and [CustomMessages] entries in your .iss files to Unicode if the language used a special LanguageCodePage.
- The [Setup] directive ShowUndisplayableLanguages is ignored by Unicode Inno Setup.
- Unicode Inno Setup is compiled with Delphi 2009 instead of Delphi 2 and 3, leading to slightly larger files. The source code however is still compatible with Delphi 2 and 3, and a non Unicode version will remain available.
- Unicode Inno Setup and installers created by it require Windows 2000/XP or newer. The non Unicode version still works on NT/9x.
- Existing installations of your programs done by non Unicode installers can be freely updated by Unicode installers, and vice versa.
- Unicode Pascal Scripting notes:
- The Unicode compiler sees type 'String' as a Unicode string, and 'Char' as a Unicode character. Its 'AnsiString' type hasn't changed and still is an ANSI string. Its 'PChar' type has been renamed to 'PAnsiChar'.
- The Unicode compiler is more strict about correct ';' usage: it no longer accepts certain missing ';' characters.
- The new RemObjects PascalScript version used by the Unicode compiler supports Unicode, but not for its input source. This means it does use Unicode string types as said, but any literal Unicode characters in the script will be converted to ANSI. This doesn't mean you can't display Unicode strings: you can for example instead use encoded Unicode characters to build Unicode strings (like S := #$0100 + #$0101 + 'Aa';), or load the string from a file using LoadStringsFromFile.
- Some support functions had their prototype changed: some parameters of CreateOutputMsgMemoPage, RegQueryBinaryValue, RegWriteBinaryValue, OemToCharBuff, CharToOemBuff, LoadStringFromfile, SaveStringToFile, and GetMD5OfString are of type AnsiString now instead of String.
- Added new SaveStringsToUTF8File, and GetMD5OfUnicodeString support functions.
- If you want to compile an existing script that imports ANSI Windows API calls with the Unicode compiler, either upgrade to the 'W' Unicode API call or change the parameters from 'String' or 'PChar' to 'AnsiString'. The 'AnsiString' approach will make your [Code] compatible with both the Unicode and the non Unicode version.
- Unicode Inno Setup supports UTF-8 encoded .iss files (but not UTF-16).
- Unicode Inno Setup supports UTF-8 and UTF-16LE encoded .txt files for LicenseFile, InfoBeforeFile, and InfoAfterFile.
- QuickStart Pack: added ISPP predefined variable UNICODE.
- Thanks to Carlo Kok and Evgeny Karpov of RemObjects Software for their help related to Unicode support.
- QuickStart Pack: added ISPP functions Trim, and GetMD5OfUnicodeString.
5.2.4 (2009-03-16)
- Added new [Registry] section ValueType: qword.
- Added new [Setup] section directive: SignTool, which makes it possible to further automate digital signing of Setup and Uninstall. See the help file for more information.
- The value of the AppVersion directive is now also used to set the MajorVersion and MinorVersion values in the Uninstall registry key when possible.
- /LOG: Now logs exit codes on [UninstallRun] entries.
- Compiler IDE changes:
- Added new Tools | Configure Sign Tools... command.
- Command line compiler changes:
- Added new "/S" parameter to specify a Sign Tool.
- Added new [Files] section flag: sortfilesbyname.
5.2.3 (2008-03-10)
- Improved support for right-to-left languages (Arabic and Hebrew):
Added new [LangOptions] section directive: RightToLeft. If set to yes, text alignment and reading order will be reversed (with some intentional exceptions), and controls will be arranged from right to left ("flipped").
- Added new [Setup] section directives: VersionInfoProductName and VersionInfoProductVersion.
- Changed the fixed Language field in Setup's version info from "English (United States)" to "Language Neutral".
- Uninstall now supports custom message constants ({cm:...}) like Setup.
- Right-to-left-related Pascal Scripting changes:
- The control flipping that is performed when RightToLeft=yes is mostly transparent, normally requiring no changes to existing code. Controls created on custom wizard pages will be flipped automatically after the InitializeWizard event function returns, and controls created on custom forms will, by default, be flipped the first time the form is shown.
- Changes to TSetupForm (the class used for custom forms):
- Added RightToLeft Boolean property (read-only): True if right-to-left text alignment and reading order is enabled on the form. The RightToLeft [LangOptions] directive determines the value of this property.
- Added FlipControlsOnShow Boolean property: If True (the default setting if RightToLeft is True), controls on the form will be flipped the next time the form is shown. After the form has been shown, the property is reset to False automatically.
- Added ControlsFlipped Boolean property (read-only): True if the controls have been flipped.
- Added FlipControlsIfNeeded method. This flips the controls immediately if FlipControlsOnShow is True, then resets FlipControlsOnShow to False.
- Added new classes: TNewEdit, TNewMemo, TNewComboBox, TNewButton, TNewCheckBox, TNewRadioButton, and TNewListBox. On these classes, right-to-left text alignment and reading order is used when the parent TSetupForm's RightToLeft property is True.
- TNewStaticText: Added ForceLTRReading property. If set to True, the text will always be rendered with left-to-right reading order, overriding the parent form's RightToLeft setting.
- Other Pascal Scripting changes:
- TNewStaticText: Added AdjustHeight method. This adjusts the value of the Height property to fit the text. Only useful when AutoSize is set to False.
- Added new object UninstallProgressForm of class TUninstallProgressForm. Also added new event function InitializeUninstallProgressForm, which is called after the Uninstall progress form has been created and before it is shown. See the help file and the CodeClasses.iss example script for more information.
- Added workaround for bug in Windows Vista (still present in SP1): With UAC turned off, launching an uninstaller from the Programs and Features Control Panel applet and answering No at the confirmation message box would cause a "This program might not have uninstalled correctly" dialog to be displayed, even though the uninstaller includes a proper "Vista-aware" manifest.
- Compiler IDE changes:
- The New Script Wizard now generates random unique AppId [Setup] section directives.
- Added new Tools | Generate GUID command.
- QuickStart Pack: added ISPP functions GetMD5OfFile, GetMD5OfString and GetFileDateTimeString.
- Minor tweaks.
5.2.2 (2007-10-22)
- The Setup loader now extracts the Setup program executable file with a ".tmp" extension. Versions 5.2.0 and 5.2.1 used a ".exe.tmp" extension, which reportedly, in some cases, caused an "Unable to execute file in temporary directory" error message on systems with a certain antivirus program installed. We were unable to reproduce the error in our own tests, however; it is suspected that this may have only impacted users with custom filename blocking rules defined in their antivirus configuration.
- Pascal Scripting: Added new GetSaveFileName support function.
- Fix: The compiler could fail with an "Out of memory" error on script files containing more than ~100,000 lines, due to a heap fragmentation issue.
5.2.1 (2007-10-13)
- Added new [Setup] section directive: SignedUninstaller, which makes it possible to attach a digital signature to the uninstaller program (unins???.exe). When the uninstaller has a valid digital signature, Windows Vista users will not see an "unidentified program" warning when launching it from outside of Control Panel.
- Added new [Setup] section directive: SignedUninstallerDir.
- Check functions associated with [Tasks] entries are now called when the Select Tasks wizard page is entered. Previously, they were called prior to the wizard being shown, which meant they couldn't depend on the user's selections in preceding wizard pages. (There are plans to make the same change to [Components] in the future.)
- Brought back the pre-5.1.13 duplicate [Components]/[Tasks] entry semantics. For example, in the following case:
[Tasks]
Name: foo; Description: "foo #1"; Components: bar
Name: foo; Description: "foo #2"; Components: not bar
Name: foo\child; Description: "foo\child"
"foo\child" will now, once again, be shown regardless of which "foo" is conditionally created.
- Pascal Scripting: "files:" function imports may now include multiple filenames. "files:A.dll,B.dll" will cause both A.dll and B.dll to be extracted before A.dll is loaded.
- On Windows Vista, Setup no longer alters the uninstaller program's manifest resource to request elevation, because this would invalidate a digital signature. Instead, the uninstaller now respawns itself when elevation is required, much like Setup does beginning with version 5.2.0.
- The uninstall program's version is now 51.49.0.0.
- Minor tweaks.
5.2.0 (2007-09-19)
- On Windows Vista, [Run] section entries with the postinstall flag no longer inherit Setup's elevated privileges by default, and instead now execute with the (normally non-elevated) credentials of the user that started Setup initially. (There are some exceptions; see the runasoriginaluser flag documentation for details.)
- Added new [Run] section flags: runascurrentuser and runasoriginaluser. These control which user credentials are used on Windows Vista when spawning processes. (runasoriginaluser is the default when the postinstall flag is used; runascurrentuser is the default otherwise.)
- Improved compression of x86 executable files. (This reduced the size of Inno Setup's own installer by approximately 10 KB.)
- Added new [Files] section parameter: ExternalSize.
- Added new constant: {log}. Translates to the log file name, or an empty string if logging is not enabled.
- Added new [Files] and [Dirs] sections flags: setntfscompression and unsetntfscompression. These flags instruct Setup to enable or disable NTFS compression on the file or directory.
- Pascal Scripting:
- Added new ExecAsOriginalUser, ShellExecAsOriginalUser, and SetNTFSCompression support functions.
- Now supports new DLL loading flag loadwithalteredsearchpath to load DLLs with the Windows flag LOAD_WITH_ALTERED_SEARCH_PATH.
- The Setup loader now uses the original Setup EXE filename + .tmp as the filename for the extracted Setup executable instead of a name comprised of random letters and numbers, which may have seemed suspicious to firewall users.
- In a multilingual installation, Setup now waits until after the Select Language dialog is shown to display any error messages concerning the user's Windows version or privilege level.
- QuickStart Pack: added ISPP function GetDateTimeString.
- Fix: On Windows Vista, AutoPlay wasn't being suppressed when the user swapped out discs in a disk-spanned install.
- Fix: When the waituntilidle flag was used in the [UninstallRun] section, it behaved like waituntilterminated.
- Based on RemObjects Pascal Script SVN code revision 1045a.
- The uninstall program's version is now 51.48.0.0.
- Minor tweaks.
5.1.14 (2007-08-07)
- Updated the LZMA SDK compression code to version 4.49. This version adds support for multi-threading, which can speed up the compression process by 50% or more on systems with multiple processor cores, and 20% or more on systems with single-core Intel processors featuring Hyper-Threading Technology.
- Added new CompressionThreads [Setup] section directive.
- Fix: When cleaning the output directory, the compiler would not only delete files matching OutputBaseFilename-*.bin, but files matching OutputBaseFilename-*-*.bin as well.
5.1.13 (2007-07-22)
- Added new lzma/ultra64 compression level. Same as lzma/ultra, but uses a dictionary size that is twice as large (64 MB).
- Added new SetupLogging [Setup] section directive. If set to yes, Setup will always create a log file (equivalent to passing /LOG on the command line).
- Added new AppSupportPhone [Setup] section directive.
- Added new [Files] section flag: solidbreak.
- Added new [Run] and [UninstallRun] sections parameter: Verb. When used with the shellexec flag, specifies the action to be performed on the file.
- When the shellexec flag is used in the [Run] and [UninstallRun] sections, it now uses the default verb for the file type instead of hardcoding "open". (If necessary, you can override this by adding a Verb parameter.)
- Setup now supports a /TYPE parameter to override the default setup type.
- Components/tasks-related changes:
- /COMPONENTS & /TASKS: When a parent component/task is specified, it no longer automatically checks every child component/task. To achieve the old behavior, prefix the name of the parent component/task with a "*" character, or list each child component/task individually.
- /COMPONENTS: It is now possible to force a child component to be deselected by including its name in the list with a "!" prefix. (/TASKS already supports this.)
- /COMPONENTS is now ignored if no custom type is defined.
- /SAVEINF now writes the selected setup type in the INF file. Previously, using /LOADINF would always select a custom type.
- /SAVEINF now writes the selected tasks in the INF file.
- When a MinVersion/OnlyBelowVersion/Languages/Check/Components parameter causes a parent component/task to be hidden from view, child items will now be hidden as well. (Previously, it was necessary to include the same conditions on every child item in order for them to be hidden along with the parent item.)
- Fix: When new child components/tasks were introduced in a new install, they would always be selected by default if the parent component/task was selected in the previous installation.
- Fix: /LOADINF would select child components that weren't selected during the initial install.
- Fix: In a /COMPONENTS parameter, it is no longer necessary to list fixed components in order for them to be selected.
- Pascal Scripting changes:
- FindFirst/FindNext: Add CreationTime, LastAccessTime, LastWriteTime, AlternateName fields to TFindRec.
- TInputFileWizardPage: Added new IsSaveButton property. This can be used to make a button open a Save As dialog instead of the default Open dialog.
- TNewCheckListBox: Setting Checked[] to True will no longer automatically check an item's child check boxes. To do that now, call the new CheckItem method with coCheckWithChildren in the AOperation parameter.
- ParamStr/ParamCount: Empty parameters ("") are no longer skipped.
- /LOG: Logged times now include milliseconds.
- Compiler IDE changes:
- During the compression phase of a compile, the status bar now shows the estimated time remaining and KB compressed/second.
- The Edit | Redo shortcut is now Ctrl+Y. The previous shortcut (Shift+Ctrl+Z) still works too.
- Fix: In the [INI] section, if Filename was blank, the uninsdelete* flags didn't actually delete anything.
- The uninstall program's version is now 51.47.0.0.
- Minor tweaks.
5.1.12 (2007-04-24)
- Fix: On Windows Vista, attempting to expand a shell folder constant that mapped to the root directory of a drive would fail with an error message. This was due to a bug in Vista's SHGetFolderPath API. A workaround for the problem has been implemented.
- On Browse dialogs, the BrowseDialogLabel message text may now span multiple lines.
- The OnlyOnThisPlatform message is no longer used. Now, when a Windows 95/98/Me user attempts to run an installation with a MinVersion setting that blocks installation on non-NT platforms, Setup will display the WinVersionTooLowError message, which is a bit more helpful as it mentions the required version number.
- Corrected some trivial one-pixel-off issues when non-default dialog fonts or font sizes were used.
- Added official Hebrew translation.
- Minor tweaks.
5.1.11 (2007-03-01)
- On Windows 2000 and later, it now uses Windows' own regsvr32.exe to handle DLL registration/unregistration instead of an internal program. This should address errors seen on Windows Vista when registering certain older DLLs. (Windows Vista applies a compatibility fix known as "WRP Mitigation" to regsvr32.exe, which allows it to successfully register DLLs that attempt to write to system registry keys in violation of Windows Resource Protection.)
- Some messages have been added and removed in this version.
(View differences in Default.isl)
- New messages: ErrorRegSvr32Failed.
- Removed messages: ErrorRegisterServerMissingExport.
- The uninstall program's version is now 51.46.0.0.
- Minor tweaks.
5.1.10 (2007-02-17)
- Added two new [Run]/[UninstallRun] section flags: 32bit and 64bit. Similar to the [Files] section flags of the same name, these override the install mode and affect which System directory the {sys} constant maps to on 64-bit Windows.
- Pascal Scripting:
- Added new EnableFsRedirection support function.
- On the Exec function, you can now pass '>' in the Filename parameter and it will use the value of the Params parameter as the full command line. This feature can come in handy when executing command lines obtained from UninstallString registry values; no longer is it necessary to separate strings into filename and parameter components manually.
- Fix: IsComponentSelected and IsTaskSelected didn't accept forward slashes.
- Improved Setup's folder tree view control (seen when a Browse button is clicked):
- On Windows Vista, it now uses the same theme as Windows Explorer.
- On Windows Vista, for consistency with Explorer, single-clicking in a node's text area no longer causes the node to expand.
- Like Windows Explorer, folder nodes now use the shell's "display names", as opposed to the actual directory names. This matters on localized versions of Windows Vista, where the on-disk names of system folders are always in English.
- The system "icon" font is now used instead of the default dialog font. This font defaults to Segoe UI on Windows Vista, and typically Tahoma or MS Sans Serif on earlier versions of Windows.
- Disconnected network drives are now listed; expanding one will restore the connection (on Windows 2000, Me, and later).
- On the Select Destination Location wizard page (as well as custom directory selection pages created using the CreateInputDirPage support function), if the letter of a disconnected network drive is entered, and the user is running Windows XP or later, it will now attempt to restore the connection automatically when Next is clicked. (It also does this on silent installs.)
- On Windows Vista, eliminated the flickering on Setup's progress bar (purely a cosmetic issue).
- On Windows Vista, Setup now calls SetProcessDPIAware to avoid bitmap scaling when Windows is configured to use Large Fonts and the "Use Windows XP style DPI scaling" option is unchecked (not the default setting).
- Compiler IDE changes:
- Added new option: Always launch Setup/Uninstall as different user. This forces the IDE to display a "Run as" dialog when launching Setup/Uninstall.
- The Stop Compile command now displays a confirmation message box.
- Added a "Vista-aware" manifest resource to ISCC so it doesn't request elevation on Windows Vista.
- Fix: ISCC didn't always print error messages when standard output was redirected to a file.
- When Setup fails to set the permissions on files, directories, or registry keys, the error code is now included in the log output.
- When Setup fails to expand a shell folder constant, a warning message containing the error code is now logged.
- Changed the way version information is read from VXD files to be more compliant with the MSDN docs.
- The uninstall program's version is now 51.45.0.0.
- Minor tweaks.
5.1.9 (2006-12-10)
- Change in default behavior: The PrivilegesRequired [Setup] section directive now defaults to admin. The default in all previous versions was none. More often than not, installations do need administrative privileges to run successfully; therefore, none should not be used unless you have actually tested your installation on unprivileged accounts.
- On Windows Vista, the setting of the PrivilegesRequired directive now influences whether elevated rights are requested when the installation is started under a user account that does not have administrative privileges. Installations built with previous versions of Inno Setup always requested elevation on Vista. Beginning with this version, elevation will not be requested if the user is unprivileged and PrivilegesRequired is set to none.
- On Windows Vista, the uninstaller will no longer request elevation when Setup was never run with administrative privileges.
- URLs (web site addresses) may now be specified in the Filename parameter of [Icons] section entries. When a URL is detected, Setup will create an Internet Shortcut (.url) file instead of a regular shortcut.
(Note: While you could sometimes get away with specifying URLs in previous versions of Inno Setup, it was never recommended because the shortcuts would fail to resolve on Windows 95 or NT 4.0. Internet Shortcuts, on the other hand, will work on any version of Windows, as long as Internet Explorer is installed.)
- Added workaround for bug in the 64-bit version of Windows Vista: The fields on the User Information wizard page would default to "Microsoft".
- Pascal Scripting: Added new FontExists support function.
- The uninstall program's version is now 51.44.0.0.
- Minor tweaks.
5.1.8 (2006-10-11)
- Converted the documentation to HTML Help format for compatibility with Windows Vista, which does not support WinHelp-based help files at all (as of RC2). HTML Help is also said to work better with screen readers. Much of the conversion process was done by hand, so there may be some mistakes. Please report any problems you encounter.
- Updated the LZMA SDK compression/decompression code to version 4.43. Compression is noticably faster in this version. (Compiling Inno Setup's own installer used to take 7 seconds; now it takes 4.)
- Added a "requestedExecutionLevel" setting to Setup's manifest resource to disable Windows Vista's legacy application compatibility hacks. Now you should no longer see bogus "This program might not have installed correctly" dialogs when cancelling installations or after running installations that do not create an Uninstall key.
Note: It is possible that you were unwittingly relying on some of these application compatibility hacks, so it is recommended that you re-test your installations on Windows Vista after upgrading to this version.
- When deleting a .chm file, the uninstaller will now automatically delete any corresponding .chw file as well.
- Paths that are accessed at compile time may now include a "userdocs:" prefix, which is replaced with the path of your My Documents folder. For a usage example, see any of the example scripts.
- Setup now creates an "InstallDate" value in the Uninstall key so that Vista's Programs and Features Control Panel applet doesn't have to guess the "Installed on" date.
- Pascal Scripting changes/improvements:
- The StringChange function now returns an Integer indicating the number of changes made. Performance was also improved.
- Introduced new StringChangeEx function, which adds support for strings containing double-byte characters (used in Chinese, Japanese, and Korean languages). Unless you require binary safety, this function should be used instead of StringChange, especially if you're working with strings containing paths or filenames.
- IDE changes:
- The Open and Save As dialogs now permit sizing and include a places bar.
- On Windows Vista, the IDE no longer requests administrative privileges when started. (You will, however, still see UAC popups when launching compiled installations from within the IDE.)
- When you compile an unsaved script, the output is now placed under your My Documents folder (instead of the current directory). It asks if you want to save the script first, though.
- Updated bzip2 library to version 1.0.3.
- Minor tweaks.
5.1.7 (2006-08-18)
- New [Setup] section directive: TerminalServicesAware. If set to yes (the default), the "Terminal Services aware" flag will be set in the headers of the Setup and Uninstall programs. Most notably, this ensures that the {win} constant consistently returns the system's real Windows directory on systems with Terminal Services installed in application mode. Refer to the help file for details.
- The program Setup internally uses to register/unregister DLLs/OCXs is now compiled with the "Terminal Services aware" flag set, like Microsoft's regsvr32.exe.
- When determining which language to select by default, Setup now checks the LanguageCodePage values of each language in addition to LanguageID. Previously, Traditional Chinese could be auto-selected on a Simplified Chinese system due to both languages having the same primary language ID. This resulted in unreadable text as they use completely different character sets (code pages).
- New [Setup] section directive: ShowUndisplayableLanguages. If set to yes, all languages will be listed in the Select Language dialog, including those that cannot be displayed properly on the user's system. If you were using the LanguageCodePage=0 trick in your script before, you should replace it with this to avoid the above-mentioned problem with Chinese languages.
- A unique value is now appended to unins*.exe files so that uninstallers from different applications won't have the same hash.
- The compiler now flags MSCOREE.DLL as an "unsafe" file.
- Fix: The createallsubdirs [Files] section flag didn't properly escape directory names containing "{" characters.
- Fix: The text on the Finished wizard page wasn't initialized when a restart was needed and /NORESTART was used without /SILENT.
- Pascal Scripting: Defined new DWORD_PTR, UINT_PTR, and INT_PTR types for completeness.
- Added official Basque and Spanish translations.
- The uninstall program's version is now 51.43.0.0.
- Minor tweaks.
5.1.6 (2005-11-18)
- Registration and unregistration of 32-bit DLLs is now performed in an external process. This change was primarily made to ensure that a buggy DLL cannot bring down the entire Setup/Uninstall process by, for example, corrupting its memory.
- Pascal Scripting changes/improvements:
- The already-existing AnsiUppercase and AnsiLowercase functions are now documented. Unlike their non-Ansi counterparts, these can handle non-ASCII characters (e.g. accented letters).
- TNewCheckListBox: Added new ItemCaption property. This can be used to change the caption of an already-created item. (Setting an item's caption through the Items property is not supported by TNewCheckListBox.)
- OLE is now initialized before registering a 64-bit DLL.
- While Setup is waiting for a 64-bit DLL to register, it now processes messages.
- On CD/DVD-spanned installs, fixed issue with AutoPlay not being suppressed if you clicked OK too quickly on the Setup Needs the Next Disk dialog after swapping CDs/DVDs.
- When WindowVisible=yes, the gradient background now uses 256 colors instead of 64, resulting in a smoother appearance when running in 24- or 32-bit color mode.
- In the documentation for the Excludes [Files] section parameter, mention that a simple Unix-style pattern matching routine is used, which exhibits some differences from the DOS/Windows-style pattern matching used in the Source parameter.
- Added official Slovak translation.
- Minor tweaks.
5.1.5 (2005-08-17)
- Added new VersionInfoCopyright [Setup] section directive, which allows you to set the Copyright field in Setup's version info.
- Pascal Scripting changes/improvements:
- New functions: CustomMessage, FmtMessage.
- The FileExists function no longer strips off any trailing backslash from the specified filename. Previously, FileExists('c:\filename\') could return True.
- TNewCheckListBox: Add new RequireRadioSelection Boolean property, which defaults to False. The "require a selection on top-level radio button groups" behavior introduced in 5.1.4 is now optional and disabled by default on user-created TNewCheckListBoxes.
- Now handles values with surrounding quotes consistently across all [Setup] and [LangOptions] directives. Previously, only certain directives would strip surrounding quotes; now they all do. If you were relying on the old, inconsistent behavior, it may be necessary to tweak your scripts.
- On [INI] section entries whose filenames include paths, it now checks if the directories exist and creates them if necessary.
- For consistency with regsvr32, FPU exceptions are now masked while registering/unregistering 32-bit DLLs.
- /LOG: When processing a [Files] entry that has the 32bit or 64bit flag, it now logs a message to that effect.
- Added official Finnish translation.
- SetupLdr's internal data is now stored in a resource instead of in the DOS header. This should address compatibility issues with third-party apps that replace the DOS header.
- Updated zlib library to version 1.2.3.
- Minor tweaks.
5.1.4 (2005-05-30)
- New command line parameters supported by Setup: /TASKS and /MERGETASKS. These can be used to initially select/deselect tasks.
- Pascal Scripting: Added new GetWindowsVersionEx function, which returns extended information about the user's version of Windows, including the service pack level and product edition (e.g. Professional or Home, Standard or Enterprise Server).
- Using /COMPONENTS= with an empty components list now deselects all components. Ditto for "Components=" in a .INF file (loaded via /LOADINF). Previously, it would keep the default selection in these cases.
- On the Select Tasks wizard page, when the list of tasks has to be reinitialized due to the user going back and changing the component selection, it now restores the checked state of the items from when the page was last shown.
- It should no longer be possible for a top-level, exclusive group of components or tasks to have no selection. If the script specifies that all items in the group are to be unchecked, Setup will check the first item automatically.
- Removed 1024-character limit on .INI-file values read via the {ini:...} constant or GetIniString support function. Now, values can be up to 64 KB in length, or the maximum length supported by the operating system, whichever is smaller.
- Fix: The CreateOleObject and GetActiveOleObject support functions leaked references in some cases.
- Fix: Setup would crash or fail to start if passed a command line parameter more than 255 characters in length. (This was due to a buffer overflow bug in a Delphi run-time library function.)
- Based on RemObjects Pascal Script SVN code revision 1045.
- Minor tweaks.
5.1.3-beta (2005-05-03)
- Pascal Scripting:
- When Setup/Uninstall is running in 64-bit mode, most of the support functions that access files now disable WOW64 file system redirection, meaning they are now capable of working with files located in the 64-bit System directory. Some, however, still do not. See the 64-bit Installation Limitations topic in the help file for specifics.
- Replaced FileSearch function with a new implementation that properly supports MBCS, and doesn't search the current directory unless it is told to (e.g. by including "." in the directory list).
- Uninstaller: Now hides the taskbar button when the /VERYSILENT switch is used.
- IDE change: Added an option to the New Script Wizard to specify that the application doesn't have a main executable file.
- Based on RemObjects Pascal Script SVN code revision 1039.
- Minor tweaks.
5.1.2-beta (2005-04-14)
- Addressed some 64-bit limitations in previous betas:
- Setup is now capable of registering 64-bit DLLs/OCXs and 64-bit type libraries. When Setup is running in 64-bit mode, the regserver and regtypelib [Files] section flags assume that files are 64-bit by default. If you need to register a 32-bit file in a 64-bit mode install, include the new 32bit flag.
- Setup is now capable of setting permissions on 64-bit registry keys and on files located in the 64-bit System directory.
- Added two new [Files] section flags: 32bit and 64bit. These override the install mode and affect which System directory the {sys} constant maps to, whether the regserver and regtypelib flags treat the file as 32-bit or 64-bit, and which SharedDLLs key the sharedfile flag updates.
- Pascal Scripting: Added new Is64Bit parameters to the following functions: IncrementSharedCount, DecrementSharedCount, RegisterServer, UnregisterServer, RegisterTypeLibrary, UnregisterTypeLibrary. See the documentation for details.
- Setup will now only append to existing uninstall logs created by installs done in the same bit mode (32- or 64-bit).
- When an error occurs while registering a DLL/OCX/type library after a restart, it now displays an error message, provided the noregerror flag isn't used. Before, it was silent.
- Constants may now be used in the AppMutex [Setup] section directive.
- Added official Brazilian Portuguese, Danish, Hungarian, and Italian translations.
- Renamed official Standard Portuguese translation file from PortugueseStd.isl to Portuguese.isl.
- Various minor fixes to the 64-bit functionality.
- Updated the LZMA SDK compression/decompression code to version 4.16. The new version incorporates some fixes and a minor speed improvement.
- Based on RemObjects Pascal Script SVN code revision 1033.
- The uninstall program's version is now 51.42.0.0.
- Minor tweaks.
5.1.1-beta (2005-03-24)
- When Setup is running in 64-bit mode, it is now possible to install files to the 64-bit System directory, and execute programs located there.
The {sys} constant now maps to the 64-bit System directory when used in the [Dirs], [Files], [InstallDelete], [Run], [UninstallDelete], and [UninstallRun] sections. Elsewhere, the {sys} constant still maps to the 32-bit System directory. See the Install Mode: 32-bit vs. 64-bit and 64-bit Installation Limitations topics in the help file for details.
- Added workaround for bug in the 64-bit editions of Windows prior to Windows Server 2003 SP1 RC2 which caused the restartreplace [Files] section flag to fail when used on files installed to {sys}. (Specifically, Windows would try to replace the file in the 64-bit System directory instead of the 32-bit one.)
- Compiler: A warning is now emitted instead of an error when a custom message isn't defined for all languages.
- Fix: The /COMPONENTS command line parameter supported by Setup didn't accept forward slashes in component names -- only backslashes.
- Fix: The compiler no longer automatically strips any trailing slashes/backslashes from the Subkey parameter of [Registry] entries. Versions 5.0.8 and 5.1.0-beta stripped forward slashes. This was wrong because valid registry key names can include forward slashes.
- Fix: When files were deleted by an [InstallDelete]/[UninstallDelete] section entry or DelTree function call, it also inappropriately stripped the read-only attribute from directories that matched the wildcard.
- Fix: An "internal error" message was displayed if the user removed all contents from the Select Start Menu Folder wizard page's edit control and also checked the Don't create a Start Menu folder check box.
- Based on RemObjects Pascal Script SVN code revision 1032.
- The uninstall program's version is now 51.41.0.0.
- Minor tweaks.
5.1.0-beta (2005-03-01)
- Inno Setup now has initial support for the installation of 64-bit applications on 64-bit versions of Windows:
- Setup can run in one of two modes: 32-bit or 64-bit. 64-bit mode is selected if the user is running a 64-bit version of Windows and the system's processor architecture is included in the value of the new ArchitecturesInstallIn64BitMode [Setup] section directive. Otherwise, 32-bit mode is used.
How do the two modes of installation differ? Primarily, the differences lie in where things are installed by default. For example, 64-bit applications have their own Program Files directory, and their own isolated view of the registry. See the Install Mode: 32-bit vs. 64-bit topic in the help file for details.
- Added new [Setup] section directive ArchitecturesAllowed. When set, it specifies which processor architecture(s) Setup is allowed to run on.
- Even when running in 32-bit mode, Setup is capable of installing files and creating registry keys in 64-bit locations, and vice versa. New options have been added that override the default locations:
- New constants: {pf32}, {pf64}, {cf32}, {cf64}.
- Root key names used in the [Registry] section, {reg:...} constants, and the Reg* [Code] support functions may now include 32 or 64 suffixes to specify either the 32-bit or the 64-bit view of the registry respectively.
- To allow "multi-architecture" installations, new [Code] support functions have been added: IsWin64, Is64BitInstallMode, ProcessorArchitecture.
- Added new {syswow64} constant and GetSysWow64Dir support function.
- Added new example scripts: 64Bit.iss, 64BitTwoArch.iss, and 64BitThreeArch.iss.
- Note: There are some limitations to be aware of when utilizing the 64-bit installation features. See the 64-bit Installation Limitations topic in the help file for details. There are plans to address these limitations in the near future, where possible.
Purchase of the necessary 64-bit development hardware has been made possible by our kind donators, many thanks to them!
- Pascal Scripting: New Format support function, which replaces the old Format1, Format2, Format3, and Format4 functions. Unlike those functions, Format accepts a variable number of arguments, and supports argument types other than strings.
- Compiler: A warning is now emitted instead of an error when an unrecognized message name in a [Messages] section is encountered.
- IDE changes: The New Script Wizard now allows you to specify the Setup languages.
- /LOG improvement: The parameters of programs spawned in the [Run] and [UninstallRun] sections are now logged.
- '&' characters in the BeveledLabel message no longer need to be escaped using another '&'.
- Some messages have been added and removed in this version.
(View differences in Default.isl)
- New messages: OnlyOnTheseArchitectures, MissingWOW64APIs, TranslatorNote, UninstallOnlyOnWin64.
- Removed messages: NoIconsCheck.
- Based on RemObjects Pascal Script SVN code revision 1024.
- The uninstall program's version is now 51.40.0.0.
- Minor tweaks.
5.0.8 (2005-02-17)
- IDE changes:
- Added support for setting breakpoints (Run | Toggle Breakpoint).
- The dots in the editor's gutter now shift properly when you insert/remove lines while debugging. (Note, however, that any changes you make while debugging won't take effect until you re-compile.)
- Uninstaller: When a DLL/OCX was installed multiple times by separate installations of the same application, the uninstaller would unregister the DLL/OCX once for each install. As an optimization, it will now unregister the DLL/OCX only once.
- Compiler: Using outdated .isl files that are missing some messages no longer results in a fatal compiler error. Now, warnings will be printed, and the missing messages will be pulled from Default.isl.
- Various improvements/fixes to the parsing of pathnames. For example, ExtractFilePath('\\server\share') now returns \\server\share rather than \\server, and ExtractFileDir('path\\') now returns path rather than path\\.
- When recursively deleting directories (for example, from an [InstallDelete] entry or a call to DelTree), it no longer recurses into reparse points.
- The value of the NoProgramGroupCheck2 message is now always used as the caption of the "no icons" check box on the Select Start Menu Folder page of the wizard. Previously, it used either NoIconsCheck or NoProgramGroupCheck2 depending on whether an installation had [Icons] entries with Tasks parameters.
- exclusive [Tasks] items that have no visible siblings are no longer automatically converted into check boxes. (If you really want check boxes, then you shouldn't use the exclusive flag.)
- Based on RemObjects Pascal Script SVN code revision 1022.
- Minor tweaks.
5.0.7 (2005-01-19)
- When AllowNoIcons and UsePreviousGroup are set to yes, the Don't create any icons setting is now preserved between installs.
- Both Setup and Uninstall now support a /SUPPRESSMSGBOXES command line parameter to suppress message boxes. This parameter only has an effect when combined with /SILENT or /VERYSILENT. See the help file for more details.
- IDE changes:
- Various enhancements to the New Script Wizard.
- Added a new Tools menu with a command that opens the Add/Remove Programs Control Panel applet.
- When stepping through code, the IDE now uses a different method of bringing Setup to the foreground, and vice versa. Previously, if for some reason Setup hung it was possible for the IDE to hang as well.
- /LOG changes:
- Now logs the contents of message boxes.
- On NT platforms, the OS service pack level is now logged, as well as the privilege level of the user (Administrative, Power User, or None).
- Now doesn't skip the replacement of a protected system file until after the version numbers of the new and existing files are logged.
- Pascal Scripting changes/improvements:
- Added new CharLength, DLLGetLastError, RegWriteExpandStringValue and SuppressibleMsgBox functions.
- GetSpaceOnDisk no longer requires that a root directory be specified, or that a trailing backslash be included.
- Removed the requirement that Windows NT 4.0 users have SP6 installed, which was added in version 5.0.1-beta. Setup should run on previous service pack levels but no guarantees can be made as I generally only test with SP6. Therefore I recommend setting MinVersion to at least 4.0,4.0sp6 if possible.
- Removed legacy code that searched for and deleted Uninstall keys with suffixes of _is2 and higher. Only Inno Setup 1.08 (from 1998) created such keys.
- Reverted the change in 5.0.4-beta that made it automatically expand relative paths specified in [Icons] section because it didn't work when the paths contained environment-variable strings (e.g. %SystemRoot%\...).
- Fix: In 5.0.6, if you clicked Back on the Select Tasks wizard page and changed component settings causing a different set of tasks to be activated, the new tasks would show up with the wrong item type when you returned to the Select Tasks wizard page. (If you do not have tasks with Components parameters, then this bug did not affect you.)
- Fix: In rare cases, component and task items with multi-line captions were painted incorrectly (strictly a cosmetic issue).
- Fix: The UninstallSilent support function always returned False.
- Fix: Even though they were not being installed, files with the dontcopy flag were being displayed on the installation progress page and included in the required disk space figure(s).
- Tweaked wording of the ExitSetupMessage message.
(View differences in Default.isl)
- Based on RemObjects Pascal Script SVN code revision 1017.
- Minor tweaks.
5.0.6 (2004-12-24)
- This version introduces a new Inno Setup logo, new icons for the Inno Setup IDE, and new wizard images for the Inno Setup installer, created by glyFX.
- New [Files] section flag: createallsubdirs. By default the compiler skips empty directories when it recurses subdirectories searching for the Source filename/wildcard. The createallsubdirs flag causes these directories to be created at install time (just like if you created [Dirs] entries for them). Must be combined with recursesubdirs.
- New flag supported by the [Components] and [Tasks] sections: checkablealone. This flag specifies that the component/task can be checked when none of its children are. By default, if no Components/Tasks parameter directly references the component/task, unchecking all of the component/task's children will cause the component/task to become unchecked.
- Pascal Scripting changes/improvements:
- An AddEx function has been added to TInputOptionWizardPage to allow the addition of subitems.
- Various properties have been added to the TInput...WizardPage classes to allow access to the wizard page controls.
- Event function NeedRestart is now called near the end of the installation process instead of at the beginning.
- In DLL function imports, new options 'setuponly' and 'uninstallonly' are supported, which cause a DLL to be loaded only when the script is running from Setup or Uninstall, respectively.
- Added new UnloadDLL and GetShellFolderByCSIDL functions.
- /LOG changes:
- No longer (automatically) logs when the event functions InitializeSetup, InitializeWizard, GetCustomSetupExitCode, and DeinitializeSetup are called successfully -- only if they raise exceptions, and in the case of InitializeSetup, if False is returned.
- Now logs the function name when the NeedRestart, RegisterPreviousData, InitializeUninstall, DeinitializeUninstall, CurUninstallStepChanged, and UninstallNeedRestart event functions raise exceptions.
- Compiler IDE changes/improvements:
- New "Debug Output" view that shows log messages from Setup/Uninstall in real time. (These are the same messages seen in the log file produced when Setup/Uninstall is run with the /LOG switch.)
- New Pause on exceptions option (accessible via View | Options). Unchecking this will prevent the debugger from pausing when an exception is raised from [Code].
- Now preserves the position of the splitter when you close the IDE.
- Console-mode compiler (ISCC.exe): A new /F switch is supported which can be used to specify a new output filename, overriding any OutputBaseFilename setting in the script.
- Improved Setup load time on installations containing hundreds of components at varying levels.
- Updated zlib library to version 1.2.2.
- Fix: When multiple patterns were specified in a [Files] section Excludes parameter, patterns that included backslashes were handled incorrectly.
- Fix: [Components]: If you had two child radio buttons and one had children of its own, then unchecking & rechecking the top-level item would cause both radio buttons to be checked.
- Based on RemObjects Pascal Script SVN code revision 1000.
- Minor tweaks.
5.0.5-beta (2004-11-14)
- New [Setup] section directive: OutputManifestFile. When set, the compiler will create a text file detailing information about the files compiled into Setup.
- Pascal Scripting changes/improvements:
- Added new exception-related functions: GetExceptionMessage, RaiseException, and ShowExceptionMessage.
- The ExtractTemporaryFile support function now raises an exception with a descriptive error message when it fails, instead of returning a Boolean indicating success/failure.
- GetSpaceOnDisk: Added new InMegabytes parameter. By setting it to False, you can get figures in bytes (capped at 2 GB-1).
- RegWriteMultiStringValue: When writing values, it now appends two null terminators automatically, like [Registry] does when writing multisz-type values.
- Console-mode compiler (ISCC.exe) improvements:
- A new /O switch is supported which can be used to specify a new output path, overriding any OutputDir setting in the script.
- A new /Q switch is supported which causes it to compile quietly, printing only error messages.
- Error messages are now written to standard error instead of standard output.
Note: If you were previously redirecting all compiler messages to a file using >filename you will now need to use >filename 2>&1 to capture standard error as well. If you wish to redirect only standard error, use 2>filename.
- When ChangesAssociations=yes and/or ChangesEnvironment=yes are used, it now notifies Windows of the changes after any [Run] section entries are processed and the CurStepChanged(ssPostInstall) event function is called.
- Reverted one of the small image placement changes in 5.0.4: horizontally centering has been restored.
- Fix: When the ExpandConstant support function was called at uninstall time, {common*} constants always mapped to their {user*} equivalents even if the user had administrative privileges.
- Fix: ChangesEnvironment=yes worked on Windows NT 4.0 and 2000 but had no effect on Windows XP.
- Fix: When writing empty REG_MULTI_SZ values, it should only append 1 null terminator, not 2.
- Based on RemObjects Pascal Script SVN code revision 983.
- The uninstall program's version is now 51.34.0.0.
- Minor tweaks.
5.0.4-beta (2004-10-06)
- New [Setup] section directive: ChangesEnvironment. When set to yes, at the end of the installation Setup will notify other running applications (notably Windows Explorer) that they should reload their environment variables from the registry.
- Pascal Scripting changes/improvements:
- The support functions CreateCustomForm, ScaleX, and ScaleY may now be called at uninstall time.
- TRichEditViewer support class improvement: The Color property is now respected.
- /LOG improvements:
- It's now possible to specify a fixed path/filename to use for the log file via /LOG="filename".
- Now logs when various event functions are called, and in the case of InitializeSetup it also logs the return value of the function.
- Now logs when DLL/OCX/type library registration fails, even if the noregerror flag is specified.
- Stretching of the small wizard image (specified by WizardSmallImage) now only occurs if the image is larger than the default size, or if the user is running larger-than-normal fonts. Previously, it always attempted to stretch the image.
- The WizardSmallImageBackColor [Setup] section directive is now deprecated and ignored. Any unused space around the small wizard image is now filled with the standard window color (usually white).
- Relative paths specified in [Icons] section entries are now converted into absolute paths automatically.
- Fix: On Windows XP, folder shortcuts (which were introduced in 5.0.3-beta) showed ".lnk" at the end of them.
- Based on RemObjects Pascal Script SVN code revision 960.
- The uninstall program's version is now 51.33.0.0.
- Minor tweaks.
5.0.3-beta (2004-08-16)
- New supported [Files] section flag uninsnosharedfileprompt, which tells the uninstaller to automatically remove the shared file when its reference count reaches zero instead of asking the user. Must be combined with the sharedfile flag to have an effect.
- New supported [Icons] section flag foldershortcut, which creates a special type of shortcut known as a "Folder Shortcut". Normally, when a shortcut to a folder is present on the Start Menu, clicking the item causes a separate Explorer window to open showing the target folder's contents. In contrast, a "folder shortcut" will show the contents of the target folder as a submenu instead of opening a separate window.
Folder shortcuts are only supported by Windows 2000, Me, and later. On earlier versions of Windows, Setup will fall back to creating a normal shortcut when this flag is used.
- Pascal Scripting changes/improvements:
- The return value of the CreateShellLink function has changed from a Boolean to a String. Now, any failure results in an exception being raised.
- The uninstaller is now capable of removing directories that have the read-only attribute set. (No special flags are needed; this is the default behavior.)
- Based on RemObjects Pascal Script SVN code revision 948.
- The uninstall program's version is now 51.32.0.0.
- Minor tweaks.
5.0.2-beta (2004-08-05)
- Pascal Scripting changes/improvements:
- New GetUILanguage support function.
- Compiler IDE: When a file has been modified outside the editor, offer to reload it.
- Fix: The per-page event functions introduced in 5.0.1 that returned Boolean values didn't work properly.
- Fix: When the overwritereadonly [Files] section flag was used and Setup was unable to remove the read-only attribute from a file (e.g. due to ACL restrictions), it would get stuck in an infinite loop.
- Based on RemObjects Pascal Script SVN code revision 947.
5.0.1-beta (2004-08-02)
- Compiler IDE: the toolbar now uses a modern looking set of images kindly donated by glyFX.
- Setup/Uninstall can now wait on processes spawned using [Run]/[UninstallRun] entries that have the shellexec flag. Combine shellexec with either the new waituntilterminated flag (the default behavior when shellexec isn't specified) or the waituntilidle flag.
- When Setup is running on Windows NT 4.0, Service Pack 6 is now required. This change shouldn't impact any significant number of users; SP6 was released five years ago, and almost all other programs that still support NT 4.0 nowadays have the same requirement.
- Pascal Scripting changes/improvements:
- Added new supported event function CancelButtonClick, which is called when the user clicks the Cancel button.
- The prototype of the CurStepChanged function has changed, as has the names of the CurStep values passed to it. See the help file for details.
- The names of the values passed to the CurUninstallStepChanged function have changed. See the help file for details.
- Per-page event functions are now supported. TWizardPage and its descendants now include these properties: OnActivate, OnBackButtonClick, OnCancelButtonClick, OnNextButtonClick, OnShouldSkipPage. See the Support Classes Reference topic in the help file for the prototypes of these event functions.
- Replaced the InstExec function with a new function named Exec. The new function offers the same functionality as the old one, but uses a slightly different prototype. The WaitUntilTerminated and WaitUntilIdle parameters have been replaced with a single Wait parameter.
- Replaced the InstShellExec function with a new function named ShellExec. The new function adds Verb and Wait parameters. To get ShellExec to behave the same way as the old function, specify 'open' in the Verb parameter and ewNoWait in the Wait parameter.
- Replaced the FindFirst and FindNext support functions with new versions that return more information about found files and can handle nested searches. Any existing scripts that called these functions will need updating. There is also a new FindClose function that you should call at the end of a find sequence.
- Replaced the confusingly-named ShouldProcessEntry support function with new functions named IsComponentSelected and IsTaskSelected.
- The Wizard* support functions now raise exceptions if you call them before the wizard has been initialized, instead of returning empty strings.
- On a file that has the uninsrestartdelete flag the containing directory will now also be removed at uninstall time.
- When extracting files, Setup now sets just the modification times instead of the creation and modification times.
- /LOG improvement: Now logs permission setting on files/directories/registry keys.
- The compiler now flags UXTHEME.DLL as an "unsafe" file.
- Dropped the obsolete WizModernImage2.bmp and WizModernSmallImage2.bmp images.
- Based on RemObjects Pascal Script SVN code revision 945.
- The uninstall program's version is now 51.31.0.0.
- Minor tweaks.
5.0.0-beta (2004-07-14)
- The size of compiled installations has decreased by 22-26 KB from Inno Setup 4.2.7, primarily due to the merging of Setup and Uninstall into a single binary.
- Pascal Scripting can now be used to customize Uninstall:
- Added Uninstall specific event functions InitializeUninstall, DeinitializeUninstall, CurUninstallStepChanged and UninstallNeedRestart.
- Added support functions IsUninstaller and UninstallSilent.
Furthermore, the compiler IDE now supports Uninstall debugging. To debug Uninstall, first run Setup from the IDE, install your application, select Target Uninstall in the Run menu and finally use the debugger functions as normal.
See the help file and the UninstallCodeExample1.iss example script for more information.
- The custom wizard page support has been completely redesigned from the ground up. The new design uses an event-driven model just like standard wizard pages; no longer do you have to write complicated loops to handle sequences of custom pages.
Any existing code utilizing custom wizard pages will need updating; all of the old functions have been replaced. Please see the new Using Custom Wizard Pages topic in the help file and the CodeDlg.iss and CodeClasses.iss example scripts for examples of how to use the new custom wizard page model.
- Besides space separated lists, you may now also use boolean expressions as Components, Tasks, Languages and Check parameters. Supported operators include not, and, and or. For example:
[Components]
Name: a; Description: a
Name: b; Description: b
[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b
- This syntax of function parameters in Check, BeforeInstall and AfterInstall parameters has changed to allow a list of multiple, comma separated, parameters and the use of Integer and Boolean parameter types besides String types. For example, you may now use:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, 'Some text')
[Code]
function MyCheck(I: Integer; B: Boolean; S: String): Boolean;
begin
Result := (I > 0) and B and (S <> '');
end;
Also, there's one support function that may be called from within a parameter list: ExpandConstant. For example:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, ExpandConstant('{app}'))
Existing scripts using function parameters will need to be updated.
- The functions specified by {code:...} constants and by Check, BeforeInstall and AfterInstall parameters may now refer to support functions too, for example:
[Components]
Name: adminonly; Description: My Admin Only Component; Check: IsAdminLoggedOn
[Files]
Source: MyProg.exe; DestDir: {app}; BeforeInstall: Log('About to install MyProg.exe')
Source: MyProg.hlp; DestDir: {app}\Help; Check: DirExists(ExpandConstant('{app}\Help'))
[INI]
FileName: {app}\MyIni.ini; Section: MySettings; Key: ShortApp; String: {code:GetShortName|{app}}
FileName: {app}\MyIni.ini; Section: MySettings; Key: AppDrive; String: {code:ExtractFileDrive|{app}}
- Wizard-related event functions such as NextButtonClick are now called on silent installs as well. In fact, silent installs now function almost identically to non-silent ones with the exception that the Next button is automatically "clicked".
- Logging improvements:
- The filenames of programs spawned in the [Run] section are now logged.
- The /LOG parameter is now also supported by Uninstall, which causes Uninstall to create a log file in the user's TEMP directory detailing file uninstallation and [UninstallRun] actions taken during the uninstallation process. This can be a helpful debugging aid. See the Uninstall Command Line Parameters topic in the help file for further details.
- A new ShouldSkipPage event function has been added, which replaces SkipCurPage. Existing scripts that contain a SkipCurPage function will need to be updated. Note that unlike the old SkipCurPage event function, the page passed to the ShouldSkipPage function is not the current page.
- Added support function Abort. Calling Abort throws an exception to abort the current operation. It does not terminate Setup or Uninstall unless it's still starting up.
- When extracting a file, Setup now pre-allocates all of the bytes in the destination file on disk. This allows the system to know what the final size of the file will be before extraction begins, and avoid fragmenting it.
- The compiler now fully supports script files that use Unix-style line breaks (LF only).
- The Setup section directive UninstallIconFile is now deprecated and ignored. As Setup and Uninstall have been merged into a single executable, setting a custom icon for Uninstall is no longer possible.
- The Setup section directive UninstallStyle is now deprecated and ignored. Only the "modern" uninstaller style is supported now.
- Based on RemObjects Pascal Script SVN code revision 933.
- The uninstall program's version is now 51.30.0.0.
- A very large number of minor tweaks.
- This version is derived from Inno Setup 4.2.7, and therefore includes all of the features and fixes from that version.
Inno Setup 4.2 & 4.1 Revision History