Служба Windows не отображается при установке с проектом установки - PullRequest
6 голосов
/ 01 сентября 2009

У меня есть простая служба Windows, разработанная в VS.net 2008 и VB.net. Когда я устанавливаю службу с помощью Installutil.exe из командной строки, она работает как шарм.

Когда я пытаюсь добавить проект установки, настроить вывод, собрать и установить его, хотя он говорит, что успешно установлен, он не отображается в службах.

Журнал событий показывает, что он успешно установлен. Я только что проверил реестр, он поместил сборки в HKEY_CURRENT_USER \ Software \ Microsoft \ installer \ сборки.

Но я не понимаю, почему он не отображается в списке услуг. Я обновился и перезапустил.

Есть мысли ??

Спасибо

Ответы [ 3 ]

12 голосов
/ 01 сентября 2009

найденное решение Вы должны добавить пользовательское действие в ваш проект MSI. Так что в пользовательских действиях добавьте вывод вашего сервиса в раздел Install. После этого будет запущен необходимый код установки для вашей службы. то есть то же самое, что делает installutil.exe

Спасибо за помощь

6 голосов
/ 25 января 2011

У меня была такая же проблема, и я не обращал внимания на часть ДО создания проекта установки. http://msdn.microsoft.com/en-us/library/zt39148a(v=VS.100).aspx

Для создания инсталляторов для вашего сервиса

В обозревателе решений щелкните правой кнопкой мыши Service1.vb или Service1.cs и выберите View Designer.

Щелкните фоном дизайнера, чтобы выбрать сам сервис, а не любое его содержимое.

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

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

В представлении «Дизайн» для ProjectInstaller щелкните «ServiceInstaller1» или «ServiceInstaller1».

В окне «Свойства» убедитесь, что для свойства ServiceName установлено значение MyNewService.

Установите для свойства StartType значение Автоматически.

В конструкторе щелкните ServiceProcessInstaller1 (для проекта Visual Basic) или serviceProcessInstaller1 (для проекта Visual C #). Установите для свойства Account значение LocalSystem. Это приведет к тому, что служба будет установлена ​​и запущена с локальной учетной записью службы.

1 голос
/ 01 сентября 2009

Пара идей:

Вы устанавливаете под той же учетной записью Windows, под которой пытаетесь запустить ее? У вас есть свойство InstallAllUsers проекта установки, установленное в True?

Вы уверены, что у вас правильно установлены свойства ProductName и Title в Project Setup? Возможно, служба отображается в списке под другим именем, то есть «SetupProject1» или что-то в этом роде.

Аналогично, в классе ProjectInstaller вашей службы в режиме конструктора посмотрите свойства ServiceInstaller и убедитесь, что для свойств ServiceName и DisplayName задано то, что вам нужно.

...