Wix安装程序问题:为什么RestartManager将服务标记为RMCritical
我正在尝试阻止我们的wix安装程序在卸载时提示用户重新启动.我们的服务设置为在卸载时卸载和删除.对我们来说不幸的是,RestartManager提示用户在InstallValidate操作期间需要重新启动.此操作发生在StopServices和DeleteServices操作之前.
检查日志,似乎RestartManager认为我们的服务是一个关键过程: “检测到ID为1234的应用程序,友好名称’abc’,服务短名称’xyz’,类型为RmCritical,状态1保存正在使用的文件[s].” 这些服务在本地系统帐户下安装并运行.我不确定,但我认为如果RestartManager返回RmService而不是RmCritical,那么它就不会提示重启. 任何帮助非常感谢. 编辑: 用户确实有权关闭服务,这些服务与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之前运行任何延迟操作.因此,您必须将操作标记为“立即”,但在代码中您将继续并通过关闭服务来修改系统.这里的缺点是没有立即回滚操作,所以如果卸载/升级失败并且回滚,则停止的服务将保持停止状态.好处是用户在卸载/升级期间永远不必看到任何其他对话框. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 有没有办法使用WScript.Shell启动使用VBScript最
- windows-runtime – 在Windows Phone 8.1 Universal应用程序
- ms-access – 在多用户环境中编程Microsoft Access后端数据
- windows-server-2003 – 确定上次登录终端服务器的时间戳(2
- windows-server-2008 – 强制与特定服务器的RDP连接
- Putty动态标题($PWD)
- windows-8 – 有没有办法检测笔是否接近WinRT中的屏幕
- windows-7 – Windows 7,开发人员的良好平台?
- winapi – 如何使用P / Invoke在PowerShell 1.0中调用Win32
- 3dmax2016卸载/安装失败/如何彻底卸载清除干净3dmax2016注册
- 用于Microsoft Office文件的Android API或库[已关
- Windows 安装 Anaconda3+PyCharm
- 可伸缩文件存储选项(Windows Server)
- windows-xp – Windows XP中的任务计划程序是否足
- windows-phone-8 – C#和C/C++X对象如何相关?
- Windows安装Linux子系统--安装GUI界面
- .net – 分析进程中加载??的本机DLL和程序集的内
- 在Windows上,Ctrl C无法停止由Maven启动Java进程
- dll – regsvr32不会在注册表中创建任何条目
- Vanilla Windows与Windows Server