【问题标题】:Inno Setup installer has prompts in verysilent modeInno Setup 安装程序在非常静音模式下有提示
【发布时间】:2017-05-15 06:34:35
【问题描述】:

我正在使用/verysilent /suppressmessagebox /norestart 运行安装程序以升级我的应用程序(Windows 服务)。在PrepareToInstall() 中,我有代码可以使用net stop <ServiceName> 检查和停止我的服务已经运行的实例。我确实记录了net stop 生成的输出,它表明服务确实已停止。但是,有时安装程序会提示:

消息框(中止/重试/忽略):

安装程序无法自动关闭所有应用程序。建议您在继续之前关闭所有使用需要由安装程序更新的文件的应用程序。

单击重试以重试,单击忽略以继续,或单击中止以取消安装。

日志显示:

2017-05-10 23:47:38.851 日志已打开。 (时区:UTC-07:00) 2017-05-10 23:47:38.851 安装版本:Inno 安装版本 5.5.9 (u) 2017-05-10 23:47:38.851 原始安装程序 EXE:C:\Windows\TEMP\installer.exe 2017-05-10 23:47:38.851 设置命令行:/SL5="$FD006E,3807712,131584,C:\Windows\TEMP\installer.exe" /verysilent /suppressmessagebox /norestart /log=C:\ProgramData\ &ltServiceName&gt\installer_2026493391.txt 2017-05-10 23:47:38.851 Windows 版本:6.1.7601 SP1(NT 平台:是) 2017-05-10 23:47:38.851 64 位 Windows:是 2017-05-10 23:47:38.851 处理器架构:x64 2017-05-10 23:47:38.851 用户权限:管理 2017-05-10 23:47:38.867 64 位安装模式:是 2017-05-10 23:47:38.867 创建临时目录:C:\Windows\TEMP\is-OO761.tmp ...... .....一些与手头问题无关的日志 ...... 2017-05-10 23:47:39.148 停止 &ltServiceName&gt 服务 - 开始 2017-05-10 23:47:39.148 命令:/S /C ""net" stop &ltServiceName&gt &gt "C:\Windows\TEMP\is-OO761.tmp\~execwithresult.txt"2&gt&1" 2017-05-10 23:47:39.257 停止 &ltServiceName&gt 服务 - 完成 2017-05-10 23:47:39.257 &ltService Display Name&gt 服务正在停止。 &ltService Display Name&gt 服务已成功停止。 2017-05-10 23:47:39.366 RestartManager 使用我们的文件之一找到了一个应用程序:&ltService Display Name&gt 2017-05-10 23:47:39.366 可以使用 RestartManager 来避免重启吗?是 (0) 2017-05-10 23:47:39.366 开始安装过程。 2017-05-10 23:47:39.366 使用我们的文件关闭应用程序。 2017-05-10 23:47:39.382 某些应用程序无法关闭。 2017-05-10 23:47:39.382 消息框(中止/重试/忽略): 安装程序无法自动关闭所有应用程序。建议您在继续之前关闭所有使用需要由安装程序更新的文件的应用程序。 单击重试以重试,单击忽略以继续,或单击中止以取消安装。

有两个问题:

  1. 为什么在/verysilent模式下显示消息框?根据this fix,它不应以静默模式显示。根据documentation,我确实看到了:

    /沉默,/非常沉默 指示安装程序静音或非常静音。当安装程序处于静默状态时,不会显示向导和背景窗口,但会显示安装进度窗口。当安装程序非常安静时,不会显示此安装进度窗口。其他一切正常,例如 在安装过程中显示错误消息,并且启动提示是(如果您没有使用 DisableStartupPrompt 或上面解释的“/SP-”命令行选项禁用它)。

  2. 为什么 RestartManager 似乎仍然认为 exe 已停止运行?有没有其他人看到过类似的问题,有没有推荐的方法? (比如说,在net stop 命令之后添加一个 5 秒的暂停)

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    这是/SUPPRESSMSGBOXES,而不是/SUPPRESSMESSAGEBOX


    它可以是防病毒软件或类似软件,它会阻止文件。如果您尝试在net stop 之后立即移动/删除二进制文件,是否成功?

    【讨论】:

    • 感谢您指出拼写错误。从文档中,似乎设置将被中止 - 这是正确的吗?没有安装防病毒软件。另外,这种情况会间歇性地发生。因此,RestartManager 使用net stop 检测已经停止的服务的效果之间似乎存在竞争我应该移动代码以在其他地方停止服务(它被称为PrepareToInstall() 的一部分?我会尝试在网络停止后立即移动/删除二进制文件,看看它是否一直有效
    • 是的,设置将被中止。将代码移到别处无济于事。 PrepareToInstall 是它的好去处。
    • 我还看到日志显示RestartManager found an application using one of our files: 的情况,即没有应用程序名称
    • 我再次遇到了同样的问题 /SUPPRESSMSGBOXES 。由于该问题偶尔发生并且通常由团队中的其他人观察到,因此我无法测试手动移动二进制文件是否有效。还有其他建议吗?似乎有 2 个问题 - 1) InnoSetup 提示即使有 /verysilent /suppressmessageboxes /norestart 标志 2) RestartManager 检测应用程序即使在 PrepareToInstall() 停止后仍在运行
    • 如果您对第一个问题(即 InnoSetup 提示即使使用上述标志)有任何其他建议,请发表评论
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多