我们如何在 C# 自定义操作中提示安装后重新启动计算机?
我们使用 VS 2005 的安装项目进行安装,并且需要以编程方式决定提示重新启动(因此不会在每次安装时发生,只是在某些安装上发生)。
更新:我们首先正在寻找已经内置于 MSI 自定义操作系统中的东西。如果不存在,我们可以自行重新启动电脑,但希望避免这种情况。
更新:我们看到在 Orca 中编辑 Msi 时可以在哪里设置 REBOOT=Force,您可以在运行时通过 C# 自定义操作修改这些表吗?我们可以将其设置为每次都重新启动,但这可能会使我们的设置变得烦人(只需要在极少数情况下重新启动)。
更新:我们尝试设置:
savedState["REBOOT"] = "Force";
从我们的自定义操作的 Install() 方法中,但运气不佳。 IDictionary、savedState 似乎并没有真正做任何事情。
还尝试过:
Context.Parameters["REBOOT"] = "Force";
但我认为这个集合只是传递给自定义操作的命令行参数。
更新:有没有办法用 Orca 编辑我们的 MSI 来使这个技巧发挥作用?也许在某些文件存在的情况下安排重新启动?我们尚未找到如何从 C# 自定义操作设置 MSI 属性。
更新:我们尝试挂钩 AppDomain.ProcessExit 和 AppDomain.DomainUnload 并启动一个新线程并调用 Process.GetCurrentProcess().WaitForExit() ,但这些事件都不会从 C# 自定义操作中触发...
您需要添加或调用 MSI 自定义操作 ScheduleReboothttp://msdn.microsoft.com/en-us/library/aa371527(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa371527(VS.85).aspx在您的 InstallExecuteSequence 中,.您可以使用 MSI 函数 MsiDoAction 来完成此操作,http://msdn.microsoft.com/en-us/library/aa370090(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa370090(VS.85).aspx在自定义操作内。请注意,安排此操作的自定义操作必须是立即自定义操作,而不是延迟的自定义操作。这意味着您可能需要在 InstallFinalize 之后安排它。您还可以将其添加到 InstallExecuteSequence 中,并在自定义操作设置的公共属性上设置一个条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)