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.
If you don't remember which version you installed, click the "Inno Setup Compiler" shortcut created in the Start Menu. If the version number displayed in its title bar says "(a)" you are running Non Unicode Inno Setup. Otherwise you are running Unicode Inno Setup.
For the most part the two versions are used identically, and any differences between them are noted throughout the help file. However, the following overview lists the primary differences:
- 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 to 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 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.
- 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 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.
Note: Unicode Inno Setup can only create Unicode installers and like wise the non Unicode version can only create non Unicode installers. If you want to be able to create both Unicode and non Unicode installers on one computer, you have to install both versions of Inno Setup into different folders.