Хотите получать уведомления об обновлениях?Подпишитесь на рассылку о новых выпусках Inno Setup.
Inno Setup 7.0
7.0.0-preview-1 (2026-02-17)
Мы с гордостью представляем Inno Setup 7, который включает в себя как 64-разрядную версию, так и 32-разрядную.
Обе версии Inno Setup 7 могут создавать 32-разрядные или 64-разрядные установщики, их можно устанавливать параллельно и они могут сосуществовать вместе с Inno Setup 6.
Кроме того, добавлена поддержка длинных путей, что устраняет ограничения MAX_PATH.
Большое внимание было уделено обеспечению максимальной обратной совместимости с Inno Setup 6, включая обратную совместимость с поддержкой длинных путей и совместимость между 32-разрядными и 64-разрядными установщиками.
Эта работа была бы невозможна без поддержки, оказанной путем приобретения коммерческих лицензий. Используете Inno Setup в коммерческих целях? Пожалуйста, купите лицензию.
64-разрядные установщики
Чтобы создать 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-разрядные DLL в 64-разрядных установщиках, так как Windows не разрешает 64-разрядным процессам загружать 32-разрядные DLL (и наоборот). Однако всегда можно запускать как 32-разрядные, так и 64-разрядные EXE-файлы с помощью функции Exec или через секцию [Run].
64-разрядные библиотеки COM-интерфейсов (.tlb) теперь могут быть зарегистрированы или удалены только 64-разрядными установщиками, 32-разрядные библиотеки – только 32-разрядными установщиками.
Регистрация и удаление 64-разрядных библиотек из 32-разрядных установщиков больше не поддерживается.
Константа {sysnative} недоступна 64-разрядным установщикам или любым другим 64-разрядным приложениям, поэтому её значение следует использовать только, например, для передачи 32-разрядному приложению.
На данный момент 64-разрядные установщики всё ещё требуют наличия WOW64, поэтому запуск на Windows Server Core без WOW64 пока не поддерживается.
Связанные изменения, внесенные в обе версии:
Программирование на языке Паскаль:
Удалена функция EnableFsRedirection. Вместо неё теперь следует использовать функцию ApplyPathRedirRulesForCurrentProcess или 64-разрядный установщик. Для 32-разрядных установщиков также можно использовать значение {sysnative}.
Чтобы из 32-разрядного установщика запускать исполняемые файлы из 64-разрядной системной папки, используйте функции ExecWithNativeSysDir, ExecAndLogOutputWithNativeSysDir или ExecAndCaptureOutputWithNativeSysDir.
Из функции RegisterExtraCloseApplicationsResource удален параметр DisableFsRedir. Для регистрации 64-разрядного файла из 32-разрядного установщика (или наоборот) используйте функцию ApplyPathRedirRulesForCurrentProcess.
Добавлены функции ApplyPathRedirRules и IsCurrentProcess64Bit.
Чтобы использовать 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.
Другие изменения
Кроме того, в обеих редакциях были внесены следующие изменения:
Файл IDE компилятора был переименован с Compil32.exe в ISIDE.exe.
Программирование на языке Паскаль:
Функция Chr теперь корректно принимает значения, превышающие 255.
Функция FloatToStr больше не выводит лишние нули в конце числа.
Использование оператора Exit в блоке try..finally теперь работает корректно, если в блоке finally содержатся вызовы функций.
В блоке else оператора case теперь можно размещать несколько операторов без обязательного использования begin/end.
Добавлена возможность указывать соглашение о вызовах safecall в интерфейсах. Это упрощает объявления методов и избавляет от необходимости ручного вызова OleCheck. Смотрите обновленый пример сценария CodeAutomation2.iss.
Исправлена ошибка несоответствия типов во время выполнения при присваивании открытых и динамических массивов.
Исходный код Inno Setup теперь содержит метаданные SPDX SBOM.