Хотите получать уведомления об обновлениях?Подпишитесь на рассылку о новых выпусках Inno Setup.
Inno Setup 7.1
7.1.0 (2026-08-12)
Используете Inno Setup в коммерческих целях? Пожалуйста, купите лицензию.
Спасибо всем, кто уже приобрел лицензию! Ваша поддержка очень важна для нашего дальнейшего развития.
Модернизация IDE компилятора
Среда разработки сценариев теперь доступна на немецком, японском, чешском и голландском языках. Немецкий, японский и чешский языки были выбраны в первую очередь благодаря активной коммерческой поддержке со стороны пользователей этих языков, учитывая многочисленность их сообществ. Спасибо.
Дополнительно был добавлен "Редактор RTF", а также появились возможности временно отключать трудоёмкие этапы компиляции для ускорения отладки. Подробнее:
Добавлен новый параметр "Язык" для отображения среды разработки на английском (по умолчанию), немецком, японском, чешском или голландском языках.
Это относится только к IDE компилятора. Компилятор командной строки (ISCC) и сам компилятор по-прежнему используют английский язык.
Переводы нельзя редактировать, а также заявки на добавление новых языков не принимаются.
В меню "Инструменты" добавлен "Редактор RTF для создания файлов RTF, которые может отобразить программа установки. Программа отображает текст точно так же, как это делает установщик, выступая в роли компактной встроенной замены полюбившегося многим WordPad, которого больше не существует.
В меню "Сборка" добавлены новые параметры "Отключить вывод", "Отключить компрессию", "Отключить подпись" и "Отключить верификацию". Состояние этих параметров не сохраняется между сессиями.
Кроме того, в IDE компилятора внесены не менее значительные улучшения:
Ошибки компилятора теперь отображаются не только в диалогах сообщений, но и в панели "Сообщения компилятора".
Теперь в строке состояния при выделении текста отображается информация о текущем выделении, а не только позиция курсора.
Устранено или уменьшено мерцание (особенно заметное на темной теме) при запуске и открытии диалоговых окон.
Улучшена поддержка программ чтения с экрана: теперь озвучиваются кнопки панели инструментов.
Комбинация клавиш [Shift+F6] переключают фокус в обратном порядке — между активной вкладкой редактора, активной нижней панелью и активным баннером (действие, обратное функции клавиши F6).
Исправлено: функция "Найти в файлах" теперь корректно работает со строками, содержащими символы не из набора ASCII.
Командная строка IDE компилятора:
Теперь параметры обозначаются префиксом - и строчными буквами (например, -wizard вместо /WIZARD). Допускаются оба варианта, поэтому существующие способы использования остаются в силе.
Добавлены альтернативы параметров с полной формой (к примеру, --compile для -cc).
Исправлено: при использовании параметра -cc в заголовке компилятора теперь отображается имя компилируемого файла.
Обновление документации
Теперь для всех примеров в справке используется подсветка синтаксиса, а все идентификаторы кода оформлены моноширинным шрифтом.
Все директивы секции [Setup], названия секций и названия функций, поддерживающих язык Паскаль, теперь сопровождаются ссылками на соответствующую документацию.
В разделе справки, посвященном секции [Setup], теперь используется более широкий набор категорий для классификации директив.
Модернизация компилятора командной строки (ISCC)
Компилятор командной строки был усовершенствован с целью упрощения его использования другими инструментами и сценариями. Все существующие опции продолжают работать, однако следует учесть, что предупреждения теперь выводятся в stderr, а для параметра ISPP -$e теперь по умолчанию установлено значение "включено":
Теперь параметры обозначаются префиксом - и строчными буквами (например, -q вместо /Q). Допускаются оба варианта, поэтому существующие способы использования остаются в силе.
Добавлены альтернативы параметров с полной формой (к примеру, --quiet для -q), за исключением параметров -$ и -p.
Добавлен параметр --no-compression (-nc) для отключения компрессии (переопределяет действие директив Compression и InternalCompressLevel).
Добавлен параметр --no-signing (-ns) для отключения инструмента цифровой подписи (переопределяет действие директив SignTool и SignedUninstaller).
Добавлен параметр --no-signcheck (-nsc) для отключения верификации signcheck.
Добавлен параметр --no-ide-signtools (-ni), позволяющий отключить автоматическое указание инструментов цифровой подписи, настроенных с помощью IDE компилятора.
Добавлен параметр --preprocess (-e) для предварительной обработки в stdout и подавления компиляции.
Добавлен параметр --messages-jsonl (-mj) для вывода ошибок и предупреждений в формате JSONL, что упрощает их анализ при помощи других инструментов и скриптов. При включенном параметре --messages-jsonl предупреждения не подавляются параметром --quiet.
Добавлен параметр --version для вывода версии ядра компилятора
Улучшена работа параметра --quiet-progress (-qp). В частности, исправлена проблема с обновлением индикатора выполнения при заполненном экране в Windows Terminal.
Теперь предупреждения всегда выводятся в stderr, а не в stdout, что соответствует поведению других инструментов.
Исправлено: для параметра ISPP -$e (вывод пустых строк) теперь по умолчанию всегда установлено значение "включено" — так же, как при компиляции из IDE компилятора, что указано в документации.
Другие мелкие исправления.
Изменения ISPP и сценариев на языке Паскаль
Функциональность препроцессора Inno Setup и программного модуля на языке Паскаль была улучшена за счёт добавления новых и обновления существующих функций, улучшения документации и исправления ошибок, возникающих в редких или особых случаях.
Препроцессор Inno Setup (ISPP):
Добавлена функция Format.
Функции DeleteFileNow и CopyFile теперь возвращают ненулевое значение в случае успешного выполнения.
Функция ReadReg теперь поддерживает чтение 64-разрядных целых чисел (REG_QWORD).
Исправления:
Функции Min и Max теперь возвращают правильный результат при использовании трех значений, если третье значение является наименьшим (для Min) или наибольшим (для Max).
Строковые литералы в стиле Паскаль (используемые по умолчанию) больше не допускают отсутствие закрывающей кавычки без предупреждения. Незавершенная строка теперь вызывает ошибку компиляции.
Вызов процедуры #sub меняет область видимости идентификаторов по умолчанию на private (что является правильным), однако это изменение сохранялось и после завершения работы процедуры. Например:
#sub MySub
#emit'hello'#endsub#call MySub()
#define MyVar = 42; был неверно создан как private
ISPP мог некорректно вычислять выражения, следующие за вложенными директивами #elif и {#elif} в тех частях сценариев, которые не были выбраны. Например:
#if0#if0#elif SomeExpression ; было некорректно вычислено#endif#endif
Ранее не документированные функции IsDirSet и TypeOf2 теперь задокументированы и распознаются средой разработки (IDE) компилятора.
Ранее не документированная директива #env и её короткая версия #% теперь задокументированы и распознаются средой разработки (IDE) компилятора. Эта директива заменяет себя значением указанной переменной среды окружения. Пример: AppName={#%MyAppName}.
Ранее не документированные псевдонимы директив #call (для #expr) и #echo (для #emit) теперь задокументированы и распознаются средой разработки (IDE) компилятора. Во вснх примерах теперь используется #call вместо #expr. Например: #call EmitLanguagesSection.
Ранее не документированные сокращения директив #? (для #if), #^ (для #else) и #. (для #endif) теперь задокументированы и распознаются средой разработки (IDE) компилятора.
Ранее не документированный параметр типов func и array, а также оператор @, теперь задокументированы в разделе справки "Пользовательские функции". Также были внесены исправления в реализацию. Пример:
Ранее не документированные функции Abs, Low, High, SizeOf, Assigned, Inc, Dec, Succ, Pred, Include, Exclude и RaiseLastException теперь задокументированы и распознаются средой разработки (IDE) компилятора.
Функции TaskDialogMsgBox и SuppressibleTaskDialogMsgBox теперь поддерживают многострочный текст инструкции, даже если активен пользовательский стиль.
Функция AddPeriod больше не добавляет точку (.) к строкам, заканчивающимся вопросительным знаком (?), идеографической точкой (。) или другими символами, завершающими предложение (полный список см. в документации). Она также не добавляет точку (.) к строкам, заканчивающимся тайскими или лаосскими символами, поскольку в этих языках предложения не завершаются точкой. Если строка заканчивается любым другим символом (не являющимся управляющим), точка (.) будет добавлена. Ранее точка (.) не добавлялась к строкам, заканчивающимся пробелами или определенными символами, такими как кавычки и скобки (а именно, символами с кодом ≤ U+002E). Это изменение также затрагивает сообщения об ошибках, которые программа установки и сам компилятор формируют с использованием AddPeriod.
Исправления: улучшена работа функции CreateCallback для следующих случаев:
В 32-разрядных инсталляторах параметр, представляющий собой запись (record), множество (set) или статический массив размером 3 байта и передаваемый по значению, теперь получает корректное значение.
В 32-разрядных инсталляторах результат для типа Int64 или UInt64 теперь возвращается корректно.
В 64-разрядных инсталляторах параметр, представляющий собой запись (record), множество (set) или статический массив, передаваемые по значению и имеющие размер 8 байт, а также параметры типов Extended или Currency, занимающие одну из первых трех позиций, теперь получают корректное значение.
В 64-разрядных инсталляторах теперь поддерживается получение результатов, не возвращаемых через регистры (например, записей размером более 8 байт).
В 32-разрядных инсталляторах поддержка таких результатов по-прежнему отсутствует.
Как в 32-разрядном, так и в 64-разрядном инсталляторе результат типа Currency теперь возвращается корректно.
Теперь результат типа "запись" (record), передаваемый по значению, возвращается корректно: размером 1 или 2 байта либо как неуправляемый 4-байтовый объект — в 32-разрядных инсталляторах; размером 1, 2 или 4 байта либо как неуправляемый 8-байтовый объект — в 64-разрядных инсталляторах.
Исправления: использование файлов DLL улучшено для следующих случаев:
В 32-разрядных инсталляторах теперь корректно обрабатываются записи (record), передаваемые по значению и имеющие размер более 4 байт (при использовании соглашений о вызовах cdecl или stdcall), а также статические массивы размером 4 байта или меньше (при любом соглашении о вызовах).
В 32-разрядных инсталляторах при возврате по значению типа "множество" (set) размером 3 байта больше не происходит запись 1 байта за пределами выделенной области памяти.
В 32-разрядных инсталляторах вызов функции DLL, возвращающей множество (set) или статический массив (с соглашениями о вызовах pascal, cdecl или stdcall), больше не приводит к ошибке.
В 64-разрядных инсталляторах теперь корректно передаются параметры, являющиеся записями (record), множествами (set) или статическими массивами размером 8 байт или меньше, если они передаются по значению.
Теперь корректно обрабатывается результат (возвращаемое значение) в виде записи (record), передаваемой по значению: размером 3 байта или управляемой записи размером 4 байта (в 32-разрядных инсталляторах), а также размером 3, 5, 6 или 7 байт либо управляемой записи размером 8 байт (в 64-разрядных инсталляторах).
Теперь корректно обрабатывается результат в виде статического массива, передаваемого по значению: размером 1 или 2 байта либо неуправляемого массива размером 4 байта (в 32-разрядных инсталляторах), а также размером 1, 2 или 4 байта либо неуправляемого массива размером 8 байт (в 64-разрядных инсталляторах).
Импорт функции DLL с использованием опции setuponly или uninstallonly больше не вызывает ошибку, если имя функции содержит символ @ (например, декорированное имя _MyFunc@8).
Другие изменения
Временные метки файлов в журнале программы установки теперь указываются в формате UTC, а не по местному времени, что соответствует настройке TimeStampsInUTC, для которой значение yes установлено по умолчанию.
Исходный код Scintilla, используемый Inno Setup, обновлен до последней версии.
Обновлены официальные переводы на японский, упрощенный китайский, традиционный китайский и армянский языки: теперь некоторые сообщения об ошибках заканчиваются знаком точки, характерным для соответствующего языка (например, 。), а не точкой (.), автоматически добавляемой во время выполнения программы. Аналогичное изменение было внесено для тайского языка, в котором точка не используется.
Исправлено: символ + в имени пользователя или пароле в адресе загрузки больше не декодируется как пробел.
Многочисленные доработки, исправления и улучшения.
Inno Setup 7.0
7.0.2 (2026-07-13)
Добавлен новый раздел справки "Меры безопасности", который также содержит подраздел "Безопасность цепочки поставок" и ссылку на нашу страницу "Verifying Inno Setup Downloads" (Проверка загруженных файлов Inno Setup).
Меры безопасности, обеспечение безопасности цепочки поставок и проверка загружаемых файлов — это не нововведения, однако теперь они задокументированы и сведены воедино.
Теперь компиляция завершится с ошибкой, если файл .iss или .isl содержит байт или последовательность байтов, недопустимые для кодовой страницы (набора символов) этого файла. Ранее такие недопустимые байты интерпретировались как символы U+FFFD (символ замены в Unicode).
ISCC: чтобы прочитать сценарий из стандартного ввода, укажите - в качестве имени сценария. Подразумевается, что такой сценарий имеет кодировку UTF-8.
При активном пользовательском стиле флажок "Повторить действие для всех последующих конфликтов" в диалогах "Заменить существующий файл" и "Сохранить существующий файл" по умолчанию всегда был установлен вместо того, чтобы быть сброшенным (эта ошибка наблюдается с момента внедрения пользовательских стилей в версии 6.6.0).
В предыдущих выпусках версии 7.0, когда 64-разрядный установщик выполнял регистрацию 32-разрядной DLL или операцию подсчёта ссылок на общий файл в каталоге {sys}, вместо пути System32 ошибочно использовался путь SysWOW64.
Программа установки больше не снимает атрибут "только для чтения" с файлов и каталогов, соответствующих маске в записи [InstallDelete]. Это происходило во время предварительных проверок перед началом установки (ошибка появилась в версии 5.5.0).
В японской, корейской и китайской версиях программа установки больше не отображает в некоторых местах клавишу быстрого доступа в виде явного текста, например, "(&R)".
Распаковка архива .cab теперь не всегда прерывается ошибкой (проблема возникла с версии 6.5.0).
Программирование на языке Паскаль: выделенный элемент TNewCheckListBox с установленным ItemFontStyle или SubItemFontStyle больше не теряет цвет после потери списком фокуса (проблема возникла с версии 6.2.0). Спасибо Sergii Leonov за исправление ошибки.
Исходный код 7-Zip и LZMA SDK, используемый Inno Setup, обновлен на актуальную версию.
Добавлены официальные переводы на литовский язык, упрощенный и традиционный китайский.
Улучшения и исправления во всех остальных официальных переводах.
Улучшен обходной способ работы компонента RichEdit в среде Wine, который предотвращает длительную задержку при использовании очень больших текстов в сочетании с тёмным пользовательским стилем мастера.
Исправлено: из соображений безопасности в примере сценария PowerShell.iss для загрузки файла powershell.exe теперь используется абсолютный путь. Если вы использовали описанный метод в своих собственных сценариях, вам следует внести аналогичные изменения.
Препроцессор Inno Setup:
Исправлено: восстановлена компиляция при использовании пользовательских функций без параметров (была нарушена в 6.7.2). Например: #define MyAppName() "My Program".
Добавлена новая встроенная переменная SysPath.
7.0.0-beta (2026-05-18)
Мы с гордостью представляем Inno Setup 7, который включает в себя как 64-разрядную версию, так и 32-разрядную.
Обе версии Inno Setup 7 могут создавать 32-разрядные или 64-разрядные установщики, их можно устанавливать параллельно и они могут сосуществовать вместе с Inno Setup 6.
Кроме того, добавлена поддержка длинных путей, что устраняет ограничения MAX_PATH.
Большое внимание было уделено обеспечению максимальной обратной совместимости с Inno Setup 6, включая обратную совместимость с поддержкой длинных путей и совместимость между 32-разрядными и 64-разрядными установщиками.
Эта работа была бы невозможна без поддержки, оказанной путем приобретения коммерческих лицензий. Используете Inno Setup в коммерческих целях? Пожалуйста, купите лицензию.
Коммерческие лицензии включают два года обновлений — как основных, так и промежуточных. Если вы недавно приобрели коммерческую лицензию, она также даёт право на использование Inno Setup 7.
64-разрядные установщики
В обеих версиях по умолчанию используется создание 32-разрядных установщиков. Чтобы создать 64-разрядный установщик вместо 32-разрядного, установите в секции [Setup] для директивы SetupArchitecture значение x64. Это также изменит значения директив ArchitecturesAllowed и ArchitecturesInstallIn64BitMode на x64compatible, в результате чего 64-разрядные установщики по умолчанию будут работать в 64-разрядном режиме установки.
Основные преимущества и отличия:
64-разрядные установщики позволяют использовать максимальный размер словаря для методов сжатия lzma и lzma2 в 3,8 ГБ вместо 1 ГБ. Перед использованием больших размеров словаря ознакомьтесь с требованиями к памяти, указанными в разделе справки Compression.
В 64-разрядных установщиках по умолчанию включена функция ASLR с высокой энтропией. Это помогает соответствовать корпоративным политикам или требованиям сторонних организаций, предписывающим использование 64-разрядных исполняемых файлов.
64-разрядные установщики полностью поддерживают 32-разрядный режим установки и наоборот. Чтобы использовать 64-разрядный установщик, оставаясь в 32-разрядном режиме установки (например, потому что вы непреднамеренно развертывали 64-разрядные приложения в 32-разрядном режиме), установите для директивы ArchitecturesInstallIn64BitMode пустое значение, что переопределит значение по умолчанию.
Существующие инсталляторы, выполненные 32-разрядными программами установки, могут быть без проблем обновлены 64-разрядными программами установки и наоборот.
Особенности 64-разрядного программирования на языке Паскаль:
В 32-разрядных установщиках тип Extended имеет размер 10 байт, тогда как в 64-разрядных установщиках он занимает 8 байт и является лишь псевдонимом типа Double.
В 32-разрядных установщиках типы NativeInt и NativeUInt имеют размер 4 байта, тогда как в 64-разрядных установщиках — 8 байт. То же относится ко всем производным от них типам, например HWND.
В примере CodeDll.iss демонстрируется, как реализовать поддержку 32- и 64-разрядных установщиков в одном сценарии.
Обратите внимание: хотя такие типы, как HWND, в 64-разрядных процессах имеют размер 8 байт (64 бита), в 64-разрядной Windows для совместимости используются 32-разрядные значения дескрипторов. При передаче дескриптора между 32- и 64-разрядными приложениями значимыми являются только младшие 32 бита, поэтому допустимо усечение с 64 до 32 бит или знаковое расширение с 32 до 64 бит.
Как в 32-разрядных, так и в 64-разрядных установщиках структурные типы данных record (записи) в контексте программирования на языке Паскаль всегда являются "упакованными" (packed). При вызове функции Windows API или внешней DLL, которая ожидает выровненные записи, может потребоваться вручную добавить заполнители для обеспечения правильного выравнивания полей в памяти. Даже если 32-разрядному установщику этого не требовалось, для 64-разрядного установщика это является обязательным из-за различий в правилах выравнивания и размерах полей.
Невозможно загрузить 32-разрядные DLL в 64-разрядных установщиках, так как Windows не разрешает 64-разрядным процессам загружать 32-разрядные DLL (и наоборот). Однако всегда можно запускать как 32-разрядные, так и 64-разрядные EXE-файлы с помощью функции Exec или через секцию [Run].
В 32-разрядных установщиках функция CreateCallbackне поддерживает параметры обратного вызова, передаваемые по значению, если их тип превышает размер 4 байта, например, Int64, UInt64, Double, Extended и Currency. В 64-разрядных установщиках поддерживаются типы параметров, передаваемых по значению, большего размера.
64-разрядные библиотеки COM-интерфейсов (.tlb) теперь могут быть зарегистрированы или удалены только 64-разрядными установщиками, 32-разрядные библиотеки – только 32-разрядными установщиками.
Регистрация и удаление 64-разрядных библиотек из 32-разрядных установщиков больше не поддерживается.
Константа {sysnative} недоступна 64-разрядным установщикам или любым другим 64-разрядным приложениям, поэтому её значение следует использовать только, например, для передачи 32-разрядному приложению.
В наших тестах на "Windows Server 2016 Datacenter Server Core" и "Windows Server 2025 Datacenter: Azure Edition Core" со всеми функциями WOW64, отключенными и удаленными с помощью DISM, 64-разрядные установщики по-прежнему работают корректно, даже при запуске в 32-разрядном режиме установки.
Удалена функция EnableFsRedirection. Вместо неё теперь следует использовать функцию ApplyPathRedirRulesForCurrentProcess или 64-разрядный установщик. Для 32-разрядных установщиков также можно использовать значение {sysnative}.
Чтобы из 32-разрядного установщика запускать исполняемые файлы из 64-разрядной системной папки, используйте функции ExecWithNativeSysDir, ExecAndLogOutputWithNativeSysDir или ExecAndCaptureOutputWithNativeSysDir.
Из функции RegisterExtraCloseApplicationsResource удален параметр DisableFsRedir. Для регистрации 64-разрядного файла из 32-разрядного установщика (или наоборот) используйте функцию ApplyPathRedirRulesForCurrentProcess.
Добавлены функции ApplyPathRedirRules и IsCurrentProcess64Bit.
Добавлены следующие типы данных: UInt64, NativeInt, NativeUInt, LONG, ULONG, LONG_PTR, ULONG_PTR, THandle, HANDLE, COLORREF, HWND, HDC, HBITMAP, HFONT, HKEY, HINSTANCE, HMODULE, LRESULT, WPARAM, LPARAM, SIZE_T и SSIZE_T.
Эти новые типы дополняют следующие аналогичные типы, которые были доступны ранее: Int64, DWORD_PTR, INT_PTR и UINT_PTR. Если в вашем сценарии уже было указано определение одного из новых типов, просто удалите его.
64-разрядные IDE компилятора и ISCC
Чтобы использовать 64-разрядные версии IDE компилятора и ISCC, установите 64-разрядную версию Inno Setup 7. Обе версии одинаково читают сценарии, используют одни и те же настройки и могут компилировать 32- и 64-разрядные установщики.
Чтобы узнать, какую версию вы установили, запустите IDE компилятор сценариев. 32-разрядная версия в строке заголовка будет иметь надпись "32-bit", а 64-разрядная нет.
Рекомендуется использовать 64-разрядную версию.
Основные преимущества и отличия:
Любая из версий может собирать установщики любой архитектуры: 32-разрядные компиляторы могут создавать 64-разрядные установщики и наоборот.
Обе версии могут быть установлены параллельно и включают в себя одинаковые примеры и файлы справки.
64-разрядные компиляторы, как правило, обеспечивают более быстрое сжатие LZMA при полной совместимости с существующими сценариями.
В Windows 11 на базе Arm64 они используют двоичный файл ARM64EC (islzma-Arm64EC.dll) для обеспечения родной (native) производительности.
Директива LZMAUseSeparateProcess в секции [Setup] 64-разрядными компиляторами игнорируется, поскольку 64-разрядные процессы могут напрямую выделять больше памяти, что устраняет необходимость в использовании отдельного процесса сжатия.
Поддержка длинных путей
Программа установки и удаления теперь поддерживают пути с расширенной длиной (так называемые "суперпути"), устраняя ограничения MAX_PATH.
Это относится как к 32-разрядным, так и к 64-разрядным установщикам.
Связанные изменения:
Зарегистрированные пути теперь являются путями расширенной длины. Конечному пользователю по-прежнему отображаются обычные пути.
К примеру, обычный путь выглядит так: c:\Program Files\My Program
Расширенная версия того же самого пути будет следующей: \\?\c:\Program Files\My Program
Константы {app}, {autopf} и {tmp} по-прежнему возвращают обычные пути.
Программирование на языке Паскаль:
Добавлены функции PathConvertNormalToSuper и PathConvertSuperToNormal.
Вспомогательная функция IsWildcard теперь проверяет только последний компонент пути, что позволяет избежать ложных срабатываний при использовании префиксов путей увеличенной длины.
Повышение безопасности
В качестве дополнительных мер безопасности компилятор больше не разрешает использование директив компиляции, таких как #include и др., в файлах сообщений .isl, которые указываются в секции [Languages]. Компиляция будет прервана при обнаружении строк, начинающихся с #. Кроме того, ISPP отключен и не может быть включен (команда #preproc ispp не допускается), поэтому любые встроенные директивы ISPP ({#...}) не обрабатываются.
Другие изменения
Кроме того, в обеих редакциях были внесены следующие изменения:
IDE компилятора:
Файл IDE компилятора был переименован с Compil32.exe в ISIDE.exe.
Добавлена поддержка автозавершения для функций ISPP и предопределенных переменных в выражениях ISPP, таких как #define, #if, #emit, и #expr.
Также доступны подсказки при наведении курсора мышки на функции ISPP, позволяющие получить информацию о прототипе функции, именах, типе и порядке параметров.
Добавлена поддержка автозаполнения для поддиректив ISPP #pragma: warning, message и option.
Исправлена ошибка функции автозавершения для имен, констант и директив ISPP, которая возникала после наведения курсора мыши на секцию [Code].
Подсказки параметров теперь обновляются также при использовании клавиш со стрелками влево и впаво, а также после клавиш "Backspace" или "Delete".
При использовании регулярного выражения, соответствующего тексту нулевой длины (например, ^ или \b), функции "Найти в файлах", "Заменить все" и "Выделить все найденные вхождения" могут войти в бесконечный цикл или пропустить действительное совпадение в конце текста.
Секция [Setup]:
Добавлен новый встроенный стиль и поддерживаемый напрямую директивой WizardStyle: stellar. Стиль "stellar" — это альтернативный светлый стиль с белым текстом на переднем плане, идеально подходящий для использования в сочетании с тёмным фоновым цветом или изображением. Например:
Директива AppVerName теперь по умолчанию принимает значение AppNameAppVersion (значения разделены пробелом) вместо AppName version AppVersion (локализованное).
Если вы желаете сохранить локализованное слово "version", используйте сообщение NameAndVersion: AppVerName={cm:NameAndVersion,My Program,1.5}
Для директивы ArchiveExtraction теперь может быть установлено значение auto (используется по умолчанию), с которым автоматически выбирается подходящий метод извлечения на основании записей в секции [Files].
Если выбран вариант basic, поскольку ни одна запись не использует флаг extractarchive, но в коде сценария используется одна из вспомогательных функций ExtractArchive или CreateExtractionPage, вы должны вручную указать правильный метод извлечения.
Для директивы TimeStampsInUTC теперь по умолчанию установлено значение yes.
Программирование на языке Паскаль:
Добавлен новый параметр OnLog для секции [Run]. В сочетании с флагом logoutput он определяет имя функции, которая будет вызываться для каждой строки вывода программы вместо непосредственного включения ее в файл журнала.
См. обновленный пример сценария PowerShell.iss.
Добавлены новые функции StrToUInt64, StrToUInt64Def и UIntToStr.
Функции Chr и StringOfChar теперь корректно принимает значения, превышающие 255, а также широкие символы.
Функция FloatToStr больше не выводит лишние нули в конце числа.
Использование оператора Exit в блоке try..finally теперь работает корректно, если в блоке finally содержатся вызовы функций.
В блоке else оператора case теперь можно размещать несколько операторов без обязательного использования begin/end.
Добавлена возможность указывать соглашение о вызовах safecall в интерфейсах. Это упрощает объявления методов и избавляет от необходимости ручного вызова OleCheck. Смотрите обновленный пример сценария CodeAutomation2.iss.
Добавлен маркер {$NOWARN} для подавления предупреждений компилятора в секции [Code]. Его можно включить в любом месте строки кода. Также он распознается внутри комментариев.
Улучшен оператор as: теперь он выполняет ту же проверку типов во время выполнения, что и оператор is.
Исправлена ошибка несоответствия типов во время выполнения при присваивании открытых и динамических массивов.
Исправлены ошибки в функциях InitializeBitmapButtonFromIcon (не работала в момента появления) и InitializeBitmapImageFromIcon (перестала работать с версии 6.5.0).
Препроцессор Inno Setup:
Ранее недокументированные функции GetFileCompany, GetFileDescription, GetFileCopyright, GetFileOriginalFilename и GetFileProductVersion были переименованы в GetFileCompanyString, GetFileDescriptionString, GetFileCopyrightString, GetFileOriginalFilenameString и GetFileProductVersionString соответственно, что обеспечивает их согласованность с существующей (также ранее недокументированной) функцией GetFileVersionString. Старые наименования функций по-прежнему действительны.
Задокументировано различие между GetFileVersionString и GetVersionNumbersString.
Исправлена ошибка обработки файловых имен вспомогательными функциями ReadIni, WriteIni и Is64BitPEImage при работе с другими функциями, связанными с файлами.
Помощь, отображаемая параметром командной строки /HELP, разделена на два окна для удобства чтения.
Добавлено обходное решение реализации компонента RichEdit в среде Wine (Linux), из-за ограничений которого цвет текста документов, указанных в секции [Setup] с помощью директив LicenseFile, InfoBeforeFile и InfoAfterFile, отображался некорректно при использовании стилей.
В ISCC внесено изменение: теперь при чтении из реестра ключ Inno Setup больше не создается.
Исходный код библиотек 7-Zip, LZMA SDK, Scintilla и zlib, используемых в Inno Setup, обновлен до последних версий.
Метод full извлечения архива теперь поддерживает архивы формата .zst (Zstandard).
Исходный код Inno Setup теперь содержит метаданные SPDX SBOM.
Исправлено: записи в секции [Files] с флагом extractarchive не выполняли извлечение, если первая запись в архиве не совпадала с именем извлекаемого файла.
Например, если в качестве первой записи архив содержал файл в подкаталоге (к примеру, subdir\file1.txt, за которым следовала запись file2.txt) и не использовался флаг recursesubdirs, то ни один файл не был бы извлечён, даже файл file2.txt.