Inno Setup 6
История версий
Авторские права © 1997-2025 Jordan Russell. Все права
защищены.
Смежные авторские права © 2000-2025 Martijn Laan. Все права защищены.
Условия распространения и использования смотрите в LICENSE.TXT.
Хотите получать уведомления об обновлениях? Подпишитесь на рассылку о новых выпусках Inno Setup.
6.6.1 (2025-11-20)
Спасибо всем, кто уже приобрел лицензию! Ваша поддержка очень важна для
нашего дальнейшего развития.
- Изменения, связанные с применением стилей:
- Ранее при отображении любого текста RTF с применением пользовательских
стилей (включая встроенные стили в тёмном оформлении) все цвета переднего
плана заменялись цветом переднего плана стиля. Такое поведение было
улучшено и теперь заменяются только цвета по умолчанию, а заданные
пользователем сохраняются.
- Добавлена новая директива в секции [Setup] – WizardImageOpacity,
с помощью которой можно указать непрозрачность изображений мастера.
Она даёт возможность использовать одни и те же изображения мастера как
для светлого, так и для тёмного стилей оформления. К примеру, установите
значение 150 для получения частичной прозрачности. По умолчанию
установлено значение полной непрозрачности.
- Теперь компилятор сохраняет одинаковые изображения мастера и
изображения директив DynamicDark только один раз.
- Исправлено: был изменён прототип функции CreateCustomForm,
но в документации
соответствующая информация не была обновлена. Теперь это исправлено.
- Улучшение безопасности:
- В секции [Files] добавлен новый флаг notimestamp,
препятствующий сохранению файла с меткой времени. Используйте этот
флаг, чтобы сделать сборки воспроизводимыми, даже если вы не можете
сохранить отметки времени в исходных файлах.
- Другие незначительные улучшения.
Используете Inno Setup в коммерческих целях? Пожалуйста, купите лицензию.
6.6.0 (2025-11-11)
Модернизация графики в инсталляторе/деинсталляторе
Программа установки и удаления теперь поддерживает тёмную тему:
принудительно или автоматически.
Все эти параметры являются дополнительными, имеют обратную совместимость
и НЕ увеличивают размер инсталлятора, если не используются.
- В секции [Setup] директива WizardStyle дополнена
новыми параметрами:
- В секции [Setup] добавлены новые директивы DynamicDark
для указания отдельных пользовательских изображений и цветов, которые
специально будут использоваться в режиме dynamic при переключении
на тёмную тему.
- Стиль по умолчанию можно заменить на другой файл VCL-стиля с помощью
новой директивы WizardStyleFile и директивы DynamicDark.
- Например, чтобы использовать другие стили для светлой и тёмной тем,
укажите соответствующие файлы стилей:
WizardStyle=modern dynamic
WizardStyleFile=MyStyleLight.vsf
WizardStyleFileDynamicDark=MyStyleDark.vsf
Скриншот
инсталлятора со стилем Polar Light при DPI 150%.
Скриншот
инсталлятора со стилем Polar Dark при DPI 150%.
Скриншот
диалога задач со стилем Zircon при DPI 125%.
- Если активен пользовательский стиль (включая встроенную тёмную тему),
все текстовые метки, за исключением метки, связанной с сообщением
BeveledLabel, имеют прозрачный фон. Кроме того, программа
установки и удаления использует индивидуальную реализацию диалоговых
окон Windows.
- Показанный выше стиль "Polar" является встроенным и напрямую
поддерживается директивой WizardStyle напрямую. Например:
WizardStyle=modern dynamic polar
- Дополнительно доступно ещё три встроенных стиля, поддерживаемых
директивой WizardStyle: slate, windows11 и
zircon. Стиль slate использует средне-серый цвет как
для светлого, так и для тёмного оформления, windows11 является
светлым аналогом встроенного тёмного стиля, а zircon – это
альтернативный светлый стиль с голубыми акцентами, показанный выше. Например:
WizardStyle=modern zircon
- Добавлен модификатор includetitlebar: позволяет настраивать
стили заголовков и границ. По умолчанию вместо них используется
системный светлый или тёмный заголовок. Например:
WizardStyle=modern dynamic polar includetitlebar
- Добавлен модификатор excludelightbuttons: отключает стилизацию
всех кнопок (включая кнопки командных ссылок, используемые в диалоговых
окнах задач), когда активен светлый стиль. Например:
WizardStyle=modern dynamic windows11 excludelightbuttons
- Пользовательские стили (включая встроенный тёмный стиль) НЕ
активируются, если в системе пользователя установлена высококонтрастная
тема или используется новый параметр командной строки '/NOSTYLE'.
- IDE компилятора: в мастер создания нового сценария добавлена страница
Wizard Style, которая позволяет выбрать стиль и увидеть его пример.
- Программирование на языке Паскаль:
- Добавлены функции IsWinDark и IsDarkInstallMode.
- Добавлены свойства StyleElements и StyleName для
класса TControl. В качестве примера смотрите сценарий
CodeClasses.iss,
где также демонстрируется использование IsDarkInstallMode.
Изменения во внешнем виде и работе программы установки
и удаления
Стандартный внешний вид и функциональность программы установки и удаления
был дополнительно модернизирован за счёт перехода на шрифт Segoe UI
и других улучшений.
- Значение директивы WizardSizePercent в секции [Setup]
теперь по умолчанию всегда равно 120,120, а не только при
использовании WizardStyle=modern. В результате, если применяется
WizardStyle=classic, размеры окон программы установки по
умолчанию теперь увеличены на 20%.
- Директива WizardSizePercent в секции [Setup] теперь
поддерживается деинсталлятором. В результате размеры окна программы
удаления по умолчанию теперь увеличены на 20%.
- Программа установки и удаления теперь сохраняют исходное соотношение
сторон своих окон после изменения масштабирования DPI. В результате окна
установки и удаления при DPI 125% и выше будут на 16% шире.
Такое поведение можно отключить, установив в секции [Setup] для
директивы WizardKeepAspectRatio значение no.
- Поддержка директивы WizardResizable в секции [Setup]
прекращена, поэтому пользователь больше не сможет изменять размеры
главного окна мастера установки.
- Теперь вместо пользовательских значков используются высококачественные.
Это касается страниц мастера "Выбор папки установки" и "Подготовка
к установке", а также диалога "Необходимо вставить следующий диск".
- Стандартный шрифт, используемый на страницах мастера установки и
удаления, был изменён с 8-point Tahoma на 9-point Segoe UI,
для единообразия с современным интерфейсом Windows.
Чтобы снова использовать шрифт 8-point Tahoma, используйте
следующие параметры:
[LangOptions]
DialogFontName=Tahoma
DialogFontSize=8
DialogFontBaseScaleHeight=13
DialogFontBaseScaleWidth=6
Если до этого использовался шрифт 9-point Segoe UI, то после
обновления вы заметите изменения в масштабировании. Чтобы использовать
предыдущее масштабирование, примените следующие параметры:
[LangOptions]
DialogFontName=Segoe UI
DialogFontSize=9
DialogFontBaseScaleHeight=13
DialogFontBaseScaleWidth=6
- Стандартный шрифт заголовков, используемый на страницах мастера
"Приветствие" и "Установка завершена", был изменён с
12-point Verdana на 14-point Segoe UI, чтобы соответствовать
современному внешнему виду.
Чтобы снова использовать шрифт 12-point Verdana, используйте
следующие параметры:
[LangOptions]
WelcomeFontName=Verdana
WelcomeFontSize=12
- Программирование на языке Паскаль:
- Добавлены функции InitializeBitmapButtonFromStockIcon и
InitializeBitmapImageFromStockIcon, которые могут использоваться
для отображения различных высококачественных системных значков во всех
версиях Windows.
В качестве примера смотрите сценарий CodeClasses.iss,
а также перечень всех доступных значков на портале Microsoft Learn.
Скриншот
примера CodeClasses.iss при DPI 125% и темном режиме.
- Изменение формы мастера для WizardSizePercent в соответствии с
системным значение масштабирования DPI или пользовательским значением
DialogFontSize теперь выполняется до вызова функции
InitializeWizard, а не после.
Если в вашем сценарии имеются элементы управления, которые должны
увеличиваться в соответствии с WizardSizePercent, и для достижения
этой цели эти элементы управления используют свойство Anchors (то
есть у них установлены значения akLeft и akRight или
akTop и akBottom), но не используют свойство
SurfaceWidth или SurfaceHeight, вам необходимо либо
начать использовать новые свойства SurfaceExtraWidth и
SurfaceExtraHeight (как показано в сценарии CodeClasses.iss)
либо перейти на использование свойств SurfaceWidth и
SurfaceHeight.
Существующий код, который выполняет назначение свойств Anchors,
из ваших сценарий может быть удалён.
- Изменён прототип функции CreateCustomForm. Также изменён класс
TSetupForm: функция FlipSizeAndCenterIfNeeded была
переименована в FlipAndCenterIfNeeded, свойство
SizeAndCenterOnShow переименовано в CenterOnShow,
а свойство KeepSizeX теперь доступно только для чтения.
Смотрите пример сценария CodeClasses.iss
с обновленными CreateCustomForm/TSetupForm.
Улучшения в области безопасности
Рекомендуется выполнить обновление, даже если вы пока не планируете
использовать новые функции и другие возможности. Мы постоянно работаем
над повышением безопасности и надёжностью ваших программ установок.
В этой версии:
- В именах временных каталогов/файлов количество случайных цифр в
системе счисления с основанием 36 было удвоено с 5 до 10 и теперь цифры
генерируются с помощью функции
CSPRNG
(BCryptGenRandom). Это сделано для защиты от атак, которые
могут зависеть от предсказуемости создаваемых имен.
- Теперь программа удаления вместо попытки повторного использования
фиксированного имени для временного каталога (обычно iu-14D2N.tmp в
предыдущих версиях) использует имя, созданное случайным образом
(is-XXXXXXXXXX-uninstall.tmp). Это в первую очередь предназначено
для обеспечения глубокой защиты. Кроме того, это изменение устраняет
проблему, не связанную с безопасностью, но которая имела место в
предыдущих версиях (хотя на практике она возникала крайне редко): если
два деинсталлятора запускались почти одновременно, один из них мог
перезаписать временный файл другого.
- В предыдущих версиях перед удалением существующего временного каталога
(обычно с именем iu-14D2N.tmp) деинсталлятор проверял атрибут
FILE_ATTRIBUTE_REPARSE_POINT, чтобы убедиться, что каталог не
является точкой повторной обработки или символической ссылкой. Однако
эта проверка имела проблему TOCTOU
— теоретически было возможно, что в интервале между проверкой и
удалением каталог мог быть изменён на точку повторной обработки или
символическую ссылку. Нам неизвестны какие-либо способы практической
эксплуатации этой уязвимости, но эта проблема потенциально актуальна
только в том случае, если другие, недоверенные пользователи, имеют доступ
записи во временный каталог, что не является обычным явлением. (До Inno
Setup 6.5, когда инсталлятор/деинсталлятор запускался под учётной записью
SYSTEM, часто использовался каталог C:\Windows\Temp с
общим доступом на запись, но начиная с Inno Setup 6.5 в Windows 11 и
обновленных системах Windows 10 вместо него используется
C:\Windows\SystemTemp.)
В настоящее время мы также работаем над тем, чтобы в будущей версии
включить функцию Windows RedirectionGuard в программе установке
и удалении.
Другие изменения
- IDE компилятора:
- Улучшен коэффициент контрастности для различных цветов
подсветки синтаксиса, особенно в темном режиме.
- Шрифт диалоговых окон обновлен с 8-point Segoe UI на 9-point
Segoe UI.
- Включена поддержка тёмного режима для меню в Windows 11 версии
25H2 (обновление 2025).
- Директива WizardImageBackColor в секции [Setup] и
три другие директивы BackColor теперь может принимать цвет в
формате #rrggbb дополнительно к формату $bbggrr.
- Программирование на языке Паскаль:
- Добавлена поддержка кнопок командных ссылок (стиль кнопок, который
используется в диалоговых окнах задач). Смотрите пример в сценарии CodeClasses.iss.
- Добавлены функции Round, Trunc, Int и
MulDiv.
- Добавлена функция StrToColor.
- Отменены изменения, сделанные в функции события CurPageChanged
с версии 6.5.0.
- Если Windows возвращает несуществующий
временный каталог, программа установки и удаления будет пытаться
создать его заново, но только при обнаружении конкретного сценария,
описанного в статье по ссылке. Начиная с версии 6.5.0, программы установки
и удаления не могли работать по этому сценарию. До версии 6.5.0 они
выбирали другой временный каталог, что также было нежелательно.
- Другие улучшения и исправления.
История
версий Inno Setup 6.5