Inno Setup 的Shellexec的功能类似乎Windows API 的ShellExecute函数,执行某种操作,可以是开启一个进程,可以打开一个浏览器等等。
不过,Inno Setup 的Shellexec有一个优点,这个优点体现在第六个参数上。
首先看shellexec:
function ShellExec(
const Verb,
Filename,
Params,
WorkingDir: String;
const ShowCmd: Integer;
const Wait: TExecWait;
var ErrorCode: Integer): Boolean;
第一个参数表示执行的动作,一般开启一个进程可以使用'open',第二个参数就是表示进程名,包含路径,第三个参数表示命令行参数,第四个参数是工作路径,第五个参数表示是否显示,第七个参数是一个错误码。
第六个参数表示如下:
TExecWait = (ewNoWait, ewWaitUntilTerminated, ewWaitUntilIdle);
如果使用ewNoWait,那么ShellExec开启进程以后立即返回。
如果使用ewWaitUntilTerminated,则ShellExec开启进程以后阻塞,知道被开启的进程终止以后才返回。
如果使用ewWaitUntilIdle,则ShellExec在CPU空闲的时候返回。
其中ewWaitUntilTerminated很有用,这样可以在一个安装程序中随意的控制执行其他的操作。