Служба Windows не появляется в списке служб после установки

Я создал службу Windows в c #, используя Visual Studio 2008, я в значительной степени последовал этому: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Я создал проект установки, как описано в статье, и запустил его … он устанавливает мою службу в c: \ program files \ product и т. Д …. однако она не появляется в списке сервисов.

Что мне не хватает?

Самая важная часть статьи, которую вы связали, здесь

Чтобы добавить настраиваемое действие в проект установки

1. В обозревателе решений щелкните правой кнопкой мыши проект установки, выберите «Просмотр», затем выберите «Пользовательские действия». Появится редактор пользовательских действий.

2. В редакторе пользовательских действий щелкните правой кнопкой мыши узел «Пользовательские действия» и выберите «Добавить пользовательское действие». Появится диалоговое окно «Выбор элемента в проекте».

3. Дважды щелкните папку приложения в списке, чтобы открыть ее, выберите основной вывод из MyNewService (Active) и нажмите «ОК». Основной вывод добавляется ко всем четырем узлам пользовательских действий Install, Commit, Rollback и Uninstall.

4.Build проект установки.

Если вы пропустите эти шаги, ваш проект установки будет создавать и копировать ваши файлы в правильный каталог; однако они не будут регистрировать ваш двоичный файл как услугу без этих шагов.


Следует также отметить, что это работает для более старых версий Visual Studio, которые имеют / имеют встроенный шаблон проекта установки / развертывания. Новые версии Visual Studio имеют разные проекты установки / развертывания (некоторые из них требуют стороннего программного обеспечения).

Я бы порекомендовал посмотреть на WiX Toolset и проверить здесь, как установить службы Windows для WiX.

Я попал в лицо этому, поэтому я помещаю его здесь на всякий случай, когда кто-то еще сталкивается с этим.

Если вы следуете инструкциям в руководствах, но по-прежнему возникают проблемы с установкой, убедитесь, что ваш class Installer является общедоступным. Внутренний режим не будет работать.

У меня была эта же проблема, и я понял, что никогда не устанавливаю родителя для ServiceInstaller.

Дважды щелкните по установщику проекта. Дизайнер должен показать установщик служб и установщик процесса. Когда вы нажимаете на и просматриваете свойства, вы должны учитывать атрибут Parent, который должен быть установлен как имя classа установщика проекта.

Или, если вы сделаете это в коде, убедитесь, что вы установили:

 serviceInstaller.Parent = this; 

а также

 serviceProcessInstaller.Parent = this; 

При установке сервисов я настоятельно рекомендую использовать NSSM , который хорошо работал для меня для всех моих потребностей WinService. Он может установить любой исполняемый файл (даже если .bat, .cmd) в качестве службы и гарантирует, что ваш сервис всегда работает и работает.

Чтобы использовать этот инструмент:

  1. Скачать здесь

  2. И следуйте инструкциям здесь

Затем проверьте список услуг, он должен быть там, вверх и запущен.

Следуйте этим инструкциям, они работали на меня. Для установки конкретно эта часть находится в нижней части статьи.

MSDN: Пошаговое руководство: создание службы Windows

В Visual Studio 2013 я столкнулся с той же проблемой, используя шаблон InstallShield для приложения-службы. Но он работает как прелесть при использовании шаблона Setup Project https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

поэтому загрузите шаблон Setup Project, закройте свою студию, запустите эту установку и запустите свою Studio, это сработает.

Dunn.

Вот хороший учебник от tgeek001 от CodeProject.com, который помог мне. Он включает несколько вещей, которые я не видел в приведенных выше сообщениях: 1. Код обработчика события, чтобы остановить службу до ее удаления. 2. Конкретные условия и свойства в коде пользовательских действий для предотвращения сбоев (они исправили ошибку 1001 которые я испытал, следуя инструкциям в принятом ответе выше). 3. Утилита Win Service «Удалить предыдущую версию» установлена ​​равной true

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

Ниже приведено руководство по настройке пользовательских действий (вопросы):

  • Установите, установите для свойства Condition следующее: «NOT (Установлено или ПРЕДЫДУЩАЯ НЕИСПРАВНОСТЬ)»
  • Удалите, установите для свойства Condition значение: “NOT UPGRADINGPRODUCTCODE”
  • Commit: установите поле «Пользовательские данные действия» для: / OldProductCode = “[PREVIOUSVERSIONSINSTALLED]”

Наконец, в проекте WinService убедитесь, что выпадающее меню «Удалить предыдущие версии» равно true.

ура

Я обнаружил, что ваш class установщика находится в том же проекте, что и Служба. Установщик не может существовать в проекте библиотеки, на который ссылается Служба.

Interesting Posts

Может ли Mysql разделить столбец?

Количество месяцев между двумя датами

Как связать два разных интернет-соединения

Холст растягивается при использовании CSS, но нормальный с свойствами «ширина» / «высота»

Почему Java позволяет повысить видимость защищенных методов в дочернем classе?

Как настроить беспроводную сеть как специальную командную строку?

Что означают символы makefile $ @ и $ <mean?

Почему (на самом деле?) Список реализует все эти интерфейсы, а не только IList ?

Как добавить количество уникальных значений по группам в R data.frame

Настроить формат даты и времени в Windows

Как добавить внешнюю библиотеку в IntelliJ IDEA?

Как получить текущую дату и время в UTC или GMT на Java?

Подключение к Visual Studio для отладки сервера IIS Express через LAN

Как кодировать перечисление с помощью NSCoder в swift?

Установка отдельных осевых пределов с помощью facet_wrap и шкал = «бесплатно» в ggplot2

Давайте будем гением компьютера.