4

我正在尝试重新安装我使用 C# 编写的服务。这是第一次奏效。我使用 installutil 来处理安装,该服务出现在服务列表中,我可以启动它。然后我对代码进行了一些更新并卸载了该服务。在弄清楚我必须关闭服务窗口后,服务似乎消失了(即成功卸载)。但是,在尝试再次安装该服务时,我收到消息说:

System.ComponentModel.Win32Exception: The specified service already exists

这看起来很奇怪,因为我在服务窗口中看不到它。我终于认为我在删除有关我的服务的注册表项后发现了问题,但不幸的是,这并没有解决任何问题。

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

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

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

4

6 回答 6

7

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

于 2011-09-27T15:18:47.813 回答
6

实际问题是您在代码中多次添加了 serviceProcessInstaller 和 serviceInstaller 的对象..它应该只添加一次..

打开 projectinstaller 的 Designer.cs 文件,您会看到它已经添加到那里...

于 2012-03-06T12:06:56.560 回答
2

我也遇到了同样的错误,所以要解决,我所做的是:

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

除了默认的 2之外,您还会看到一个新的安装程序,即serviceprocessInstaller1ServiceInstaller1

只需删除自动生成的安装程序即可。现在构建并安装,它将工作。

于 2014-12-01T09:59:26.817 回答
2

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

于 2015-07-21T03:42:54.497 回答
0

我已经尝试了上面提到的所有解决方案。但是我的服务在注册表中安装了一些不同的名称。因此,只需尝试删除该注册表。

在注册表中打开以下链接

Hkey_Local_Macine>System>CurrentControlSet>Service>

但是我没有在这条路径下找到我的服务。所以我试图在注册表中找到它。只需按 ctrl + F 并给出您的服务名称。或一些猜测名称。你会得到确切的位置。

只需删除它。它会起作用的。

于 2019-01-24T10:47:55.357 回答
0

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

ServiceProcessInstaller1 是我项目中的名称。

于 2019-04-19T07:24:32.563 回答