gifts2017

Создание службы с инсталятором в VS2012 C#

Опубликовал assa Петренко (assa) в раздел Администрирование - Системное

Создание службы с инсталятором в VS2012 C#

Создание службы VS2012 C#
Открываем VS2012. Меню Файл -> Создать -> Проект -> Шаблоны -> Visual C# -> Служба Windows.
Вводим имя и имя решения.
рис. 1

Далее в контекстном меню Свойства узла WindowsService1 в диалоговом окне выбираем вкладку Приложение. Для поля Автоматически запускаемый объект из выпадающего списка выбираем значение WindowsService1.Program. Остальное - по желанию.
рис. 2

 

Дважды щелкаем мышью по имени файла Servece1.cs в Обозревателе решений. Выставим свойства - (Name)- Service1, AutoLog - True.
рис. 3

 

Раскрываем узел Service1.cs, щелкаем по Service1. В основном окне проекта видим готовый шаблон сервиса. Класс Service1 содержит конструктор класса, функцию main и функции методов OnStart и OnStop.
рис. 4

 

Построим проект. Для этого жмем F6 или Построение -> Построить решение.
рис. 5

 

При попытке запуска нашего сервиса нажатием кнопки Запуск получаем такое окно:
рис. 6


Для того что бы наш сервис начал работать его надо установить, а для того что бы его установить, сервис должен иметь установщик.
Для добавления установщика опять дважды щелкаем на Servece1.cs и добавляем установщик.
рис. 7


Теперь в нашем проекте есть serviceProcessInstaller1 и serviceInstaller1. В serviceProcessInstaller1 поставим значение Account в LocalSystem. В serviceInstaller1 укажем имя сервиса и поставим StartType — Automatic.
рис. 8

 

рис. 9

 


Не забудьте выполнить Построение -> Построить решение или нажать F6.

Тут, собственно, и начинается самое интересное, из за чего было написано все предыдущее.
Чтобы установить сервис, нужно вызвать утилиту установки и передать параметром путь к нашему сервису.
Для этого можно создать install.bat такого вида:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe "C:\Users\vs2012\Documents\Visual Studio 2012\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe"
pause

После запуска этого файла с правами администратора в апплете Службы можно увидеть наш сервис.
рис. 10

 


В папке откуда запускался install.bat появится лог файл InstallUtil.InstallLog, а в папке проекта файл WindowsService1.InstallLog.
Если вы все сделали правильно, то WindowsService1.InstallLog будет содержать такие строки:
"Устанавливается служба Service1...
Служба Service1 успешно установлена."
В противном случае ищите ошибку в последовательности действий при создании сервиса.
Ну и создадим файл для удаления сервиса UnInstall.bat

C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe "C:\Users\vs2012\Documents\Visual Studio 2012\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe" /u
pause

В результате выполнения этого файла с правами администратора наша служба будет удалена из системы, а в файле WindowsService1.InstallLog появится запись:
"Выполняется удаление службы Service1 из системы...
Служба Service1 успешно удалена из системы."

Это легкий путь. Но, поскольку я поставил себе цель <> и легких путей не ищу, то попробую сделать инсталятор.
Для этого идем Файл -> Добавить -> Создать проект -> Другие типы проектов -> Установка и развертывание.
Не знаю у кого как, а у себя я увидел такую картинку:
рис. 11


При выборе Включение InstallShield Limited Edition и нажатии ОК вас перекинет на страницу C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\InstallShield\InstallShieldProject\1049\InstallShield_ult.html из которой будет предложено перейти на сайт загрузки.
После заполнения формы жмем кнопку Download и получаем установщик. Вам будет дан серийный номер для регистрации InstallShield Limited Edition у вас в системе. Одновременно на указанный при регистрации п/я придет письмо с серийным номером и ссылкой на скачивание.
После скачивания и установки InstallShield Limited Edition идем тем же путем Файл -> Добавить -> Создать проект -> Другие типы проектов -> Установка и развертывание. И теперь уже видим такую картинку
рис. 12