Prior to Inno Setup 6 two versions of Inno Setup were available: Non Unicode Inno Setup and Unicode Inno Setup. Starting with Inno Setup 6 there's only one version available: Unicode Inno Setup.
Key features of Unicode Inno Setup are its ability to display any language on any system regardless of the system code page, and its ability to work with Unicode filenames.
To check which edition you installed, click the "Inno Setup Compiler" shortcut in the Start Menu. Non Unicode Inno Setup displays "(a)" in the title bar, while Unicode Inno Setup does not.
Key differences and capabilities:
- Unicode Inno Setup supports UTF-8 encoded .iss and .isl files. Starting with Inno Setup 6.3, a BOM is no longer required. UTF-16 is not supported.
- Any existing ANSI .isl language files are automatically converted during compilation using the LanguageCodePage setting of the language.
- Any [Messages] and [CustomMessages] entries in existing ANSI .iss script files must be converted to Unicode manually if the language used a special LanguageCodePage.
- Unicode Inno Setup supports UTF-8 and UTF-16LE encoded .txt files for LicenseFile, InfoBeforeFile, and InfoAfterFile. Starting with Inno Setup 6.3, a BOM is no longer required.
- Any language specific plain text ANSI files used for LicenseFile, InfoBeforeFile, or InfoAfterFile are automatically converted during compilation using the LanguageCodePage setting of the language.
- The [Setup] directive ShowUndisplayableLanguages is ignored by Unicode Inno Setup.
- Existing installations made by non Unicode installers can be updated by Unicode installers without issues, 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', and using it is generally discouraged now.
- The Unicode compiler is more strict about correct ';' usage: it no longer accepts certain missing ';' characters.
- 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.
- Added new 'Int64' type, supported by IntToStr. Also added new StrToInt64, StrToInt64Def, and GetSpaceOnDisk64 support functions.
- Added new TStringStream class.
- 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 calls and use 'String' parameters, or keep the 'A' ANSI API calls and start using 'AnsiString' parameters.