Во многих записях сценария широко можно использовать константы. Это предопределённые строки, заключённые в фигурные скобки { }. Программа установки или удаления преобразует константы в их литеральные значения в зависимости от выбора пользователя и конфигурации системы. Например, константа {win} на большинстве систем будет преобразовываться в "C:\WINDOWS".
Символ открывающей фигурной скобки "{" рассматривается как начало константы. Если необходимо в месте применения константы использовать фактический символ "{", введите его дважды "{{". При этом дублировать символ закрывающей скобки "}" не нужно.
Если за константой следует символ обратной косой черты ("\"), а само значение константы уже заканчивается обратной косой чертой, то программа установки или удаления его автоматически удалит. Таким образом, если значение определённой константы равно "C:\", то запись {constantname}\file будет преобразована в "C:\file", а не в "C:\\file". Если необходимо это предотвратить, заключите символ обратной косой черты в фигурные скобки { }, например, {app}{\}.
Ниже приведен список поддерживаемых констант.
Каталог приложения, которую пользователь выбирает на странице мастера "Выбор папки установки".
Например: если в сценарии используется запись {app}\MYPROG.EXE, а в качестве каталога приложения пользователь выбрал "C:\MYPROG", то программа установки преобразует её в "C:\MYPROG\MYPROG.EXE".
Каталог операционной системы Windows.
Например: если в сценарии используется запись {win}\MYPROG.INI, а каталогом ОС Windows является "C:\WINDOWS", то программа установки или удаления преобразует её в "C:\WINDOWS\MYPROG.INI".
Системный каталог System32.
Например: если в сценарии используется запись {sys}\CTL3D32.DLL, а системным каталогом ОС Windows является "C:\WINDOWS\SYSTEM", то программа установки или удаления преобразует её в "C:\WINDOWS\SYSTEM\CTL3D32.DLL".
На 64-разрядных системах Windows, по умолчанию, путь к каталогу System32, возвращаемый этой константой, сопоставляется с каталогом, в котором находятся 32-разрядные системные файлы, как и в 32-разрядных ОС Windows. (Эта константа может быть изменена включением 64-разрядного режима установки.)
На 64-разрядных Windows каталог, возвращаемый этой константой, содержит 64-разрядные системные файлы. На 32-разрядных Windows — 32-разрядные системные файлы.
Системный каталог SysWOW64 на 64-разрядных Windows, обычно "C:\WINDOWS\SysWOW64". Фактически в этом каталоге находятся 32-разрядные системные файлы. На 32-разрядных Windows каталога SysWOW64 не существует, поэтому эта константа вернёт такой же самый каталог, что и константа {sys}, если будет там использована.
Не используйте эту константу, если не требуется получить имя фактического каталога, в котором находятся 32-разрядные системные файлы. Необоснованное использование константы {syswow64} в местах, где применение {sys} было бы достаточным, может привести к серьёзным проблемам. (В качестве примера смотрите описание секции [Files] по флагу sharedfile.)
Каталог, в котором находятся файлы программы установки.
Например: если в сценарии используется запись {src}\MYPROG.EXE
и пользователь выполняет установку из "D:\Soft", то программа
установки преобразует её в "D:\Soft\MYPROG.EXE".
Системный диск, на котором установлена операционная система Windows. Обычно диск "C:". Эта константа эквивалентна переменной среды SystemDrive.
Каталог Program Files, в который обычно выполняется установка приложений. Константа {commonpf} эквивалентна константе {commonpf32}, если установка не работает в 64-разрядном режиме, иначе эквивалентна константе {commonpf64}.
32-разрядный каталог Program Files, предназначенный для установки 32-разрядных приложений. Обычно это путь "C:\Program Files" на 32-разрядных Windows и "C:\Program Files (x86)" на 64-разрядных Windows.
64-разрядный каталог Program Files, предназначенный для установки 64-разрядных приложений. Обычно это путь "C:\Program Files". Константа действительна только на 64-разрядных Windows. При попытке её использования на 32-разрядных Windows будет вызвано исключение.
Каталог Common Files, в который обычно выполняется установка системных файлов приложений. Константа {commoncf} эквивалентна константе {commoncf32}, если установка не работает в 64-разрядном режиме, иначе эквивалентна константе {commoncf64}.
32-разрядный каталог Common Files, предназначенный для установки 32-разрядных системных файлов приложений. Обычно это путь "C:\Program Files\Common Files" на 32-разрядных Windows и "C:\Program Files (x86)\Common Files" на 64-разрядных Windows.
64-разрядный каталог Common Files, предназначенный для установки 64-разрядных системных файлов приложений. Обычно это путь "C:\Program Files\Common Files". Константа действительна только на 64-разрядных Windows. При попытке её использования на 32-разрядных Windows будет вызвано исключение.
Временный каталог, используемый программой установки или удаления. Константа не является значением переменной окружения TEMP пользователя. Это подкаталог во временном каталоге пользователя, который создаёт программа установки или удаления при запуске (с именем подобно "C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и подкаталоги в этом каталоге автоматически удаляются, когда программа установки или удаления завершает свою работу. При установке эта константа обычно используется для извлечения файлов, которые должны быть выполнены в секции [Run], но не нужны после установки.
Каталог шрифтов. Обычно называется "Fonts" и находится в каталоге Windows.
Каталог DAO. Константа эквивалентна записи {commoncf}\Microsoft Shared\DAO.
Корневой каталог установки 32-разрядной .NET Framework версии 1.1.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 1.1, будет вызвано исключение.
Корневой каталог установки .NET Framework версии 2.0-3.5. Константа {dotnet20} эквивалентна константе {dotnet2032}, если установка не работает в 64-разрядном режиме, иначе эквивалентна константе {dotnet2064}.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 2.0-3.5, будет вызвано исключение.
Корневой каталог установки 32-разрядной .NET Framework версии 2.0-3.5.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 2.0-3.5, будет вызвано исключение.
Корневой каталог установки 64-разрядной .NET Framework версии 2.0-3.5. Константа действительна только на 64-разрядных Windows.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 2.0-3.5, будет вызвано исключение.
Корневой каталог установки .NET Framework версии 4.0 и выше. Константа {dotnet40} эквивалентна константе {dotnet4032}, если установка не работает в 64-разрядном режиме, иначе эквивалентна константе {dotnet4064}.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 4.0 или выше, будет вызвано исключение.
См. также IsDotNetInstalled.
Корневой каталог установки 32-разрядной .NET Framework версии 4.0 и выше.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 4.0 или выше, будет вызвано исключение.
Корневой каталог установки 64-разрядной .NET Framework версии 4.0 и выше. Константа действительна только на 64-разрядных Windows.
При попытке использования этой константы на системах, на которых нет .NET Framework версии 4.0 или выше, будет вызвано исключение.
Inno Setup поддерживает другой набор констант каталога, именуемый константы специальных папок. Их можно использовать так же, как и другие константы каталога.
Константы "common" относятся к профилю Все пользователи.
Константы "user" относятся к профилю пользователя, который запускает программу установки. Часто этот пользователь является не тем пользователем, который вошёл в систему, поэтому используйте константы "user" с осторожностью.
Путь к папке в меню «Пуск», которую пользователь выбрал на странице мастера "Выберите папку в меню «Пуск»". Если инсталлятор работает в режиме не административной установки, папка создаётся в профиле текущего пользователя, иначе — в профиле Все пользователи.
Путь к локальной (без роуминга) папке "Application Data" текущего пользователя.
Путь к папке "Application Data".
Путь к папке "Common Files" текущего пользователя. Константа {usercf} поддерживается только в Windows 7 и более поздних версиях. При использовании в предыдущих версиях Windows она будет преобразована в {localappdata}\Programs\Common.
Путь к папке "Рабочий стол".
Путь к папке "Мои документы".
Путь к папке "Избранное" текущего пользователя. (Общей папки "Избранное" не существует.)
Путь к папке "Fonts" текущего пользователя. Только Windows 10 версии 1803 и выше поддерживает константу {userfonts}. Соответствует каталогу {localappdata}\Microsoft\Windows\Fonts.
Путь к папке "Program Files" текущего пользователя. Константа {userpf} поддерживается только в Windows 7 и более поздних версиях. При использовании в предыдущих версиях Windows она будет преобразована в {localappdata}\Programs.
Путь к папке "Программы" в меню «Пуск».
Путь к папке "Сохранения игр" (Saved Games) текущего пользователя. (Общей папки "Сохранения игр" не существует.)
Путь к папке "Отправить" текущего пользователя. (Общей папки "Отправить" не существует.)
Путь к папке верхнего уровня меню «Пуск».
Путь к папке "Автозагрузка" в меню «Пуск».
Путь к папке "Шаблоны".
Помимо констант "common" и "user", Inno Setup также поддерживает константы "auto". Если инсталлятор работает в режиме не административной установки, константы "auto" сопоставляются формой "user", иначе — с формой "common".
Если это возможно, рекомендуется всегда использовать константы "auto", чтобы предотвратить появление ошибок.
Административный | Не административный | |
autoappdata | commonappdata | userappdata |
autocf | commoncf | usercf |
autocf32 | commoncf32 | usercf |
autocf64 | commoncf64 | usercf |
autodesktop | commondesktop | userdesktop |
autodocs | commondocs | userdocs |
autofonts | commonfonts | userfonts |
autopf | commonpf | userpf |
autopf32 | commonpf32 | userpf |
autopf64 | commonpf64 | userpf |
autoprograms | commonprograms | userprograms |
autostartmenu | commonstartmenu | userstartmenu |
autostartup | commonstartup | userstartup |
autotemplates | commontemplates | usertemplates |
Начиная с Inno Setup 6 некоторые константы каталогов и специальных папок получили новые имена. В сценариях старые имена все ещё поддерживаются, но рекомендуется их обновить на новые (или применить форму "auto"), иначе компилятор выдаст предупреждение, если этого не сделать.
Старое имя | Новое имя |
cf | commoncf |
cf32 | commoncf32 |
cf64 | commoncf64 |
fonts | commonfonts |
pf | commonpf |
pf32 | commonpf32 |
pf64 | commonpf64 |
sendto | usersendto |
Символ обратной косой черты. В начале этой главы описано различие в использовании между {\} и \.
Выполняет вставку значения переменной среды.
{%COMSPEC} {%PROMPT|$P$G}
Полный путь к стандартному системному интерпретатору команд. Обычно это Windows\System32\cmd.exe. Обратите внимание, что переменная среды COMSPEC не используется при расширении этой константы.
Имя компьютера, на котором запущена программа установки или удаления (возвращается функцией GetComputerName).
Извлекает и возвращает букву диска и двоеточие (например, "C:") по указанному пути. В случае, если путь является сетевым, возвращает имя сервера и общего ресурса (например, "\\SERVER\SHARE").
{drive:{src}} {drive:c:\path\file} {drive:\\server\share\path\file}
Путь к папке в меню «Пуск», которую пользователь выбрал на странице мастера "Выберите папку в меню «Пуск»". Эта константа отличается от константы {group} тем, что содержит только имя папки, а не путь к ней.
(Специального назначения) преобразует фоновое окно программы установки в дескриптор окна.
(Специального назначения) преобразует окно мастера программы установки в дескриптор окна. Дескриптор равен "0", если в момент трансляции дескриптор окна недоступен.
Выполняет вставку значения из файла INI.
{ini:{win}\MyProg.ini,Settings,Path|{autopf}\My Program}
Внутреннее имя выбранного языка. Более подробную информацию смотрите в описании секции [Languages].
Выполняет вставку значения пользовательского сообщения на основе активного языка.
{cm:LaunchProgram,Inno Setup}
В приведенном выше примере сообщение будет транслировано в "Launch Inno Setup", если активным языком является английский (English).
Выполняет вставку значения реестра.
{reg:HKA\Software\My Program,Path|{autopf}\My Program}
Выполняет вставку значения параметра командной строки.
{param:Path|{autopf}\My Program}
В приведенном выше примере, указанная командная строка /Path="c:\My Program" преобразуется в c:\My Program.
Полный путь к файлу программы установки, например, "C:\SETUP.EXE".
Полный путь к файлу программы удаления, извлечённого из программы установки, например, "C:\Program Files\My Program\unins000.exe". Эта константа чаще всего используется в секции [Icons] для создания значка деинсталлятора. Константа действительна только в том случае, если директиве Uninstallable в секции [Setup] присвоено значение yes (используется по умолчанию).
Соответственно имя и организация, на которые зарегистрирована Windows. Эта информация считывается из реестра.
Соответственно имя, организация и серийный номер, которые пользователь ввёл на странице мастера "Информация о пользователе" (эту страница может быть включена директивой UserInfoPage). Обычно эти константы используются в записях секции [Registry] или [INI] для сохранения их значения с целью последующего использования.
Имя пользователя, выполняющего программу установки или удаления (возвращается функцией GetUserName).
Имя файла отчёта или пустая строка, если создание файла журнала не включено.