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

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

Я создал проект установки, как указано в статье, и запустил его... он устанавливает мою службу в c:program файлыпродукт и т. д.... однако затем он не появляется в списке служб..

Что я упустил?

8 ответов


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

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

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

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

3.Дважды щелкните папку приложения в списке, чтобы открыть его, выберите первичный вывод из MyNewService (Активно) и нажмите кнопку ОК. Предварительные выборы выходные данные добавляются ко всем четырем узлам пользовательские действия � Установить, зафиксировать, Откат и удаление.

4.Создайте проект установки.

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


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

Я бы рекомендовал смотреть в Набор Инструментов WiX и здесь Wix Установка Windows Сервисы.


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

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


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

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

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

serviceInstaller.Parent = this;

и

serviceProcessInstaller.Parent = this;

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

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

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

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

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


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

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


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

Итак, загрузите шаблон проекта установки закройте свою студию, запустите эту установку и запустите свою студию, это будет работать.

Данн.


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

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

следующее из учебника по настройкам пользовательских действий (дело имеет значение):

  • Install, установите свойство Condition следующим образом:" не (установлен или PREVIOUSVERSIONSINSTALLED)"
  • Uninstall, установите свойство Condition в: "не UPGRADINGPRODUCTCODE"
  • Commit: установите поле "пользовательские данные действия" в: /OldProductCode= " [PREVIOUSVERSIONSINSTALLED]"

наконец, в проекте WinService обязательно установите раскрывающийся список "удалить предыдущие версии" в true.

ура


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