【发布时间】: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\ <ServiceName>\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 停止 <ServiceName> 服务 - 开始 2017-05-10 23:47:39.148 命令:/S /C ""net" stop <ServiceName> > "C:\Windows\TEMP\is-OO761.tmp\~execwithresult.txt"2>&1" 2017-05-10 23:47:39.257 停止 <ServiceName> 服务 - 完成 2017-05-10 23:47:39.257 <Service Display Name> 服务正在停止。 <Service Display Name> 服务已成功停止。 2017-05-10 23:47:39.366 RestartManager 使用我们的文件之一找到了一个应用程序:<Service Display Name> 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 消息框(中止/重试/忽略): 安装程序无法自动关闭所有应用程序。建议您在继续之前关闭所有使用需要由安装程序更新的文件的应用程序。 单击重试以重试,单击忽略以继续,或单击中止以取消安装。有两个问题:
- 为什么在
/verysilent模式下显示消息框?根据this fix,它不应以静默模式显示。根据documentation,我确实看到了:/沉默,/非常沉默 指示安装程序静音或非常静音。当安装程序处于静默状态时,不会显示向导和背景窗口,但会显示安装进度窗口。当安装程序非常安静时,不会显示此安装进度窗口。其他一切正常,例如 在安装过程中显示错误消息,并且启动提示是(如果您没有使用 DisableStartupPrompt 或上面解释的“/SP-”命令行选项禁用它)。
- 为什么 RestartManager 似乎仍然认为 exe 已停止运行?有没有其他人看到过类似的问题,有没有推荐的方法? (比如说,在
net stop命令之后添加一个 5 秒的暂停)
【问题讨论】:
标签: inno-setup