【发布时间】:2015-07-30 07:19:40
【问题描述】:
我使用 Inno Setup 创建了一个安装程序。安装程序使用打包的 DLL 来检查目标机器上特定设备的可用性。如果找到设备,则允许安装完成,否则回滚安装(回滚使用脚本中的以下行完成):
if <DeviceNotFound> then
begin
CancelWithoutPrompt := true;
WizardForm.Close;
end;
如果安装程序使用/silent cmd 行参数运行,我已检查上述检查和回滚逻辑是否正常工作。但是,当我使用/silent 参数时,安装程序会显示安装进度向导表单。
另外,我发现如果我在/verysilent 模式下运行上述设置,则“DeviceNotFound”检查逻辑工作正常,但回滚逻辑不起作用,似乎回滚逻辑没有在全部。安装程序不会执行回滚,而是成功安装。
现在,我需要静默运行安装程序,以便不显示任何窗口,但必须根据设备检查进行安装或回滚。因此,我有以下疑问:
当安装程序在
/verysilent模式下运行时,我可以回滚安装程序吗?如果是这样,请告知如何实现。我可以检测到非常静默的安装模式,如问题所示:
How to detect whether the setup runs in very silent mode?或者,当安装进度窗口在
/silent模式下运行时,我可以隐藏/最小化安装进度窗口吗?如果是这样,请告知如何实现。
请帮助我解决上述问题。
抱歉,描述性太强了,但我试图解释我的问题和疑问!
编辑
我没有在InitializeSetup() 中进行上述检查。我正在从[Files] 部分的AfterInstall 指令调用的函数中进行检查。我有一个限制,我无法从 InitializeSetup() 执行此操作,因为在 [Files] 部分完成之前不会提取打包的 DLL。我还需要在 Windows PE(预安装环境)中运行安装程序,因此我无法使用 ExtractTemporaryFile() 函数强制提取 DLL,因为 {tmp} 路径在该环境中无效。这让我只有一个选择是在[Files] 部分完成后检查。请指教!
【问题讨论】:
标签: inno-setup