加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Wix安装程序问题:为什么RestartManager将服务标记为RMCritical

发布时间:2020-12-14 05:30:53 所属栏目:Windows 来源:网络整理
导读:我正在尝试阻止我们的wix安装程序在卸载时提示用户重新启动.我们的服务设置为在卸载时卸载和删除.对我们来说不幸的是,RestartManager提示用户在InstallValidate操作期间需要重新启动.此操作发生在StopServices和DeleteServices操作之前. 检查日志,似乎Restar
我正在尝试阻止我们的wix安装程序在卸载时提示用户重新启动.我们的服务设置为在卸载时卸载和删除.对我们来说不幸的是,RestartManager提示用户在InstallValidate操作期间需要重新启动.此操作发生在StopServices和DeleteServices操作之前.

检查日志,似乎RestartManager认为我们的服务是一个关键过程:

“检测到ID为1234的应用程序,友好名称’abc’,服务短名称’xyz’,类型为RmCritical,状态1保存正在使用的文件[s].”

这些服务在本地系统帐户下安装并运行.我不确定,但我认为如果RestartManager返回RmService而不是RmCritical,那么它就不会提示重启.

任何帮助非常感谢.

编辑:
MSDN声明对于RMCritical:
需要重新启动系统才能完成安装,因为无法关闭进程.由于以下原因,无法关闭该过程.该过程可能是一个关键过程.当前用户可能没有权限关闭该进程.该进程可能属于启动Restart Manager的主安装程序.

用户确实有权关闭服务,这些服务与msiexec无关,所以我只能假设我们的服务被认为是一个关键过程….但为什么呢?

解决方法

您可以通过设置MSI属性MSIRESTARTMANAGERCONTROL =来禁止窗口的RestartManager
“禁用”(请参阅??此处的文档 – http://msdn.microsoft.com/en-us/library/windows/desktop/aa370377(v=vs.85).aspx).这种方法本身唯一的问题是,它们不会提示用户使用需要重启的对话框,而是会看到正在使用的文件对话框(并要求关闭可能正在使用这些文件/服务的任何应用程序).在InstallExecute序列的InstallValidate标准操作期间显示此对话框.

如果您想要熟悉这些对话框中的任何一个,您可以在InstallValidate之前安排自定义操作,以便在RestartManager有机会检查系统之前手动关闭所有正在运行的服务.这不遵循标准的MSI实践,因为通常您会标记一个自定义操作,将系统修改为“延迟”操作,但MSI不允许在InstallValidate之前运行任何延迟操作.因此,您必须将操作标记为“立即”,但在代码中您将继续并通过关闭服务来修改系统.这里的缺点是没有立即回滚操作,所以如果卸载/升级失败并且回滚,则停止的服务将保持停止状态.好处是用户在卸载/升级期间永远不必看到任何其他对话框.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读