Не удается установить службу Windows: служба уже существует

Я пытаюсь переустановить сервис, который я написал с помощью С#. Первый раз это сработало. Я использовал installutil для обработки установки, и служба появилась в списке служб, и я мог ее запустить. Затем я сделал несколько обновлений кода и удалил службу. Выяснив, что мне пришлось закрыть окно служб, служба, похоже, исчезла (т.е. успешно удалена). Однако при попытке снова установить службу я получил сообщение:

System.ComponentModel.Win32Exception: The specified service already exists

Это казалось странным, поскольку я не мог видеть это в окне служб. В конце концов я подумал, что нашел проблему после удаления ключа реестра, касающегося моей службы, но, к сожалению, это ничего не решило.

Кроме того, повторная деинсталляция не решает проблему, поскольку приводит к противоречивому сообщению:

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

Что я должен верить? Услуга существует или нет? Я чувствую себя физиком, пытающимся выяснить, жив кот или мертв. Я надеюсь, что кто-то здесь знает что-то, чтобы помочь решить эту проблему.


person Pieter    schedule 27.09.2011    source источник


Ответы (6)


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

person Pieter    schedule 27.09.2011
comment
Примите свой собственный ответ, если он правильно ответил на ваш вопрос (т.е. решил вашу проблему). - person Bernard; 27.09.2011
comment
Бернард, я сделаю это, но не раньше, чем через два дня. - person Pieter; 27.09.2011
comment
Это идеальное решение: stackoverflow.com/questions/8516701/ - person techExplorer; 17.02.2016

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

Откройте файл Designer.cs программы установки проекта, и вы увидите, что он уже добавлен туда...

person Sandeep Bhan    schedule 06.03.2012
comment
это правильно, за исключением того, что вам нужно открыть файл ProjectInstaller, который вы можете легко проверить и отредактировать в режиме разработки. Установщик проекта создается с помощью параметра AddInstaller в представлении дизайна службы. - person Radu M.; 20.02.2013

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

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

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

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

person Anshu Kumar    schedule 01.12.2014

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

person Manoj Weerasooriya    schedule 21.07.2015

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

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

Hkey_Local_Macine>System>CurrentControlSet>Service>

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

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

person Shyam Dixit    schedule 24.01.2019

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

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

person user3150744    schedule 19.04.2019