Секция [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 не содержит исполняемого (.exe или .com) или пакетного (.bat или .cmd) файла, следует обязательно использовать флаг shellexec. Этот параметр может содержать константы.
Filename: "{app}\INIT.EXE"
Этот параметр действителен только для секции [Run]. Позволяет указать описание записи; может содержать константы. Обычно используется для записей с флагом postinstall. Если описание не указано, программа установки будет использовать описание по умолчанию. Также является зависимым от типа запуска (обычный или посредством shellexec).
Description: "View the README file"
Определяет параметры командной строки для запуска программы; может содержать константы.
Parameters: "/x"
Этот параметр определяет начальный каталог запускаемой программы. Если параметр не указан или является пустым, будет использоваться каталог из параметра Filename; если же параметр Filename не содержит путь, будет использоваться каталог по умолчанию. Может содержать константы.
WorkingDir: "{app}"
Этот параметр действителен только в секции [Run]. Определяет сообщение, которое будет показано мастером в процессе выполнения программы. Если этот параметр не указан или является пустым, будет использоваться сообщение по умолчанию "Завершение установки...". Может содержать константы.
StatusMsg: "Установка BDE..."
Этот параметр действителен только в секции [UninstallRun]. Если то же приложение установлено несколько раз, в файле журнала деинсталляции записи "запуска" будут продублированы. Указав параметр RunOnceId, можно гарантировать, что во время деинсталляции конкретная запись секции [UninstallRun] будет выполнена только один раз. Например, если две и более записей "запуска" в журнале деинсталляции содержат параметр RunOnceId со значением "DelService", будет выполнена только последняя запись с параметром RunOnceId и значением "DelService", остальные будут проигнорированы. Имейте в виду, что значение параметра RunOnceId является регистрозависимым. Если параметру RunOnceId не будет присвоена строка, компилятор выдаст предупреждение, что может быть отключено при помощи MissingRunOnceIdsWarning.
RunOnceId: "DelService"
Определяет действие, которое будет выполнено с файлом. Следует использовать вместе с флагом shellexec. Стандартными действиями являются "open" (открыть) и "print" (печать). Если этот параметр не указан или является пустым, по умолчанию будет выполнено действие сопоставленное с типом файла (обычно "open").
Verb: "print"
Этот параметр представляет собой набор дополнительных опций. Допускается использовать несколько опций, разделяя их пробелами. Поддерживаются следующие опции:
Приводит к сопоставлению константы {sys} с 32-битным каталогом System, если используется в параметрах Filename и WorkingDir. Такое поведение используется по умолчанию в 32-разрядном режиме установки.
Этот флаг нельзя использовать вместе с флагом shellexec.
Приводит к сопоставлению константы {sys} с 64-разрядным каталогом System, если используется в параметрах Filename и WorkingDir. Такое поведение используется по умолчанию 64-разрядном режиме установки.
Этот флаг можно использовать только при работе программы установки в 64-разрядной системе Windows, иначе произойдёт ошибка. При создании инсталлятора, поддерживающего обе архитектуры, 32-бит и 64-бит, ошибки можно избежать, добавив параметр Check: IsWin64, который приведет к тому, что при работе в 32-разрядной системе Windows данная запись будет пропущена.
Этот флаг нельзя использовать вместе с флагом shellexec.
Если указан этот флаг, параметры командной строки программы не будут добавлены в файл журнала.
Если указан этот флаг, окно мастера установки будет скрыто при выполнения программы.
Если указан этот флаг, выходные данные программы будут включены в файл журнала.
Этот флаг нельзя использовать вместе с флагами nowait, runasoriginaluser, shellexec и waituntilidle.
При указании этого флага программа установки не будет ожидать завершения запущенного процесса, прежде чем перейти к следующей записи секции [Run] или завершению установки. Этот флаг нельзя использовать вместе с флагом waituntilidle или waituntilterminated.
Этот флаг действителен только в секции [Run]. Указывает программе установки создать флажок на странице мастера "Установка завершена". Пользователь может снять или установить этот флажок и, таким образом, выбрать, следует ли обрабатывать эту запись или нет. Раньше этот флаг назывался showcheckbox.
Если программе установки потребуется перезагрузить компьютер пользователя (в результате установки файла с флагом restartreplace или если директива AlwaysRestart секции [Setup] имеет значение yes), возможности для отображения флажка не будет, и, следовательно, эта запись никогда не будет обработана.
Флаг isreadme для записей в секции [Files] уже является устаревшим. Если компилятор обнаружит запись с флагом isreadme, он убирает этот флаг из записи секции [Files] и вставляет вновь созданную запись в начало секции [Run]. Эта созданная запись секции [Run] запускает файл README и содержит флаги shellexec, skipifdoesntexist, postinstall и skipifsilent.
При указании этого флага порождённый процесс унаследует учётные полномочия пользователя, который запустил программу установки/удаления (как правило, полные права администратора).
Такое поведение принимается по умолчанию, если флаг postinstall не используется.
Этот флаг нельзя использовать вместе с флагом runasoriginaluser.
Этот флаг действителен только в секции [Run]. При указании этого флага порождённый процесс будет выполняться с полномочиями пользователя (как правило, без повышенных прав), который изначально запустил программу установки (т.е. с правами до появления "диалога UAC".
Такое поведение принимается по умолчанию, если используется флаг postinstall.
Если пользователь запустит программу установки посредством контекстного меню, выбрав команду "Запуск от имени администратора", этот флаг, к сожалению, не будет иметь никакого эффекта, поскольку программа установки не имеет возможности запустить код с исходными полномочиями учётной записи пользователя. Аналогичная ситуация произойдёт, если программа установки будет запущена процессом с уже повышенными правами. Однако следует отметить, что это не является каким-то специальным для Inno Setup ограничением. В таких случаях все инсталляторы на базе систем установки Windows также не могут вернуться к исходным полномочиям учётной записи пользователя.
Этот флаг нельзя использовать вместе с флагом runascurrentuser.
Если указан этот флаг, программа будет запущена в скрытом окне. Никогда не используйте этот флаг при выполнении программы, которая может запрашивать у пользователя ввод данных.
Если указан этот флаг, программа или документ будут запущены в развёрнутом окне.
Если указан этот флаг, программа или документ будут запущены в свёрнутом окне.
Этот флаг следует указывать, если параметр Filename не содержит исполняемый файл (*.exe или *.com). В этом случае значение параметра Filename может быть папкой или любым зарегистрированным типом файла — включая *.chm, *.doc и т.д. Указанный файл будет открыт приложением, которое связано с данным типом файла в системе пользователя, точно так же, как если бы пользователь дважды щёлкнул по файлу в Проводнике.
По умолчанию, когда используется флаг shellexec, инсталлятор не будет ожидать завершения запущенного процесса. В случае, если это необходимо, добавьте флаг waituntilterminated. Обратите внимание, что инсталлятор не может и не будет ожидать, если новый процесс не был создан, например, если в параметре Filename указана папка.
При указании этого флага в секции [Run] программа установки не будет показывать сообщение об ошибке, если Filename не существует.
При указании этого флага в секции [UninstallRun] программа установки не будет показывать предупреждение "некоторые элементы не могут быть удалены", если Filename не существует.
Когда используется этот флаг, параметр Filename должен содержать абсолютный путь.
Этот флаг действителен только в секции [Run]. Указывает программе установки пропустить данную запись при работе в обычном режиме.
Этот флаг действителен только в секции [Run]. Указывает программе установки пропустить данную запись при работе в тихом режиме.
Этот флаг действителен только в секции [Run]. Указывает программе установки снять флажок. Пользователь по прежнему сможет установить флажок, если захочет, чтобы данная запись была обработана. Этот флаг игнорируется, если флаг postinstall также не указан.
Если указан этот флаг, программа установки будет ожидать завершения пользовательского ввода, вместо завершения запущенного процесса. (Используется вызов функции Windows API WaitForInputIdle.) Этот флаг нельзя использовать вместе с флагом nowait или waituntilterminated.
Если указан этот флаг, программа установки будет ожидать полного завершения запущенного процесса. Заметьте, что такое поведение используется по умолчанию (т.е. флаг можно не указывать), если не задан флаг shellexec. Иначе его следует указать, если требуется, чтобы ожидание было выполнено. Этот флаг нельзя использовать вместе с флагом nowait или waituntilidle.
Flags: postinstall nowait skipifsilent