通过Wix / MSI卸载时停止/删除本地系统服务



据我所理解

的答案
  • Wix 卸载/升级时停止服务:防止"重新启动弹出窗口"(文件正在使用的情况)
  • WiX:尽管能够将其作为本地系统安装和启动,但无法停止服务

如果服务作为 LocalSystem 启动,则在卸载软件包时停止和卸载服务是非常困难的。

有没有可能做到这一点?我无法想象如果不强制使用文件对话框或重新启动管理器弹出窗口,这是不可能的。

你提到的两个主题都不那么相关。停止服务通常不是问题,无论它是否是本地系统。实际上只有一个一般原因,即服务在被要求时不会停止:它们写得很差。它们只是代码,如果它们没有及时响应停止请求,那么就会出现问题。如果他们决定花 20 分钟关闭,举一个离谱的例子,你不能责怪卸载程序。如果服务位于这些托管进程之一中,则服务也可能无法正确停止,以便一些普通的可执行文件可以作为服务运行,我认为 java 类型的问题就是这种情况。

当服务存在文件使用中的问题时,如果它们不关闭,也会发生,但如果它们不再是服务但该过程不会消失(托管类型服务通常就是这种情况)。服务可以响应停止请求,Windows 将不再将其视为服务,但不需要进程消失 - 它可以继续运行、执行清理或其他操作,因此仍会导致使用中的文件检查。这也是 Visual Studio 安装项目(不使用标准 MSI 操作)中的安装程序类的常见问题,因为在那些使用安装程序类的安装程序中,没有任何东西可以关闭正在运行的服务。

如果您有特定问题,则应发布它,但是在卸载过程中始终停止服务,没有问题。

最新更新