До появления Inno Setup 6 существовали две версии Inno
Setup: ANSI и Unicode. Начиная с Inno Setup 6 в разработке осталась
только Unicode версия Inno Setup.
Главными особенностями Unicode версии Inno Setup
являются поддержка любого языка на любой системе независимо от системной
кодовой страницы, а также поддержка файлов с именами в кодировке
Unicode.
Если вы не знаете, какую версию установили, запустите
IDE компилятора и посмотрите на заголовок окна. Если после номера версии
стоит метка "(a)", значит используется ANSI версия Inno Setup. В
противном случае используется Unicode версия Inno Setup.
По большей части обе версии используются одинаково и
любые различия между ними отмечены в файле справки. Однако ниже
приведены основные различия:
- Unicode версия Inno Setup поддерживает в файлах .iss и .isl
кодировку UTF-8. Начиная с Inno Setup 6.3 маркер BOM больше не является
обязательным. Кодировка UTF-16 не поддерживается.
- Любые существующие языковые .isl файлы в кодировке ANSI во время
компиляции автоматически преобразуются с использованием языкового
параметра LanguageCodePage.
- Любые записи [Messages] и [CustomMessages] в
существующих ANSI .iss сценариях должны быть вручную преобразованы в
кодировку Unicode, если язык использует особое значение LanguageCodePage.
- Unicode версия Inno Setup поддерживает в файлах .txt для LicenseFile,
InfoBeforeFile и InfoAfterFile кодировку UTF-8 и
UTF-16LE. Начиная с Inno Setup 6.3 маркер BOM больше не является
обязательным.
- Любой язык простых текстовых файлов в кодировке ANSI для LicenseFile,
InfoBeforeFile или InfoAfterFile во время
компиляции автоматически преобразуется с использованием языкового
параметра LanguageCodePage.
- Директива ShowUndisplayableLanguages в секции [Setup]
игнорируется Unicode версией Inno Setup.
- Существующие инсталляции ваших программ, выполненные ANSI версией
программы установки, могут быть легко обновлены Unicode версией
программы установки и наоборот.
- Примечания к программированию в кодировке Unicode:
- Компилятор Unicode рассматривает тип "String" как строку
Unicode, а тип "Char" как символ Unicode. Тип "AnsiString" не
изменился и по прежнему является строкой ANSI. Тип "PChar" был
переименован в "PAnsiChar".
- Компилятор Unicode более требовательный в отношении правильного
использования ";". Недостающие символы ";" считаются ошибкой.
- Изменён прототип некоторых функций: некоторые параметры функций
CreateOutputMsgMemoPage, RegQueryBinaryValue, RegWriteBinaryValue,
OemToCharBuff, CharToOemBuff, LoadStringFromfile,
SaveStringToFile и GetMD5OfString теперь
используют тип AnsiString вместо String.
- Добавлена поддержка новых функций SaveStringsToUTF8File
и GetMD5OfUnicodeString.
- Добавлен новый тип данных "Int64", который поддерживается
функцией IntToStr. Также добавлены новые функции StrToInt64,
StrToInt64Def и GetSpaceOnDisk64.
- Добавлен новый класс TStringStream.
- Если вы хотите скомпилировать сценарий, в котором используются
вызовы ANSI версии функций API Windows с помощью Unicode версии
компилятора, либо обновите вызываемые функции на Unicode версию,
заменив "A" на "W", либо измените их параметры с типом "String"
или "PChar" на "AnsiString". Метод с использованием "AnsiString"
сделает ваш код в секции [Code] совместимым с обеими
версиями компилятора, Unicode и ANSI.
Примечание: Unicode версия Inno Setup может создавать
только Unicode версии программ установок и, аналогично, ANSI версия Inno
Setup может создавать только ANSI версии программ установок. Если вы
хотите создавать программы установок Unicode и ANSI версий на одном
компьютере, вам необходимо установить обе версии Inno Setup, но в разные
папки.