Jordan Russell Software heeft versie 7.1.0 van Inno Setup uitgebracht. Met dit programma kunnen op eenvoudige wijze installatiepakketten voor Windows worden gecreëerd. Het programma biedt de mogelijkheid om informatie toe te voegen aan het register, kan configuratiebestanden en snelkoppelingen aanmaken en heeft de mogelijkheid om de installatiebestanden te comprimeren. Verder kan natuurlijk een uninstaller worden toegevoegd en kan bij de installatie uit verschillende talen worden gekozen. Sinds versie 6.5.0 is het ook mogelijk om een commerciële licentie af te nemen. De changelog sinds versie 6.7.3 kan hieronder worden gevonden.
Compiler IDE improvementsThe Compiler IDE is now also available in German, Japanese, Czech, and Dutch. German, Japanese, and Czech were chosen first because of the strong commercial support from their users, relative to the size of their communities. Thank you. Additionally, a new RTF Editor was added, as well as options to temporarily disable time-consuming compilation steps for faster debugging. In detail:
- Added new Language option to display the Compiler IDE in English (the default), German, Japanese, Czech, or Dutch.
- This applies to the Compiler IDE only. The command-line compiler (ISCC) and the compiler itself remain English.
- The translations cannot be edited, and additional languages are not being accepted.
- Added a new RTF Editor to the Tools menu for creating the RTF files Setup can display. It renders text exactly as Setup will, making it a small built-in replacement for the beloved WordPad that is no more.
- Added new Disable Output, Disable Compression, Disable Signing, and Disable Signcheck Validation menu items to the Build menu. These are not remembered between sessions.
There are also smaller Compiler IDE improvements:
Documentation improvements
- Compiler errors are now also shown in the Compiler Output view, instead of only in a message box.
- The status bar now shows information about the current selection when text is selected, instead of only the cursor position.
- Removed or reduced flicker (especially visible in dark mode) at startup and when opening dialogs.
- Improved support for screen readers: toolbar buttons are now announced.
- Shift+F6 now switches backward between the active memo, the active bottom pane, and the active banner, the reverse of F6.
- Fix: Find in Files now works correctly on lines containing non-ASCII text.
- Compiler IDE command line:
- Options are now documented with a - prefix and in lowercase (for example -wizard instead of /WIZARD). Both forms are accepted, so existing use is not affected.
- Options now have long-form alternatives (for example --compile for -cc).
- Fix: When using the -cc option, the IDE caption now shows the file being compiled.
Command-Line Compiler (ISCC) improvements
- Throughout the help file, all script examples are now syntax highlighted and all code identifiers are now monospaced.
- Throughout the help file, all [Setup] section directives, section names, and Pascal Scripting support function names are now linked to their documentation.
- The [Setup] section help topic now uses a larger set of categories to divide the directives into.
The command-line compiler has been improved to make it easier for other tools and scripts to use. All existing options keep working, but note that warnings now go to stderr and that ISPP option -$e now defaults to on:
ISPP and Pascal Scripting improvements
- Options are now documented with a - prefix and in lowercase (for example -q instead of /Q). Both forms were already accepted, so existing use is not affected.
- Options now have long-form alternatives (for example --quiet for -q), except for -$ and -p.
- Added new --no-compression (-nc) option to disable compression (overrides Compression and InternalCompressLevel).
- Added new --no-signing (-ns) option to disable signing (overrides SignTool and SignedUninstaller).
- Added new --no-signcheck (-nsc) option to disable signcheck validation.
- Added new --no-ide-signtools (-ni) option to not auto-specify Sign Tools configured using the Compiler IDE.
- Added new --preprocess (-e) option to preprocess to stdout and suppress compilation.
- Added new --messages-jsonl (-mj) option to output errors and warnings in JSONL format, making them easier to parse by tools and scripts. Warnings are not suppressed by --quiet when --messages-jsonl is active.
- Added new --version option to print the compiler engine version.
- Improved the --quiet-progress (-qp) option, especially progress not updating when the screen is full in Windows Terminal.
- Warnings are now always written to stderr instead of stdout, consistent with other tools.
- Fix: ISPP option -$e (emit empty lines) now defaults to on, just like when compiling from the Compiler IDE and like the documentation said.
- Other minor fixes.
ISPP and Pascal Scripting have been improved with new and updated support functions, better documentation, and fixes for edge cases.
ISPP
- Added new support function Format.
- Support functions DeleteFileNow and CopyFile now return a non-zero value if successful.
- Support function ReadReg can now read 64-bit integer (REG_QWORD) values.
- Fixes:
- Support functions Min and Max now return the correct result when 3 values are used and the third value is the smallest (for Min) or largest (for Max) value.
- Pascal-style string literals (on by default) no longer silently accept a missing closing quote. An unterminated string now raises a compiler error.
- Calling a #sub procedure changes the default visibility of identifiers to private, which is correct, but this change persisted after the procedure returned. For example:
#sub MySub #emit 'hello' #endsub #call MySub() #define MyVar = 42 ; was incorrectly created as private- ISPP could incorrectly evaluate expressions following nested #elif and {#elif} directives in portions of script that were not selected. For example:
#if 0 #if 0 #elif SomeExpression ; was incorrectly evaluated #endif #endif- Previously undocumented support functions IsDirSet and TypeOf2 are now documented and recognized by the Compiler IDE.
- Previously undocumented directive #env and its shorthand #% are now documented and recognized by the Compiler IDE. This directive replaces itself with the value of the specified environment variable. Example:
AppName={#%MyAppName}.- Previously undocumented directive aliases #call (for #expr) and #echo (for #emit) are now documented and recognized by the Compiler IDE. All examples now use #call instead of #expr. Example:
#call EmitLanguagesSection.- Previously undocumented directive shorthands #? (for #if), #^ (for #else), and #. (for #endif) are now documented and recognized by the Compiler IDE.
- Previously undocumented func and array parameter types and the @ operator are now documented by the User Defined Functions help topic. Implementation fixes were also made. Example:
#define Apply(func Callback, str Value) Callback(Value) #define Decorate(str S) "(" + S + ")" #emit Apply(@Decorate, "hello") ; emits "(hello)"- Other documentation improvements.
Pascal Scripting
Other improvements
- Previously undocumented support functions Abs, Low, High, SizeOf, Assigned, Inc, Dec, Succ, Pred, Include, Exclude, and RaiseLastException are now all documented and recognized by the Compiler IDE.
- Support functions TaskDialogMsgBox and SuppressibleTaskDialogMsgBox now wrap long instruction text onto multiple lines even when a custom style is active.
- Support function AddPeriod no longer appends a . on strings ending with a question mark (?), ideographic full stop (。), or various other sentence-terminating characters (see documentation for the complete list). It also no longer appends a . on strings ending with a Thai or Lao character, because these do not end sentences with a full stop. On strings ending with any other non-control character, a . will be appended. Previously, a . was not appended on strings ending with spaces or certain symbols like quotation marks and parentheses (specifically, characters ≤ U+002E). This change also affects the error messages which Setup and the compiler themselves format using AddPeriod.
- Fixes: Support function CreateCallback has been improved for some edge cases:
- In 32-bit installers, a by-value 3-byte record, set, or static array parameter now receives the correct value.
- In 32-bit installers, an Int64 or UInt64 result is now returned correctly.
- In 64-bit installers, a by-value record, set, or static array parameter of 8 bytes or smaller, or an Extended or Currency parameter in one of the first three positions, now receives the correct value.
- In 64-bit installers, a result which isn't returned via a register, such as a record larger than 8 bytes, is now supported.
In 32-bit installers such results are still not supported.- In both 32-bit and 64-bit installers, a Currency result is now returned correctly.
- A by-value record result is now returned correctly: of 1 or 2 bytes, or an unmanaged 4-byte one, in 32-bit installers, and of 1, 2, or 4 bytes, or an unmanaged 8-byte one, in 64-bit installers.
- Fixes: Using DLL files has been improved for some edge cases:
- In 32-bit installers, a by-value record larger than 4 bytes under the cdecl or stdcall convention, or a static array of 4 bytes or smaller under any convention, is now passed correctly.
- In 32-bit installers, a by-value set result of 3 bytes no longer does an out-of-bounds write of 1 byte.
- In 32-bit installers, calling a DLL function that returns a set or static array under the pascal, cdecl, or stdcall convention no longer fails.
- In 64-bit installers, a by-value record, set, or static array parameter of 8 bytes or smaller is now passed correctly.
- A by-value record result is now received correctly: of 3 bytes, or a managed 4-byte one, in 32-bit installers, and of 3, 5, 6, or 7 bytes, or a managed 8-byte one, in 64-bit installers.
- A by-value static array result is now received correctly: of 1 or 2 bytes, or an unmanaged 4-byte one, in 32-bit installers, and of 1, 2, or 4 bytes, or an unmanaged 8-byte one, in 64-bit installers.
- Importing a DLL function using the setuponly or uninstallonly option no longer fails when the function name contains an @ (such as the decorated name _MyFunc@8).
- The time stamps of files shown in Setup's log are now in UTC instead of local time, consistent with TimeStampsInUTC defaulting to yes.
- Updated the Scintilla source code used by Inno Setup to the latest version.
- Updated the official Japanese, Simplified Chinese, Traditional Chinese, and Armenian translations: certain error messages now end with the language's own period character (such as 。) instead of a . appended automatically at run time. A similar improvement was done for Thai, which does not use a period character.
- Fix: A + in the username or password of a download URL is no longer decoded as a space.
- Many other minor improvements and fixes.
