The [Run] section is optional, and specifies any number of programs to execute after the program has been successfully installed, but before the Setup program displays the final dialog. The [UninstallRun] section is optional as well, and specifies any number of programs to execute as the first step of
uninstallation.
Both sections share an identical syntax, except where otherwise noted below.
Programs are executed in the order they appear in the script. By default, when processing a [Run]/[UninstallRun] entry, Setup/Uninstall will wait until the program has terminated before proceeding to the next one, unless the
nowait
,
shellexec
, or
waituntilidle
flags are used.
Note that by default, if a program executed in the [Run] section queues files to be replaced on the next reboot (by calling MoveFileEx or by modifying wininit.ini), Setup will detect this and prompt the user to restart the computer at the end of installation. If you don't want this, set the
RestartIfNeededByRun
directive to
no
.
The following is an example of a
[Run]
section.
[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "Launch application"; Flags: postinstall nowait skipifsilent unchecked
The following is a list of the supported
parameters
:
Filename
(Required)
The program to execute, or file/folder to open. If
Filename
is not an executable (.exe or .com) or batch file (.bat or .cmd), you
must
use the
shellexec
flag on the entry. This parameter can include constants.
Filename: "{app}\INIT.EXE"
Description
Valid only in a
[Run]
section. The description of the entry, which can include constants. This description is used for entries with the
postinstall
flag. If the description is not specified for an entry, Setup will use a default description. This description depends on the type of the entry (normal or
shellexec
).
Description: "View the README file"
Parameters
Optional command line parameters for the program, which can include constants.
Parameters: "/x"
WorkingDir
The initial current directory for the program. If this parameter is not specified or is blank, it uses the directory from the
Filename
parameter; if
Filename
does not include a path, it will use a default directory. This parameter can include constants.
WorkingDir: "{app}"
StatusMsg
Valid only in a
[Run]
section. Determines the message displayed on the wizard while the program is executed. If this parameter is not specified or is blank, a default message of "Finishing installation..." will be used. This parameter can include constants.
StatusMsg: "Installing BDE..."
RunOnceId
Valid only in an
[UninstallRun]
section. If the
same application
is installed more than once, "run" entries will be duplicated in the uninstall log file. By assigning a string to
RunOnceId
, you can ensure that a particular
[UninstallRun]
entry will only be executed once during uninstallation. For example, if two or more "run" entries in the uninstall log have a
RunOnceId
setting of "DelService", only the latest entry with a
RunOnceId
setting of "DelService" will be executed; the rest will be ignored. Note that
RunOnceId
comparisons are case-sensitive. If you don't assign a string to
RunOnceId
, the compiler will warn you about this, which can be disabled using
MissingRunOnceIdsWarning
.
RunOnceId: "DelService"
Specifies the action to be performed on the file. Must be combined with the
shellexec
flag. Commonly available verbs include "open" and "print". If this parameter is not specified or is blank, the default verb for the file type will be used (typically "open").
Verb: "print"
Flags
This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:
32bit
Causes the
{sys}
constant to map to the 32-bit System directory when used in the
Filename
and
WorkingDir
parameters. This is the default behavior in
32-bit install mode
.
This flag cannot be combined with the
shellexec
flag.
64bit
Causes the
{sys}
constant to map to the 64-bit System directory when used in the
Filename
and
WorkingDir
parameters. This is the default behavior in
64-bit install mode
install.
This flag can only be used when Setup is running on 64-bit Windows, otherwise an error will occur. On an installation supporting both 32- and 64-bit architectures, it is possible to avoid the error by adding a
Check: IsWin64
parameter, which will cause the entry to be silently skipped when running on 32-bit Windows.
This flag cannot be combined with the
shellexec
flag.
dontlogparameters
If this flag is specified, the command line parameters for the program will not be included in the log file.
hidewizard
If this flag is specified, the wizard will be hidden while the program is running.
logoutput
If this flag is specified, the output of the program will be included in the log file.
This flag cannot be combined with the
nowait
,
runasoriginaluser
,
shellexec
, and
waituntilidle
flags.
nowait
If this flag is specified, it will not wait for the process to finish executing before proceeding to the next [Run] entry, or completing Setup. Cannot be combined with
waituntilidle
or
waituntilterminated
.
postinstall
Valid only in a [Run] section. Instructs Setup to create a checkbox on the
Setup Completed
wizard page. The user can uncheck or check this checkbox and thereby choose whether this entry should be processed or not. Previously this flag was called
showcheckbox
.
If Setup has to restart the user's computer (as a result of installing a file with the flag
restartreplace
or if the
AlwaysRestart
[Setup]
section directive is
yes
), there will not be an opportunity for the checkbox to be displayed and therefore the entry will never be processed.
The
isreadme
flag for entries in the [Files] section is now obsolete. If the compiler detects a entry with an
isreadme
flag, it strips the
isreadme
flag from the [Files] entry and inserts a generated [Run] entry at the head of the list of [Run] entries. This generated [Run] entry runs the README file and has flags
shellexec
,
skipifdoesntexist
,
postinstall
and
skipifsilent
.
runascurrentuser
If this flag is specified, the spawned process will inherit Setup/Uninstall's user credentials (typically, full administrative privileges).
This is the default behavior when the
postinstall
flag is not used.
This flag cannot be combined with the
runasoriginaluser
flag.
runasoriginaluser
Valid only in a [Run] section. If this flag is specified, the spawned process will execute with the (normally non-elevated) credentials of the user that started Setup initially (i.e., the "pre-UAC dialog" credentials).
This is the default behavior when the
postinstall
flag is used.
If a user launches Setup by right-clicking its EXE file and selecting "Run as administrator", then this flag, unfortunately, will have no effect, because Setup has no opportunity to run any code with the original user credentials. The same is true if Setup is launched from an already-elevated process. Note, however, that this is not an Inno Setup-specific limitation; Windows Installer-based installers cannot return to the original user credentials either in such cases.
This flag cannot be combined with the
runascurrentuser
flag.
runhidden
If this flag is specified, it will launch the program in a hidden window. Never use this flag when executing a program that may prompt for user input.
runmaximized
If this flag is specified, it will launch the program or document in a maximized window.
runminimized
If this flag is specified, it will launch the program or document in a minimized window.
shellexec
This flag is required if
Filename
is not a directly executable file (an .exe or .com file). When this flag is set,
Filename
can be a folder or any registered file type -- including .chm, .doc, and so on. The file will be opened with the application associated with the file type on the user's system, the same way it would be if the user double-clicked the file in Explorer.
By default, when the
shellexec
flag is used it will not wait until the spawned process terminates. If you need that, you must add the flag
waituntilterminated
. Note that it cannot and will not wait if a new process isn't spawned -- for example, if
Filename
specifies a folder.
skipifdoesntexist
If this flag is specified in the [Run] section, Setup won't display an error message if
Filename
doesn't exist.
If this flag is specified in the [UninstallRun] section, the uninstaller won't display the "some elements could not be removed" warning if
Filename
doesn't exist.
When this flag is used,
Filename
must be an absolute path.
skipifnotsilent
Valid only in a [Run] section. Instructs Setup to skip this entry if Setup is not running (very) silent.
skipifsilent
Valid only in a [Run] section. Instructs Setup to skip this entry if Setup is running (very) silent.
unchecked
Valid only in a [Run] section. Instructs Setup to initially uncheck the checkbox. The user can still check the checkbox if they wishes to process the entry. This flag is ignored if the
postinstall
flag isn't also specified.
waituntilidle
If this flag is specified, it will wait until the process is waiting for user input with no input pending, instead of waiting for the process to terminate. (This calls the
WaitForInputIdle
Win32 function.) Cannot be combined with
nowait
or
waituntilterminated
.
waituntilterminated
If this flag is specified, it will wait until the process has completely terminated. Note that this is the default behavior (i.e. you don't need to specify this flag) unless you're using
shellexec
flag, in which case you do need to specify this flag if you want it to wait. Cannot be combined with
nowait
or
waituntilidle
.