如何使用自定义卸载程序卸载Windows服务

时间:2011-04-16 12:38:26

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

关于卸载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);
}

自定义操作窗格如下所示: enter image description here

突出显示的部分是服务。

我还浏览了this answer,其中将自定义操作条件设置为NOT PREVIOUSVERSIONSINSTALLED

enter image description here

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

提前致谢:)

2 个答案:

答案 0 :(得分:5)

编辑Windows服务时,请尝试以下步骤:

  1. 右键单击visual studio中的SetupProject,然后从视图中选择自定义操作

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

  3. 完成后,您会在项目窗口中找到选择项目。在窗口中,从查看下拉列表中选择应用程序文件夹。这将列出来自Windows服务的主要输出,选择此项并单击“确定”。

  4. 保存并构建安装项目。

  5. 希望这能解决你的问题......

答案 1 :(得分:0)

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

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