在Inno Setup中,如何回滚“verysilent”安装?

时间:2015-07-30 07:19:41

标签: inno-setup

我使用Inno Setup创建了一个安装程序。安装程序使用打包的DLL来检查目标计算机上特定设备的可用性。如果找到设备,则允许安装完成,否则回滚安装(使用脚本中的以下行完成回滚):

if <DeviceNotFound> then
begin
  CancelWithoutPrompt := true;
  WizardForm.Close;
end;

如果使用/silent cmd行参数运行设置,我已检查上述检查和回滚逻辑是否正常工作。但是,当我使用/silent param时,安装程​​序会显示安装进度向导表单。

另外,我发现如果我在/verysilent模式下运行上述设置,那么“DeviceNotFound”检查逻辑工作正常,但回滚逻辑不起作用,好像回滚逻辑没有得到执行完全。安装程序成功安装,而不是执行回滚。

现在,我要求以静默方式运行安装程序,以便不显示任何窗口,但必须根据设备检查进行安装或回滚。因此,我有以下查询:

  1. 我可以在/verysilent模式下运行安卓程序吗?如果是这样,请告知如何实现。我可以检测到verysilent安装模式,如下所示:
    How to detect whether the setup runs in very silent mode?

  2. 或者,我可以在/silent模式下运行时隐藏/最小化安装进度窗口吗?如果是,请告知如何实现。

  3. 请帮我解决上述问题。

    很抱歉这么描述,但我试图解释我的问题和疑问!

    修改

    我没有在InitializeSetup()进行上述检查。我正在从AfterInstall部分的[Files]指令调用的函数中进行检查。我有一个限制,我无法从InitializeSetup()执行此操作,因为在[Files]部分完成之前不会提取打包的DLL。我还需要在Windows PE(预安装环境)中运行安装程序,因此我无法使用ExtractTemporaryFile()函数强制解压缩DLL,因为{tmp}路径在该环境中无效。这让我只有一个选项是在[Files]部分完成后进行检查。请指教!

1 个答案:

答案 0 :(得分:2)

您对不使用ExtractTemporaryFile的约束没有意义。

Inno Setup安装程序始终为安装创建一个临时文件夹。

  

2015-07-31 09:02:07.458创建临时目录:C:\ Users \ martin \ AppData \ Local \ Temp \ is-1CN29.tmp

如果无法创建文件夹,则安装失败。

Inno安装程序尝试在以下位置创建临时文件夹:

  • %TMP%
  • %TEMP%
  • %USERPROFILE%
  • Windows安装文件夹(C:\Windows

即使在“Windows PE”中,至少最后一条路径也必须存在。

所以我不认为,有任何事情妨碍您使用ExtractTemporaryFile功能。