安装 Windows 服务失败:服务已存在。

4

我正在尝试使用C#重新安装一个服务。 第一次成功了。我使用installutil来处理安装,并且服务出现在服务列表中,我可以启动它。 然后我更新了代码并卸载了服务。在弄清楚我必须关闭服务窗口后,服务似乎已经消失了(即已成功卸载)。 然而,当我尝试再次安装服务时,我收到了以下消息:

System.ComponentModel.Win32Exception: The specified service already exists

我觉得很奇怪,因为在服务窗口中找不到它。最后,我删除了一个关于我的服务的注册表键,认为已经找到了问题所在,但不幸的是这并没有解决任何问题。

另外,再次卸载并不能解决问题,因为这会导致矛盾的消息:

System.ComponentModel.Win32Exception: The specified service does not exist as an installed service

我应该相信什么?这个服务是否存在?我感觉自己像一个物理学家,试图弄清楚猫是死是活。希望有人能够知道一些信息来帮助解决这个问题。

6个回答

7

一篇相关的SO回答最终指引我找对了方向(为什么我在Google或SO自己的搜索中没有找到那个我不知道)。 无论如何,显然Visual Studio生成的Designer.cs也创建了一个进程和服务安装程序。这当然会安装与我手动创建的安装程序同名的服务。 删除我自己的安装程序解决了问题。


如果您的问题得到了解决,请接受您自己的答案(即解决方案)。 - Bernard
1
Bernard,我会做到,但是要等两天才行。 - Pieter
这里有完美的解决方案: https://dev59.com/zF7Va4cB1Zd3GeqPIlGM - techExplorer

7

实际问题是您在代码中多次添加了serviceProcessInstaller和serviceInstaller对象..

它只应该被添加一次。

打开projectinstaller的designer.cs文件,您会发现它已经被添加了...


这是正确的,除了您需要打开ProjectInstaller文件,您可以轻松地在设计模式下检查和编辑它。项目安装程序是通过在服务设计视图中使用AddInstaller选项创建的。 - Radu M.

2

我也遇到了同样的错误,为了解决这个问题,我所做的是:

  • 从解决方案资源管理器中打开ProjectInstaller.cs
  • 通过右键单击进入视图设计器模式,如果有代码视图,则进入

你会看到除了defaults 2之外的一个新安装程序,即serviceprocessInstaller1ServiceInstaller1

只需删除自动生成的那个安装程序。现在构建和安装,它将工作。


2

检查服务安装程序中的服务名称属性。


0

如果在设计器中已经存在相同的行,则需要删除“Me.Installers.AddRange(New System.Configuration.Install.Installer() {Me.ServiceInstaller1, Me.ServiceProcessInstaller1})”行,然后它将被安装。

ServiceProcessInstaller1是我的项目名称。


0

我已经尝试了上面提到的所有解决方案。但是我的服务在注册表中安装了一些不同的名称。所以请尝试删除那个注册表。

在注册表中打开下面的链接

Hkey_Local_Macine>System>CurrentControlSet>Service>

但是我在这个路径下没有找到我的服务。所以我试着在注册表中找到它。只需按Ctrl + F并输入您的服务名称或一些猜测的名称,您将得到确切的位置。

只需将其删除即可。它会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接