如何从[Code]部分中止/ VerYSILENT模式下的Inno Setup安装?

时间:2016-12-21 10:31:50

标签: inno-setup silent-installer

我尝试从[Code]部分(在AfterInstall处理程序中)启动某个Windows服务。当它无法启动时,我想回滚安装。

通常,当从UI运行安装程序时,WizardForm.Close()可以正常完成工作。但是当使用/verysilent命令行参数执行安装程序时,似乎忽略WizardForm.Close并继续安装。 我也尝试了{Stack = 1}中其他文章所建议的Abort(),但它的工作原理与其他任何一个suppressiblemsgbox一样,并且不会破坏安装。

有没有办法在/verysilent模式下有条件地中止安装?

2 个答案:

答案 0 :(得分:0)

无法以编程方式触发回滚。

您所能做的就是使用ExitProcess WinAPI function强制中止安装。

procedure ExitProcess(exitCode:integer);
  external 'ExitProcess@kernel32.dll stdcall';

致谢:https://stackoverflow.com/a/7022353/850848

更清洁的解决方案是安装文件并在CurStepChanged(ssInstall)开头以编程方式启动Windows服务。如果出现问题,请使用Abort function来中断安装。在这种情况下,Abort有效。请参阅function documentation

答案 1 :(得分:0)

WizardForm.Show(); //强制显示甚至使用verysilent