【问题标题】:Stop/Delete LocalSystem Service on uninstall via Wix/MSI通过 Wix/MSI 卸载时停止/删除 LocalSystem 服务
【发布时间】:2016-04-27 12:22:09
【问题描述】:

据我了解

如果服务是作为 LocalSystem 启动的,那么在卸载包时停止和卸载服务是相当麻烦的。

有没有可能做到这一点?如果不强制使用 File-In-Use 对话框或 RestartManager-Popup,我无法想象这是不可能的。

【问题讨论】:

  • 通常这根本不应该是一个问题,帐户(本地系统或其他)并不重要(如果服务在被告知这样做时实际上停止了)。安装程序 (MSI) 在系统帐户下执行,因此它具有足够的权限来停止和卸载任何服务。您是否面临一些问题?

标签: service wix windows-installer


【解决方案1】:

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

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

如果您有特定的问题,那么您应该发布它,但是在卸载期间停止服务一直都在完成,没有任何问题。

【讨论】:

  • 我在这里发布了一个更具体的问题:stackoverflow.com/questions/36887205/… 我的问题是针对权限问题,如果服务作为 LocalSystem 启动。但是,您能否更准确地说一下“写得不好”的服务是什么意思?我的服务是用 C++ 编写的,具有注册的 ServiceControlHandler。它可以通过“sc”命令行工具或服务对话框正常启动、停止。服务会在几秒钟内退出,服务的所有子进程也会终止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多