如何从 [Code] 部分以 /VERYSILENT 模式中止 Inno Setup 安装?
How to abort Inno Setup installation in /VERYSILENT mode from [Code] section?
我正在尝试从 [Code]
部分(在 AfterInstall
处理程序中)启动某个 Windows 服务。当它无法启动时,我想回滚安装。
通常当设置从 UI 变为 运行 时,WizardForm.Close()
就可以正常工作。但是当使用 /verysilent
命令行参数执行安装程序时,WizardForm.Close
似乎被忽略并且安装继续进行。
我也尝试了 Abort()
,这是 Stack Overflow 上的其他文章建议的,但它的工作方式与任何其他 suppressiblemsgbox 一样,不会破坏安装。
有什么方法可以在 /verysilent
模式下有条件地中止安装吗?
无法以编程方式触发回滚。
您所能做的就是使用ExitProcess
WinAPI function强制中止安装。
procedure ExitProcess(exitCode:integer);
external 'ExitProcess@kernel32.dll stdcall';
致谢:Exit from Inno Setup Installation from [code].
更简洁的解决方案是在 CurStepChanged(ssInstall)
. And use the Abort
function to interrupt the installation, if something goes wrong. In this context the Abort
works. See the function documentation.
开始时以编程方式安装文件并启动 Windows 服务
WizardForm.Show(); //强制显示即使非常安静
我正在尝试从 [Code]
部分(在 AfterInstall
处理程序中)启动某个 Windows 服务。当它无法启动时,我想回滚安装。
通常当设置从 UI 变为 运行 时,WizardForm.Close()
就可以正常工作。但是当使用 /verysilent
命令行参数执行安装程序时,WizardForm.Close
似乎被忽略并且安装继续进行。
我也尝试了 Abort()
,这是 Stack Overflow 上的其他文章建议的,但它的工作方式与任何其他 suppressiblemsgbox 一样,不会破坏安装。
有什么方法可以在 /verysilent
模式下有条件地中止安装吗?
无法以编程方式触发回滚。
您所能做的就是使用ExitProcess
WinAPI function强制中止安装。
procedure ExitProcess(exitCode:integer);
external 'ExitProcess@kernel32.dll stdcall';
致谢:Exit from Inno Setup Installation from [code].
更简洁的解决方案是在 CurStepChanged(ssInstall)
. And use the Abort
function to interrupt the installation, if something goes wrong. In this context the Abort
works. See the function documentation.
WizardForm.Show(); //强制显示即使非常安静