我以静默模式运行安装程序(-q
选项)。
启动后,安装程序退出。 error.log
显示条目:
"The application is running. Please close instances and run this installer again".
但是,没有其他安装程序实例正在运行。
注意 - 安装程序在Windows本地系统帐户中启动。
答案 0 :(得分:0)
我遇到了一个完全相同的问题,即updater安装程序以无人值守(静默)模式运行并从Windows服务启动。我发现更新程序无法完成有两个原因:
使用参数-q -wait 20
调用无人参与模式安装程序(这些是使用install4j UI生成更新程序应用程序时的默认设置)。 -wait
参数使安装程序等待运行的应用程序在进入通常在交互式安装中显示欢迎屏幕的阶段之前关闭。它并不试图自己关闭它们。如果应用程序在20秒内没有消失,则安装程序会在此早期阶段使用error.log消息退出"应用程序正在运行。请关闭实例并再次运行此安装程序"。 (在交互模式下,用户将在此阶段显示一个屏幕,要求他们关闭正在运行的应用程序。)
(注意: -wait
似乎只检查是否存在应用程序进程(用户启动的应用程序,用户界面等)。正在运行的已安装服务不被视为阻止程序,可能是因为它们会在安装文件操作中自动停止。)
我之前在安装程序中添加了操作以在安装更新之前关闭应用程序进程,但-wait
参数不允许它进展那么远。我从" Set installer arguments"中删除了参数。更新程序应用程序中的操作允许安装程序超出欢迎阶段。
'检查运行流程'操作,使用“立即软关闭”的关闭策略,当从Windows服务启动安装程序时,无法关闭任何正在运行的用户启动的应用程序(在我的情况下为UI应用程序)。这反过来导致无人参与的更新由于锁定问题覆盖已安装的文件而失败。
然而,使用'立即终止的关闭策略' 已允许服务帐户成功终止正在运行的应用程序并允许安装完成。
我最终使用了一系列"停止服务","检查正在运行的进程(软关闭)" (当用户以交互模式运行安装程序时,它可以工作),然后"检查正在运行的进程(立即终止)"在安装部分的开头,涵盖所有基地。