Inno Setup 1.3
Revision History
|
Copyright © 1998-2001 Jordan Russell. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.
(Note: "ISX" refers to Martijn Laan's My Inno Setup Extensions.)
1.3.26 (1/20/01)
- Added {ini:...} constant from ISX.
- Fixed problem with OnlyBelowVersion build number comparison on non-NT platforms.
- Fixed a very rarely encountered problem relating to Inno Setup's merging of duplicate files feature.
1.3.25 (12/21/00)
- Uninstaller now supports a /SILENT command line parameter. When it is specified, the uninstaller will not ask the user any questions or display a message stating that uninstall is complete. Shared files that are no longer in use are deleted automatically without prompting. Any critical error messages will still be shown on the screen.
- Changed the way braces are interpreted inside {reg:} constants. Now when embedding another constant inside a {reg:} constant, you no longer have to escape "{pf}", for example, as "{pf%7d". Instead you just type in "{pf}" literally. Note that using "%7d" to escape the closing brace of a constant is not permitted anymore, meaning existing scripts which did that must be updated.
- Added new flag to [Files] section: onlyifdestfileexists. When specified, Setup will only copy the file if a file of the same name already exists on the user's system. This flag may be useful if your installation is a patch to an existing installation, and you don't want files to be copied that the user didn't already have.
- The directory and drive list as used on the Select Directory page have been improved. They now both use the system image list if it's available. This means the same icons will be used as used by Windows itself and no longer the fixed "Windows 95" bitmaps. (All credit goes to Martijn Laan for this feature.)
- The drive list on the Select Directory page now refreshes automatically when drives are added/removed while Setup is running.
- Miscellaneous documentation tweaks.
1.3.24 (12/1/00)
- Now supports a runmaximized flag in the [Icons], [Run], and [UninstallRun] sections.
- Fixed problem with a temporary file being left over after Setup restarted the computer.
- Fixed problem with flags not working properly on [UninstallRun] entries. (It was applying the flags from the most recent UninstallRun entry in the uninstall log to all of the entries.)
- When Setup fails to register a DLL/OCX, it now displays a textual description of the error in addition to the code.
- Uninstaller now suppresses error messages when the system is unable to load a DLL for unregistering.
- The uninstall program's version is now 51.4.0.0.
1.3.23 (11/22/00)
- Wizard's directory list now includes directories that have the System attribute. Previously, they were hidden from view. (Changed NewFCtrl.pas)
- Double-clicking folders in the wizard's directory list now works right if DefaultDirName contains a {reg} constant.
- Minor fixes to compiler's constant and end tag checking.
- Miscellaneous documentation tweaks.
1.3.22 (10/17/00)
- New Options dialog in the compiler (View | Options), with options for disabling the "Would you like to test it now" message, creating backups of saved script files, and reassociating the compiler with the .iss extension.
- The compiler engine is now in a DLL called iscmplr.dll. Ordinary users of Inno Setup won't be concerned with this change, but those writing script-editing front-ends may be. It allows for compilation of scripts without spawning any external programs. For more information on interfacing to the DLL, see the source code README.
- New constant: {localappdata}.
- Fixed problem with the "version too high" message showing the wrong service pack number.
- Compiler now checks for invalid constants in DefaultDirName and UninstallDisplayIcon.
1.3.21 (9/22/00)
- New "read from registry" constant which allows you to embed a registry value whereever normal constants are used. It is in the format: "{reg:HKxx\SubkeyName,ValueName|DefaultValue}".
- HKxx is the root key; see the [Registry] section documentation for a list of possible root keys.
- SubkeyName is the name of the subkey.
- ValueName is the name of the value to read; leave ValueName blank if you wish to read the "default" value of a key.
- DefaultValue determines the string to embed if the specified registry value does not exist, or is not a string type (REG_SZ or REG_EXPAND_SZ).
- If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d".
- DefaultValue may include constants. However, the closing brace ("}") of an embedded constant must be changed to "%7d" as described above.
- Fix: In the [Files] section, DestName was ignored when the external flag was specified. (This bug only existed in versions 1.3.17 through 1.3.20.)
1.3.20 (8/26/00)
- New [Setup] section directive: UpdateUninstallLogAppName, default is "yes". If "yes", when appending to an existing uninstall log, Setup will replace the AppName field in the log with the current installation's AppName. That was how it always worked in previous versions. Now you can set UpdateUninstallLogAppName to "no" to prevent that from happening.
- Fixed two problems reported by Cor Camps that occurred when "Cancel" was pressed during installation of a new version of an application that was already installed previously.
- The uninstaller would no longer start because the new installation would replace the original installation's uninsXXX.exe file without writing out the uninstaller messages (which would have happened if the installation wasn't canceled). It now replaces the uninsXXX.exe file after finishing all installation steps.
- The Add/Remove Programs entry for the program would be removed. It now creates the registry entries for the Add/Remove Programs entry after finishing all other installation steps.
1.3.19 (8/25/00)
- MinVersion and OnlyBelowVersion can now include build numbers and/or service pack levels. Examples: "5.0.2195", "5.0sp1", "5.0.2195sp1". If a build number is not specified or is zero, Setup will not check the build number. If a service pack level is not specified or is zero, Setup interprets it as meaning "no service pack." Note that Setup can only check the service pack level on NT 4.0 and later, so specifying "3.51sp5" to detect NT 3.51 SP5 will not work.
- New constant {username}, which translates to the name of the currently logged in user.
- New constants {usertemplates}, {commontemplates}, {userfavorites}, and {commonfavorites}. The "favorites" constants require a MinVersion of at least "4.1, 4". Currently only Windows 2000 supports {commontemplates} and {commonfavorites}; when used on previous Windows versions, they will translate to the same directories as the "user" versions of the constants.
- Fixed a spelling mistake in Default.isl; "occurred" was misspelled as "occured". (Thanks to Kris Schoofs for reporting this; shame on everyone else who didn't ;)
1.3.18 (8/6/00)
- This version fixes a bug that was introduced in 1.3.17's file copying. If certain critical errors, such as "access denied" or "source file corrupted", occurred while a file was being extracted and the user chose Retry at the Abort/Retry/Ignore dialog, then on subsequent retries Setup would try to make a copy of itself (setup.exe) under the name of the destination file being extracted. Basically, it was trying to extract the wrong file.
While I'd say the issue was rarely encountered, it could cause serious problems if the bug surfaced while Setup was replacing an important system file, for example. I strongly recommend all who have compiled installations with 1.3.17 recompile them with 1.3.18 immediately.
1.3.17 (7/27/00)
- Wildcards are now accepted in [Files] entries that include the external flag.
1.3.16 (7/15/00)
- The Inno Setup License file has been updated; see LICENSE.TXT. It is also now included with the binaries too.
- Added a toolbar to the compiler, and fixed an issue with the Save As command.
- Added dontcreatekey flag to [Registry] section.
1.3.15 (7/5/00)
- New Flags in the [Icons] section: "closeonexit" and "dontcloseonexit", which will set the "Close on Exit" option on shortcuts to MS-DOS applications (those that are .pif files, to be specific). When neither are specified, Setup will not attempt to change the setting (just like in prior versions).
1.3.14 (7/2/00)
- New [Setup] section directive: AppMutex. This directive is used to prevent the user from installing new versions of an application while the application is still running, and to prevent the user from uninstalling a running application. It specifies the names of one or more named mutexes (multiple mutexes are separated by commas), which Setup and Uninstall will check for at startup. If any exist, Setup/Uninstall will display the message: "[Setup or Uninstall] has detected that [AppName] is currently running. Please close all instances of it now, then click OK to continue, or Cancel to exit."
In Delphi, to create a mutex, call CreateMutex(nil, False, 'MyApplication'sMutexName') at application startup. In C, call CreateMutex(NULL, FALSE, "MyApplication'sMutexName"). It is not necessary to explicitly destroy the mutex object upon your application's termination; the system will do this automatically. Nor is it recommended that you do so, because ideally the mutex object should exist until the process completely terminates.
- Removed the 32KB size limitation on the files specified by LicenseFile, InfoBeforeFile, and InfoAfterFile directives, since the rich edit support introduced in 1.3.13 has no size limit.
- On the "x.x MB" disk space display, it now uses the system's decimal separator instead of ".".
- The uninstall program's version is now 51.3.0.0.
- Source code change: Renamed Dlgs unit to WinDlgs, to make it possible again to compile on Delphi 3 and up.
- New messages: SetupAppRunningError, UninstallAppRunningError.
1.3.13 beta (6/18/00)
- Added a "progress" dialog on the uninstaller.
- RTF (rich text) files can now be used in LicenseFile, InfoBeforeFile, and InfoAfterFile directives.
- Added a slick new "Remove Shared File" dialog on the uninstaller, with Yes to All, No to All buttons, and copyable filenames (they're in Edit windows like InstallShield).
- When ChangesAssociations is "yes", the uninstaller now refreshes file associations too.
- The uninstall program's version is now 51.2.0.0.
- Known source code problem: When compiling under Delphi 3 or higher, you must rename the Dlgs unit to something else, such as "WinDlgs". The next release will make this change.
1.3.12 (6/7/00)
- New flag supported in the [Registry] section: noerror. When used, Setup will not display an error if it fails to create the key or value specified by the entry.
- Fixed problem: In previous versions, when Setup failed to create a registry entry specified by the [Registry] section that didn't have a root key of HKLM, HKCU, or HKCR, it would display an erroneous error message.
1.3.11 (5/26/00)
- The constants {userappdata} and {userdocs} are now supported on Windows 95 too. (Previously, usage of them required a MinVersion of at least 4.1.) This is possible since Setup now extracts the redistributable SHFolder.dll library (into the installation's temporary directory), which provides Setup with properly localized folder names for Application Data and My Documents.
- There are new constants {commonappdata} and {commondocs}, which are supported on all Windows versions since 95 as well.
- The DisplayName Uninstall registry entry is now truncated to 63 characters for compatibility with Windows 9x's (and possibly NT 4's) Add/Remove Programs Control Panel applet -- entries whose names exceed 63 characters aren't displayed.
1.3.10 (5/18/00)
- New [Setup] section directive: UsePreviousGroup, default is "yes". Now Setup by default will reuse the program group from a previous install. Similar to UsePreviousAppDir (see documentation).
- Three new optional [Messages] section entries have been added for specifying custom fonts and sizes to use in the Setup program: _DialogFont, _TitleFont, and _CopyrightFont. See the new comment added to the top of Default.isl for usage examples.
- Multiple files can now be specified in the MessagesFile [Setup] section directive. The files are read in the order they are specified, thus the last message file overrides any messages in previous files.
Example: MessagesFile=compiler:Default.isl,Another.isl
- Fixed bug in the Find feature of the Compiler's editor: it didn't work on files greater than 64 KB in size.
- In Default.isl, NoIconsCheck has been changed to "&Don't create any icons". (The "&" is new.)
- Source code changes: To accomidate the new font customization feature, Scaled has been changed to False on Wizard.dfm, Install.dfm, NewDisk.dfm, and SelDir.dfm. Other changes have also been made to the .pas files.
1.3.9 (5/12/00)
- New runminimized and skipifdoesntexist flags in the [Run] section (the latter is from Martijn Laan's modifications, with slight changes).
- Quotes are now permitted in the Parameters parameter of [Icons] section entries on Windows 95/NT 4+.
- New deletekey & deletevalue flags in [Registry] section for deleting keys and values during the Setup process.
- New RunOnceId parameter supported on [UninstallRun] section entries (see documentation).
- All [UninstallRun] entries in an uninstall log are now executed together at the beginning of the uninstallation process. Previously, if you installed the same application twice, it would execute the second installation's [UninstallRun] entries, remove the second installation's files, then execute the first installation's [UninstallRun] entries, and remove the first installation's files.
- The uninstall program's version is now 51.1.0.0.
1.3.8 (5/3/00)
- Continuing on 1.3.7's fix, using "{{" in the Source parameter of a file with the external flag caused the file to be copied with two "{" characters. Where directory constants are supported, "{{" is supposed to translate to a single "{" character. Fixed.
1.3.7 (5/3/00)
- The Source parameter of the [Files] section didn't correctly handle filenames containing the character "{" (they caused Setup to give an error message). Fixed.
1.3.6 (5/1/00)
- Since Inno Setup 1.3 is only available in a 32-bit version, the [Setup] section directive Bits is no longer required and is now obsolete.
- The [Setup] section directive OverwriteUninstRegEntries is now ignored and obsolete. It always functions as if OverwriteUninstRegEntries is set to 1, which was the default.
- The [Setup] section directive DisableDirExistsWarning has been superseded by a new directive named DirExistsWarning. See the help file for details.
- New [Setup] section directive: UninstallDisplayIcon. See the help file for details.
- New [Setup] section directive: UninstallDisplayName. See the help file for details.
- When a user has administrative privileges on NT/2000, Setup now looks for and deletes old Uninstall registry keys under HKEY_CURRENT_USER in addition to HKEY_LOCAL_MACHINE. Previously if a user without administrative privileges installed an application, and was later given administrative privileges and installed a new version of the application, there would be two Uninstall keys -- one under HKEY_CURRENT_USER and one under HKEY_LOCAL_MACHINE.
- Now includes a new WizImage.bmp file, contributed by Tim Rude, which has the diskettes pointing the right way.
1.3.5 (4/22/00)
- Fixed a problem with the disk space check that affected Windows NT only. If a user had between 4096 MB (or any multiple of 4096) of free disk space and 4096 MB + the required disk space for your program, Setup would erroneously display a warning message saying that there is not enough free disk space on the drive. For example, if your program required 2 MB of disk space, the user would need to have between 4096 and 4098 MB of free disk space for the message to be displayed. Clearly, the chance that a user would have ever seen the error message is very slim. (In fact, in Inno Setup's 3+ year existance, the problem wasn't discovered and reported until now.) It is important to emphasize the error message was not fatal; the user could simply say "Yes" when asked if Setup should continue anyway.
1.3.4 (beta) (4/18/00)
- Fixed a bug in the Compiler that caused the virus scanner AVP to report that the resulting Setup.exe was corrupted.
Details: The bug caused the Compiler to change a field in the EXE's DOS header. The DOS header in Windows executables isn't used by Windows, so this bug did not affect the operation of the Setup program in any way.
1.3.3 (beta) (4/12/00)
- New [Setup] section directive: BackColor2, default is "clBlack". This lets you customize the second color of the gradient background on the Setup program's main window. Previous Inno Setup versions always used black.
The BackSolid directive is now obsolete; when it is set to 1, it makes BackColor2 the same as BackColor.
- New [Setup] section directive: BackColorDirection, possible values: toptobottom, lefttoright; default is toptobottom. Specifies the direction of the gradient background.
- New [Setup] section directive: UninstallFilesDir, default is "{app}". Change this if you want the unins*.* files to be stored in a directory other than {app}.
Note: You should not assign a different value here on a new version of an app, or else Setup won't find the uninstall logs from the previous versions and will be forced to start a new uninstall log.
1.3.2 (beta) (4/8/00)
- It was recently discovered that the Add/Remove Programs Control Panel applet of Windows 95 (and possibly other Windows versions) chokes on Uninstall key names greater than 63 characters in length. Setup now automatically truncates the name to 63 characters or less. To avoid unwanted truncation, make sure that AppId (or AppName if AppId isn't set) is no more than 57 characters long.
Technical details: The truncation works by taking the first 48 characters of the original name, appending a tilde character, followed by an 8-digit CRC of the entire original name. (With the CRC, it is able to distinguish between multiple keys whose first 48 characters are the same.)
- The compiler now enforces a 127-character limit on the [Setup] section directives AppName and AppId.
- In the compiler, compiling could fail with Word Wrap enabled because it thought that text wrapped from previous lines were new lines. Until I find a solution for this, it now asks you to turn off Word Wrap before compiling.
1.3.1 (beta) (4/5/00)
- New [Setup] section directive: UsePreviousAppDir, default is 1. Setup now saves the directory an application is installed to in the uninstall registry key for the application (under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall). Subsequent installs will check for and use this path as the default directory name on the Select Destination Directory wizard page. To disable this new behavior, set UsePreviousAppDir to 0.
- Revamped the uninstall log file format some more. The format is incompatible with 1.3.0. There hopefully will be no more incompatible changes to the uninstall log file format. The uninstall program's version is now 51.0.0.0.
- The uninstall registry key for the application is now created on Windows NT 3.51 too, even though it doesn't have an Add/Remove Programs Control Panel applet. This way the uninstall entry will appear if the user later upgrades to Windows NT 4.0 or 2000, and also it allows the new behavior mentioned in the above description of UsePreviousAppDir to work on NT 3.51 also.
- Major source code revamping: I've changed nearly all PChar variables to Strings now that the 16-bit version of Inno Setup has been discontinued. Also improved error response during setup initialization; previous versions would, in certain rare cases, continue on after a supposedly fatal error message (to fix this, several of the FormCreate event handlers have been replaced with an overridden Create constructor).
- It now logs the computer name, user name, and time and date of installation in the uninstall log. This information isn't used for anything now.
- New message: UninstallUnknownEntry.
1.3.0 (beta) (4/1/00)
Don't use the uninstall-log-appending feature of 1.3.0 in production apps yet. I've decided to make some more changes to the uninstall log file format in 1.3.1, which will break backward compatibility with 1.3.0.
- Starting with this version, there will no longer be any new 16-bit versions of Inno Setup released, unless a bug in found in the latest 16-bit release. The market for 16-bit Windows apps is essentially dead, and I do not want to continue spending time putting up with the limitations of 16-bit programming (and programming in Delphi 1).
- When a program is installed more than once, Setup will now by default append to an existing uninstall log (unins???.dat file) that belongs to the same app and is in the same directory, instead of creating a new one. This is a very significant addition, because in pre-1.3 Inno Setup versions, users that installed multiple versions of a program had to run multiple uninstallers (e.g. unins002.exe, unins001.exe, then unins000.exe) to fully uninstall the program. (Thanks to Jason Olsen for contributing the code on which this feature is based.)
- Only uninstall logs created with an Inno Setup 1.3.0 or later installation can be appended to, since the unins???.dat file has a new format to accomidate this addition. (Additionally, the new format is now CRC-checked to detect corruption.)
- The uninstaller will use the Messages from the most recent installation of the application. However, there is an exception: if the current installation was built with an older version of Inno Setup that included an older version of the uninstaller than the existing one, neither the existing uninstaller nor its messages will be replaced. In this case the uninstall log will still be appended to, though, since the file format is backward compatible. At this time, the version of the uninstaller is not an issue, as there's only a single "new" version of the uninstaller out (50.0.0.0).
- New [Setup] section directive: AppId. If not specified or blank, AppId is assumed to be the same as AppName.
- The value of AppId is stored inside uninstall log files (unins???.dat), and is checked by subsequent installations to determine whether it may append to a particular uninstall log. Setup will only append to an uninstall log if the AppId of the existing uninstall log is the same as the current installation's AppId. For a practical example, say you have two installations -- one entitled My Program and the other entitled My Program 1.1 Update. To get My Program 1.1 Update to append to My Program's uninstall log, you would have to set AppId to the same value in both installations.
- AppId also determines the actual name of the Uninstall registry key, to which Inno Setup tacks on "_is1" at the end. (Therefore, if AppId is "MyProgram", the key will be named "MyProgram_is1".) Previous versions of Inno Setup based the key name on the value of AppVerName.
- AppId is a not used for display anywhere, so feel free to make it as cryptic as you desire.
- New [Setup] section directive: UninstallLogMode, with three possible values: append, new, overwrite. "append", the default, tells Setup to append to an existing uninstall log when possible (see the top of this list for more details). "new", which corresponds to the behavior in pre-1.3 versions of Inno Setup, tells Setup to always create a new uninstall log. "overwrite" tells Inno Setup to overwrite existing uninstall logs instead of appending to them (why you'd want to do that I don't know; I just went ahead and added that ability anyway). The same aforementioned rules for appending to existing logs apply to overwriting existing logs.
- New [Setup] section directive: CreateUninstallRegKey, default is 1. When set to 0, Setup won't create an entry in the Add/Remove Programs Control Panel applet. This can be useful if your installation is merely an update to an existing application and you don't want another entry created, but don't want to the disable the uninstall features entirely (via Uninstallable=0).
- New [Setup] section directives: AppPublisher, AppPublisherURL, AppSupportURL, AppUpdatesURL, and AppVersion. These are all used for display purposes on the "Support" dialog of the Add/Remove Programs Control Panel applet in Windows 2000. Setting them is optional.
- Setup will no longer create an unins???.msg file in the {app} directory. The messages for the uninstaller are now stored inside the unins???.exe file. (But if you still want a .msg file to be created for debugging purposes, you can run Setup with the /DETACHEDMSG switch.) There is no particular reason why this change was made, other than the fact several didn't like having three separate unins* files.
- The uninstaller (unins???.exe) now has a version resource in it. You can see the version by right-clicking the file in Explorer and selecting Properties, then Version.
Note that if you have the source code and want to edit the version info on the Uninst project, you need Delphi 3 or higher. However, the project can still be compiled in Delphi 2; the version info you set in Delphi 3 will be preserved. But if you save the project in Delphi 2, the version info settings will be stripped from the Uninst.dof file, so it's recommended all editing be done in Delphi 3 or higher.
- The Compiler now additionally accepts "yes" and "no", and "true" and "false" in place of "0" and "1" on [Setup] section directives. Use whichever you prefer.
- New message: UninstallUnsupportedVer.
Inno Setup 1.2 & 1.12 Revision History