Секции [Run] и [UninstallRun]

Секция [Run] является необязательной и определяет любое количество программ, которые необходимо выполнить после успешной установки, но прежде, чем будет показан завершающий диалог установки. Секция [UninstallRun] также является необязательной, и определяет программы, которые следует выполнить на первом этапе деинсталляции. В обеих секциях используется одинаковый синтаксис, за исключением небольших различий, указанных ниже.

Программы запускаются в порядке, в котором они указаны в сценарии. По умолчанию, при обработке записей секции [Run]/[UninstallRun], программа установки/удаления будет ожидать завершения работы запущенной программы, прежде чем перейти к запуску следующей программы, если только не используются флаги nowait, shellexec или waituntilidle.

Обратите внимание, что по умолчанию, если программа, выполняемая в секции [Run], ставит в очередь файлы для замены при следующей перезагрузке (путём вызова MoveFileEx или изменением wininit.ini), программа установки обнаружит это и предложит пользователю перезагрузить компьютер по окончанию установки. Если такая функциональность вам не нужна, укажите для директивы RestartIfNeededByRun значение no.

Ниже представлен пример секции [Run].

[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "Просмотр файла README"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "Запуск приложения"; Flags: postinstall nowait skipifsilent unchecked   

Ниже приведен список поддерживаемых параметров:

Filename  (обязательный)

Определяет программу для выполнения или файл/папку, который следует открыть. Если параметр Filename не содержит исполняемого (.exe или .com) или пакетного (.bat или .cmd) файла, следует обязательно использовать флаг shellexec. Этот параметр может содержать константы.

Пример:
Filename: "{app}\INIT.EXE"
Description

Этот параметр действителен только для секции [Run]. Позволяет указать описание записи; может содержать константы. Обычно используется для записей с флагом postinstall. Если описание не указано, программа установки будет использовать описание по умолчанию. Также является зависимым от типа запуска (обычный или посредством shellexec).

Пример:
Description: "View the README file"
Parameters

Определяет параметры командной строки для запуска программы; может содержать константы.

Пример:
Parameters: "/x"
WorkingDir

Этот параметр определяет начальный каталог запускаемой программы. Если параметр не указан или является пустым, будет использоваться каталог из параметра Filename; если же параметр Filename не содержит путь, будет использоваться каталог по умолчанию. Может содержать константы.

Пример:
WorkingDir: "{app}"
StatusMsg

Этот параметр действителен только в секции [Run]. Определяет сообщение, которое будет показано мастером в процессе выполнения программы. Если этот параметр не указан или является пустым, будет использоваться сообщение по умолчанию "Завершение установки...". Может содержать константы.

Пример:
StatusMsg: "Установка BDE..."
RunOnceId

Этот параметр действителен только в секции [UninstallRun]. Если то же приложение установлено несколько раз, в файле журнала деинсталляции записи "запуска" будут продублированы. Указав параметр RunOnceId, можно гарантировать, что во время деинсталляции конкретная запись секции [UninstallRun] будет выполнена только один раз. Например, если две и более записей "запуска" в журнале деинсталляции содержат параметр RunOnceId со значением "DelService", будет выполнена только последняя запись с параметром RunOnceId и значением "DelService", остальные будут проигнорированы. Имейте в виду, что значение параметра RunOnceId является регистрозависимым. Если параметру RunOnceId не будет присвоена строка, компилятор выдаст предупреждение, что может быть отключено при помощи MissingRunOnceIdsWarning.

Пример:
RunOnceId: "DelService"
Verb

Определяет действие, которое будет выполнено с файлом. Следует использовать вместе с флагом shellexec. Стандартными действиями являются "open" (открыть) и "print" (печать). Если этот параметр не указан или является пустым, по умолчанию будет выполнено действие сопоставленное с типом файла (обычно "open").

Пример:
Verb: "print"
Flags

Этот параметр представляет собой набор дополнительных опций. Допускается использовать несколько опций, разделяя их пробелами. Поддерживаются следующие опции:

32bit

Приводит к сопоставлению константы {sys} с 32-битным каталогом System, если используется в параметрах Filename и WorkingDir. Такое поведение используется по умолчанию в 32-разрядном режиме установки.

Этот флаг нельзя использовать вместе с флагом shellexec.

64bit

Приводит к сопоставлению константы {sys} с 64-разрядным каталогом System, если используется в параметрах Filename и WorkingDir. Такое поведение используется по умолчанию 64-разрядном режиме установки.

Этот флаг можно использовать только при работе программы установки в 64-разрядной системе Windows, иначе произойдёт ошибка. При создании инсталлятора, поддерживающего обе архитектуры, 32-бит и 64-бит, ошибки можно избежать, добавив параметр Check: IsWin64, который приведет к тому, что при работе в 32-разрядной системе Windows данная запись будет пропущена.

Этот флаг нельзя использовать вместе с флагом shellexec.

dontlogparameters

Если указан этот флаг, параметры командной строки программы не будут добавлены в файл журнала.

hidewizard

Если указан этот флаг, окно мастера установки будет скрыто при выполнения программы.

logoutput

Если указан этот флаг, выходные данные программы будут включены в файл журнала.

Этот флаг нельзя использовать вместе с флагами nowait, runasoriginaluser, shellexec и waituntilidle.

nowait

При указании этого флага программа установки не будет ожидать завершения запущенного процесса, прежде чем перейти к следующей записи секции [Run] или завершению установки. Этот флаг нельзя использовать вместе с флагом waituntilidle или waituntilterminated.

postinstall

Этот флаг действителен только в секции [Run]. Указывает программе установки создать флажок на странице мастера "Установка завершена". Пользователь может снять или установить этот флажок и, таким образом, выбрать, следует ли обрабатывать эту запись или нет. Раньше этот флаг назывался showcheckbox.

Если программе установки потребуется перезагрузить компьютер пользователя (в результате установки файла с флагом restartreplace или если директива AlwaysRestart секции [Setup] имеет значение yes), возможности для отображения флажка не будет, и, следовательно, эта запись никогда не будет обработана.

Флаг isreadme для записей в секции [Files] уже является устаревшим. Если компилятор обнаружит запись с флагом isreadme, он убирает этот флаг из записи секции [Files] и вставляет вновь созданную запись в начало секции [Run]. Эта созданная запись секции [Run] запускает файл README и содержит флаги shellexec, skipifdoesntexist, postinstall и skipifsilent.

runascurrentuser

При указании этого флага порождённый процесс унаследует учётные полномочия пользователя, который запустил программу установки/удаления (как правило, полные права администратора).

Такое поведение принимается по умолчанию, если флаг postinstall не используется.

Этот флаг нельзя использовать вместе с флагом runasoriginaluser.

runasoriginaluser

Этот флаг действителен только в секции [Run]. При указании этого флага порождённый процесс будет выполняться с полномочиями пользователя (как правило, без повышенных прав), который изначально запустил программу установки (т.е. с правами до появления "диалога UAC".

Такое поведение принимается по умолчанию, если используется флаг postinstall.

Если пользователь запустит программу установки посредством контекстного меню, выбрав команду "Запуск от имени администратора", этот флаг, к сожалению, не будет иметь никакого эффекта, поскольку программа установки не имеет возможности запустить код с исходными полномочиями учётной записи пользователя. Аналогичная ситуация произойдёт, если программа установки будет запущена процессом с уже повышенными правами. Однако следует отметить, что это не является каким-то специальным для Inno Setup ограничением. В таких случаях все инсталляторы на базе систем установки Windows также не могут вернуться к исходным полномочиям учётной записи пользователя.

Этот флаг нельзя использовать вместе с флагом runascurrentuser.

runhidden

Если указан этот флаг, программа будет запущена в скрытом окне. Никогда не используйте этот флаг при выполнении программы, которая может запрашивать у пользователя ввод данных.

runmaximized

Если указан этот флаг, программа или документ будут запущены в развёрнутом окне.

runminimized

Если указан этот флаг, программа или документ будут запущены в свёрнутом окне.

shellexec

Этот флаг следует указывать, если параметр Filename не содержит исполняемый файл (*.exe или *.com). В этом случае значение параметра Filename может быть папкой или любым зарегистрированным типом файла — включая *.chm, *.doc и т.д. Указанный файл будет открыт приложением, которое связано с данным типом файла в системе пользователя, точно так же, как если бы пользователь дважды щёлкнул по файлу в Проводнике.

По умолчанию, когда используется флаг shellexec, инсталлятор не будет ожидать завершения запущенного процесса. В случае, если это необходимо, добавьте флаг waituntilterminated. Обратите внимание, что инсталлятор не может и не будет ожидать, если новый процесс не был создан, например, если в параметре Filename указана папка.

skipifdoesntexist

При указании этого флага в секции [Run] программа установки не будет показывать сообщение об ошибке, если Filename не существует.

При указании этого флага в секции [UninstallRun] программа установки не будет показывать предупреждение "некоторые элементы не могут быть удалены", если Filename не существует.

Когда используется этот флаг, параметр Filename должен содержать абсолютный путь.

skipifnotsilent

Этот флаг действителен только в секции [Run]. Указывает программе установки пропустить данную запись при работе в обычном режиме.

skipifsilent

Этот флаг действителен только в секции [Run]. Указывает программе установки пропустить данную запись при работе в тихом режиме.

unchecked

Этот флаг действителен только в секции [Run]. Указывает программе установки снять флажок. Пользователь по прежнему сможет установить флажок, если захочет, чтобы данная запись была обработана. Этот флаг игнорируется, если флаг postinstall также не указан.

waituntilidle

Если указан этот флаг, программа установки будет ожидать завершения пользовательского ввода, вместо завершения запущенного процесса. (Используется вызов функции Windows API WaitForInputIdle.) Этот флаг нельзя использовать вместе с флагом nowait или waituntilterminated.

waituntilterminated

Если указан этот флаг, программа установки будет ожидать полного завершения запущенного процесса. Заметьте, что такое поведение используется по умолчанию (т.е. флаг можно не указывать), если не задан флаг shellexec. Иначе его следует указать, если требуется, чтобы ожидание было выполнено. Этот флаг нельзя использовать вместе с флагом nowait или waituntilidle.

Пример:
Flags: postinstall nowait skipifsilent

Параметры секций [Components] и [Tasks]

Общие параметры