Установка службы Windows завершается неудачно: служба уже существует - PullRequest
4 голосов
/ 27 сентября 2011

Я пытаюсь переустановить службу, написанную на 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 голосов
/ 27 сентября 2011

Соответствующий SO-ответ, наконец, указал мне верное направление (почему я не нашел это в поиске Google или SO, я не знаю).В любом случае, очевидно, что Designer.cs, сгенерированный Visual Studio, также создает установщик процессов и служб.Которые, конечно, устанавливают службы с тем же именем, что и мои созданные вручную установщики.Удаление моих собственных установщиков решило проблему.

5 голосов
/ 06 марта 2012

Фактическая проблема заключается в том, что вы добавили объект serviceProcessInstaller & serviceInstaller несколько раз в ваш код. Его нужно добавлять только один раз.там уже добавили ...

2 голосов
/ 21 июля 2015

Проверьте свойство имени службы в установщике службы.

2 голосов
/ 01 декабря 2014

Я также получал ту же ошибку, поэтому для ее устранения я сделал следующее:

  • Откройте ProjectInstaller.cs из обозревателя решений
  • Перейдите в конструктор представленийв режиме , если щелкнуть правой кнопкой мыши, если есть представление кода

Вы увидите новый установщик, кроме по умолчанию 2 , то есть serviceprocessInstaller1 и ServiceInstaller1 .

Просто удалите тот установщик, который был автоматически создан.Теперь соберите и установите, это будет работать.

0 голосов
/ 19 апреля 2019

Необходимо удалить строку «Me.Installers.AddRange (New System.Configuration.Install.Installer () {Me.ServiceInstaller1, Me.ServiceProcessInstaller1})», если такая же строка уже существует в конструкторе, то она будет установлена.

ServiceProcessInstaller1 - это имя в моем проекте.

0 голосов
/ 24 января 2019

Я перепробовал все решения, упомянутые выше. Но мой сервис был установлен с другим именем в реестре. Поэтому попробуйте удалить этот реестр.

Открыть ссылку в реестре ниже

Hkey_Local_Macine>System>CurrentControlSet>Service>

Но я не нашел свою службу по этому пути. Поэтому я попытался выяснить это в реестре. Просто нажмите Ctrl + F и укажите название вашего сервиса. или какое-то угаданное имя. Вы получите точное местоположение.

Просто удалите это. Это будет работать.

...