【问题标题】:In Inno Setup, how to rollback a "verysilent" installation?在 Inno Setup 中,如何回滚“非常安静”的安装?
【发布时间】:2015-07-30 07:19:40
【问题描述】:

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

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

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

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

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

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

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

请帮助我解决上述问题。

抱歉,描述性太强了,但我试图解释我的问题和疑问!

编辑

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

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    您对不使用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 函数。

    【讨论】:

    • 我没有检查 InitializeSetup()。我正在从 [Files] 部分的 AfterInstall 指令调用的函数中进行检查。我有一个限制,我无法从 InitializeSetup() 执行此操作,因为在 [Files] 部分完成之前不会提取打包的 DLL。我还需要在 Windows PE(预安装环境)中运行安装程序,因此我无法使用 ExtractTemporaryFile() 函数强制提取 dll,因为 {tmp} 路径在该环境中无效。这让我只有一个选择是在 [Files] 部分完成后进行检查。请指教!
    • 我在问题中添加了约束。感谢您指出!
    • 感谢您的回复,但是单独分发DLL是没有问题的。对于那个很抱歉。请提供替代解决方案。
    • 您是否尝试过使用ExtractTemporaryFile 解决方案?它应该工作。查看我的编辑。
    • 嗨,马丁,感谢您的编辑。实际上,我曾尝试在“Windows PE”环境中使用从 InitializeSetup 调用的 ExtractTemporaryFile,但这会导致安装失败并返回代码 1(安装失败初始化)。因此,我正在寻找替代解决方案。
    猜你喜欢
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多