【问题标题】:How to uninstall Windows service using Custom Uninstaller如何使用自定义卸载程序卸载 Windows 服务
【发布时间】:2011-08-06 21:22:01
【问题描述】:

我们有很多关于卸载 Windows 服务的 stackoverflow 问题。
在尝试了所有这些之后,我仍然无法在新版本安装时卸载 Windows 服务。

我使用安装和部署项目来安装/卸载我的项目,该项目具有 Windows 服务和其他一些项目。

在安装较新版本的过程中,所有其他项目都成功重新安装,但windows服务项目无法重新安装并显示:

错误 1001:指定的服务已经存在。

我参考了this link 并尝试将代码添加到我的安装自定义操作以停止服务。如果我正确理解了此链接中的答案,我已将停止服务的代码放入服务的 projectInstaller.cs 文件中:

public override void Install(IDictionary stateSaver)
{ 
      ServiceController sc = new ServiceController("SareeManagerNotifications");
      if (sc.Status == ServiceControllerStatus.Running)
          sc.Stop();
     base.Install(stateSaver);
}

自定义操作窗格如下所示:

突出显示的部分是服务。

我还经历了this answer,它说将自定义操作条件设置为
NOT PREVIOUSVERSIONSINSTALLED。

这对我不起作用。我哪里错了?

提前致谢:)

【问题讨论】:

  • 看起来您正在停止服务,但实际上并未销毁它。该错误表明该服务已经存在,因此您有两个选择。要么您的代码接近关闭服务然后重新安装它,或者如果该服务存在并且正在运行,只需停止它,替换您的文件,然后再次启动该服务。
  • @Stephen Connolly:请您指导我如何完全取消服务。我试图在互联网上搜索它,但我想我可能无法输入正确的关键词来找到它。谢谢

标签: c# .net visual-studio windows-services installation


【解决方案1】:

在编辑 windows 服务时尝试以下步骤:

  1. 在 Visual Studio 中右键单击您的 SetupProject,然后从视图中选择自定义操作。

  2. 您会发现 4 个自定义操作安装、提交、回滚和卸载。依次右键单击每个操作并添加自定义操作

  3. 这样做之后,您会发现一个在项目中选择项目窗口。在窗口中,从 look in 下拉菜单中选择 Application 文件夹。这将列出 windows 服务的主要输出,选择此项并单击确定。

  4. 保存并构建设置项目。

希望这能解决您的问题....

【讨论】:

  • @Harun:我已经尝试过了。但是当我将 Windows 服务单独作为一个项目时,它就可以工作。但如果我有 2 个或更多项目包含此服务,则此方法会失败。
  • @Niraj,jkamdar 的主要输出,TodoApp 的主要输出和 B'dayReminder 的主要输出。为什么有三个主要输出?我认为一个设置项目只能使用一个主要输出。确保您正在使用哪个 Windows 服务的主要输出,并从每个自定义操作中删除其他输出并尝试。
  • @Harun:是的,有三个项目和三个不同的应用程序启动点。他们都有自己的自定义安装程序和安装,因此有 3 个主要输出
  • @Niraj,据我了解,您正在为三个 Windows 服务项目使用单个安装项目。尝试为每个 Windows 服务项目创建单独的设置项目。
  • @Harun:是的,我这样做了,其中两个项目是 Windows 窗体应用程序,第三个是服务。如果我创建单独的项目,它们就会起作用。但是他们在一起的时候不?
【解决方案2】:

通常这是通过service control operations 完成的。基本上,您需要为卸载设置停止和删除标志。

另一种方法是使用ServiceInstaller.Uninstall 删除服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 2011-10-25
    • 1970-01-01
    • 2010-10-21
    • 2012-02-12
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多