卸载Windows服务失败有时会强制重新启动机器

问题描述:

我无法卸载和重新安装Windows服务。有时当我使用服务的MSI软件包进行卸载时(甚至在停止服务并关闭服务管理控制台之后),服务没有被卸载,然后如果我运行“installUtil”,那么该服务会被禁用,但不会被删除从控制台。那么如果我尝试“sc删除service.exe”,我收到一个错误“服务被标记为删除”。一旦发生这种错误,我唯一的选择就是重新启动工作站或服务器,无论它安装在哪里。有时它工作正常,有时它不能正确卸载。我怎样才能确保卸载始终工作?为什么卸载非常痛苦?在开发过程中,我需要多次重新安装该服务才能安装新版本的服务,并且无需重新启动计算机即可轻松重新安装该服务。
在此先感谢。卸载Windows服务失败有时会强制重新启动机器

+1

您是否尝试使用控制面板而不是msi或installutil卸载?我总是以这种方式删除我的服务,但尚未遇到此问题。 – jlafay 2010-11-19 18:36:08

+1

我想在一个线程中,当你得到OnStop()请求时,你并不总是终止。 – 2010-11-19 20:00:55

当我在测试过程中不断安装,重新构建和卸载我的服务时,遇到了类似的问题。我认为这与在尝试卸载服务之前重建MSI有关。总是从“添加/删除程序”对话框中卸载应该避免这种情况,但这有点麻烦。我最终修改了我的Wix安装项目,做了三件事:

  1. MSI设置为启动/停止服务。一个例子是here
  2. 如果已安装当前版本或新版本,请执行自定义操作以停止安装。基于this的代码。
  3. 在桌面上创建一个卸载快捷方式。一个例子是here

也许你的服务正在关闭一些问题,因为它正在遭受未处理的错误。如果有日志,请尝试查看是否有任何内容抛出。否则,我会添加一个日志机制(例如log4net)。如果添加日志记录机制不是一个选项,chezy525的解决方案似乎是一种方法。