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

15.10.14

База данных - Инструменты администратора БД

Создание службы с инсталятором в 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


Выбираем InstallShield Limited Edition Projects, жмем Ок и попадаем в мастер.
На первом этапе будет предложено выбрать имя компании, название приложения, его версию и сайт компании производителя.
На втором этапе будет предложен выбор ОС для которых предназначено ваше приложение, а так же если хотите, то можете перед установкой выполнить проверку на предмет установленных в системе программ из списка.
Третий этап не доступен в InstallShield Limited Edition.
На четвертом этапе будет выведено дерево папок с предложением конечной папки для инсталляции вашего приложения. Так же можно выбрать и другие папки для установки. Для этого жмем правой кнопкой на любой из папок и выбираем Show Predefined Folder. Я досконально не разбирался почему в дереве создаются папки с именем введенной на первом этапе компании и почему эти папки нельзя удалить даже если я буду инсталлировать свое приложение в другую папку. Думаю, что это ограничение InstallShield Limited Edition.
Тем не менее я добавлю папку [SystemFolder] и именно в нее установлю нашу службу. Для этого жмем правой кнопкой на любой из папок и выбираем Show Predefined Folder. Ставим галку напротив [SystemFolder]. Папка появляется в дереве. Становимся на нее.
рис. 13

 


Жмем кнопку Add Projects Output и в открывшемся окне ставим галку на Основные выходные файлы.
Видим такую картинку:
рис. 14

рис. 15.


Переходим к пятому этапу, на котором будет предложено создать ярлыки. Я это ненавижу в установщиках, поэтому игнорирую.
На шестом этапе будет предложено внести изменения в реестр. В данном случае это не требуется.
На седьмом, последнем этапе будет предложено выбрать файл лицензии для устанавливаемого приложения. У меня такого нет, поэтому пропускаю.
В результате работы мастера мы получаем вот такое окно:
рис. 16.


Для того что бы создать инсталлятор становимся на узел Setup1, жмем правой кнопкой и выбираем Построение.
рис. 17.


И тут нас ждет разочарование. В виде сообщения об ошибке -5036: Internal build error ISEXP : error : -5036: Internal build error
рис. 18


Путем рыскания по интернет находим решение.
Раскрываем узел под номером 2, становимся на Files и жмем не нем два раза мышью. В Disanation Computer Folder идем к нашим файлам в папке SystemFolder жмем правой кнопкой на имени файла, выбираем Properties. На закладке Com & .NET Setting ставим галку Installer Class. Жмем Применить.
рис. 19.


Идем в Построение -> Диспетчер конфигураций
рис. 20


В таблице напротив имени нашего установщика выбираем CD-ROM.
рис. 21


После этого опять становимся на узел Setup1, жмем правой кнопкой и выбираем Построение. Наш инсталятор готов!
Теперь можно инсталлировать наш сервис в систему. Жмем правой кнопкой на узел Setup1 и выбираем Install. Запустится мастер установки нашего сервиса. Не смотря на то, что инсталятор говорит, что приложение будет установлено в C:\Programm Files\Имя компании\Имя продукта, приложение ставится в System32, т.е. туда, куда я и хотел его установить.
Сами же файлы установки были созданы в C:\Users\vs2012\Documents\Visual Studio 2012\Projects\WindowsService1\Setup1\Setup1\Express\CD_ROM\DiskImages\DISK1
Вот и все. Статья написана больше для того, что бы самому не забыть, как сделать шаблон сервиса и установщика. Если кому то поможет буду только рад.
Были использованы материалы из статей http://habrahabr.ru/post/102826/ http://wladm.narod.ru/C_Sharp/services.html http://stackoverflow.com/questions/11994725/how-do-i-create-an-installshield-le-project-to-install-a-windows-service 

Вступайте в нашу телеграмм-группу Инфостарт

C# Visual Studio 2012 Сервис

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    68757    365    164    

315

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    25346    93    46    

102

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

24400 руб.

06.12.2023    22811    80    10    

113

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    50234    136    162    

92

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    1741    2    0    

20

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    46034    31    13    

49

Чистка данных Инструменты администратора БД Администрирование 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Решение представляет собой набор из 6 обработок для 1С по удалению организаций и справочников из базы по фильтрам, документов по фильтрам, универсальное сжатие данных, очистка битых движений регистратора, удаление устаревших регистров сведений, удаление устаревших документов "Электронное письмо входящее" и "Электронное письмо исходящее"

23999 руб.

20.02.2026    1276    1    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. PiccaHut001 17.10.14 18:53 Сейчас в теме
Всегда забавлял русский перевод английских слов. В Visual Studio "Build" перевели как "построение". Мне кажется, уместнее было-бы "Собрать".
"Построить решение" - никого не корёжит?
2. chekrizh 30.05.18 09:44 Сейчас в теме
3. user867295 01.11.19 16:13 Сейчас в теме
А как быть с новым Visual Studio 2019? Не найду пункта с InstallShield
Для отправки сообщения требуется регистрация/авторизация