Installation Inno Setup基于可执行调用的结果有条件重新启动

Installation Inno Setup基于可执行调用的结果有条件重新启动,installation,inno-setup,restart,Installation,Inno Setup,Restart,我的Inno安装脚本用于安装驱动程序。在步骤ssInstall中复制此文件后,它将运行myInstallDriver.exe 在某些情况下,我需要要求用户根据InstallDriver.exe返回的值重新启动 这意味着我不能将InstallDriver.exe放在[Run]部分,因为无法监视它的返回值 所以我把它放在函数CurStepChanged()中,如下所示: 过程CurStepChanged(CurStep:TSetupStep); 变量 TmpFileName,ExecStdout,m

我的Inno安装脚本用于安装驱动程序。在步骤
ssInstall
中复制此文件后,它将运行my
InstallDriver.exe

在某些情况下,我需要要求用户根据
InstallDriver.exe
返回的值重新启动

这意味着我不能将
InstallDriver.exe
放在
[Run]
部分,因为无法监视它的返回值

所以我把它放在函数
CurStepChanged()
中,如下所示:

过程CurStepChanged(CurStep:TSetupStep);
变量
TmpFileName,ExecStdout,msg:string;
结果代码:整数;
开始
如果(CurStep=ssPostInstall),则
开始
日志('CurStepChanged(ssPostInstall');
TmpFileName:=ExpandConstant('{app}')+'\InstallDriver.exe';
如果Exec(TmpFileName、'I'、''、SW_HIDE、ewwaitunFilterminated、ResultCode)则。。。。。。。
但是,在这个阶段,我找不到让脚本重新启动的方法

我曾想过使用函数
NeedRestart()
来监视驱动程序安装程序的输出,但在过程的前面调用了该函数。
NeedRestart()
中调用驱动程序安装程序有意义吗

NeedRestart
看起来不适合安装任何东西。但它会起作用,因为幸运的是它只被称为一次。不过,您可能希望以某种方式显示进度,因为在调用
NeedRestart
时,向导表单几乎为空


另一种方法是使用
InstallDriver.exe
或驱动程序二进制文件本身(以较晚安装的为准)

#定义InstallDriverName“InstallDriver.exe”
[档案]
资料来源:“driver.sys”;DestDir:“…”
资料来源:“{#InstallDriverName}”;DestDir:“{app}”;后安装:InstallDriver
[守则]
变量
NeedRestartFlag:布尔值;
常数
NeedRestartResultCode=1;
过程InstallDriver();
变量
InstallDriverPath:字符串;
结果代码:整数;
开始
日志(“安装驱动程序”);
InstallDriverPath:=ExpandConstant('{app}')+'\{{InstallDriverName}';
如果未执行(InstallDriverPath、'I'、''、SW_HIDE、EWWaitUnFilterminated、ResultCode),则
开始
日志('未能执行驱动程序安装');
结束
其他的
开始
日志(格式('驱动程序安装完成,代码为%d',[ResultCode]))
如果ResultCode=NeedRestartResultCode,则
开始
日志(“需要重新启动以完成驱动程序安装”);
NeedRestartFlag:=True;
结束;
结束;
结束;
函数NeedRestart():Boolean;
开始
如果需要重新启动标志,则
开始
日志(“需要重新启动”);
结果:=真;
结束
其他的
开始
日志(“不需要重新启动”);
结果:=假;
结束;
结束;

我不知道如何在AfterInstall中显示“重新启动完成”向导。我的意思是,您可以从
AfterInstall
中安装驱动程序,并记住结果,从
需要重新启动中引用它。看我编辑的答案。啊哈!现在我明白了。谢谢