是否有任何好的文章可以详细解释 RestartManager 以及如何让应用程序感知并处理特殊消息以便正确关闭?
我有两个应用程序是通过 Visual Studio 安装项目中的 MSI 安装程序构建安装的。 其中一个应用程序是 WPF 应用程序,另一个是在 Kestrel Web 服务器中运行的 Web API 应用程序。
这两个应用程序在后台运行
当我们有另一个版本的 MSI 安装程序时,PackageCode 和 ProductCode 会相应更新为 Version 编号,当您尝试安装新文件时,会显示 FileInUse 窗口,并且 MSI 安装程序可以不要关闭正在运行的应用程序。
我发现了 RestartManager 和应用程序指南 -> https://learn.microsoft.com/en-us/windows/win32/rstmgr/guidelines-for-applications
但不确定如何使我的应用程序了解 RestartManager 并在更新或卸载可用时关闭。
我的应用程序安装在 Windows 10 或更高版本中。
我尝试在 WPF 应用程序中处理 WM_ENDSESSION 消息,但未能正常工作...
RegisterApplicationRestart
(WM_QUERYENDSESSION
是您致电的最后机会,但您可以尽早致电)。
确切的命令行应该是什么取决于您,它可能像
/restart
一样简单,或者如果您需要将状态信息存储在特定文件中,您可能需要类似/restore "c:\myfolder\appstate.ini"
之类的东西。当重启管理器启动您的应用程序时,它将使用您注册的命令行参数启动。