我尝试从[Code]
部分(在AfterInstall
处理程序中)启动某个Windows服务。当它无法启动时,我想回滚安装。
通常,当从UI运行安装程序时,WizardForm.Close()
可以正常完成工作。但是当使用/verysilent
命令行参数执行安装程序时,似乎忽略WizardForm.Close
并继续安装。
我也尝试了{Stack = 1}中其他文章所建议的Abort()
,但它的工作原理与其他任何一个suppressiblemsgbox一样,并且不会破坏安装。
有没有办法在/verysilent
模式下有条件地中止安装?
答案 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