0

Я создал установщик, который берет основной вывод из подпроектов, один из подпроектов, составляющих мое приложение, - это служба Windows. Эта служба должна быть установлена ​​как часть основного приложения.C# Как установить службу Windows как часть установки приложения

До сих пор я попытался добавить установщика в проект службы, опубликовав его отдельно и установив результирующий Setup.exe в качестве настраиваемого действия для установщика проекта, но не добился успеха в этом методе. Я бы установил вещь из командной строки, однако мне нужно было бы затем упаковать в Visual Studio CMD Tool, чтобы получить доступ к команде installutil.

Мой вопрос: могу ли я установить службу Windows из «Проекта установки установщика Visual Studio» как часть более крупного проекта, и если да, то как? Поскольку этот процесс ускользнул от меня так далеко.

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

Заранее спасибо

ответ

2

Поскольку VS2013 не содержит старый проект установки Visual Studio (VS2010), у меня есть эти предложения:

Использование WiX инсталлятор: https://wix.codeplex.com

Существует даже (не проверен):

https://visualstudiogallery.msdn.microsoft.com/7f35c8ce-1763-4340-b720-ab2d359009c5


Использование VS 2013 установить расширение

Были много жалоб, что MS заброшенные старый проект установки, чтобы они привели его обратно в качестве расширения:

http://blogs.msdn.com/b/visualstudio/archive/2014/04/17/visual-studio-installer-projects-extension.aspx

У меня еще не проверил это, но, как я понимаю, он вернет старые возможности внутреннего типа проекта VS.


Я написал несколько служб Windows, с помощью проекта установки VS2010 и даже написал шаг за шагом инструкции, как это сделать. Некоторые шаги не являются ясными, поэтому я сам использую это как руководство для проектов обслуживания.

Я сделал несколько первых тестов с WiX, что кажется хорошим решением, однако я еще не использовал его для установки сервиса.

Еще ссылка по этой теме:

https://superuser.com/questions/727643/installing-a-windows-service-without-visual-studios-installutil-exe

Я планирую проверить мой шаг за шагом инструкции по установке, а службы с VS2013 в ближайшее время и, вероятно, сравнить это с WiX, если вы заинтересованы, пожалуйста, сообщите меня, я могу сделать это общедоступным.


Вот мои пошаговые инструкции по созданию службы Windows. (вы можете найти это также на http://www.rsprog.de/samplewindowsservice)

  • File => New => Project ...

  • Visual C# => Windows Desktop => службы Windows

  • Имя: SampleService

  • "Создать каталог для решения" проверен

  • В обозревателе решений выберите Service1.cs правой кнопкой мыши => Переименовать

  • Переименовать файл SampleService.cs

  • Выберите Да для»... Вы хотите также выполнить переименование ... "

SampleService.cs должны быть показаны в режиме конструктора Теперь

  • Нажмите на фоне зрения дизайнера

  • правой кнопкой мыши => Добавить Installer

(serviceProcessInstaller1 и serviceInstaller1 были добавлены)

  • открытые SampleService.cs в режиме конструктора

  • в свойствах установите SERVICENAME к SampleService

  • open Proje ctInstaller.cs в Design View

  • Нажмите serviceInstaller1

  • В окне Свойства установите свойство ServiceName в SampleService.

  • Установите свойство DisplayName в образце службы или что-то еще (Это будет показано далее в консоли служб как имя службы)

  • Здесь вы также можете optionlly набор StartType от ручного труда к автоматизированному

  • щелкните serviceProcessInstaller1

  • Редактировать аккаунт: Здесь вы можете изменить, будет ли служба работать под техническим счетом (Пользователь) или, например,в качестве LocalSystem

Если вы установите его в качестве пользователя, всплывающее во время установки позволит пользователя/пароль, чтобы установить

  • В Solution щелкните правой кнопкой мыши => Добавить => Новый проект ...

  • Другие типы проектов => Visual Studio Installer => Setup Project

  • Имя: SampleServiceSetup

  • Выберите проект SampleServiceSetup, щелкните правой кнопкой мыши => Добавить => выход на проектную мощность ...

  • В проекте «SampleService => Первичный выход» должен быть выбран, в конфигурации «(Active)» должен быть выбран ,

  • Нажмите OK

  • проект

    Выберите SampleServiceSetup, в свойствах просмотра:

  • InstallAllUsers изменения в True
  • ProductName изменения в SampleService (удалить настройки в конце)
  • изменения Заголовок к SampleService (удалите программу установки в конце)

По умолчанию целевая платформа установки проект - x86. Вы можете изменить его здесь на x64 (TargetPlatform)

  • Щелкните правой кнопкой мыши проект установки в обозревателе решений => Вид => Пользовательские действия

  • В настраиваемых действий щелкните правой кнопкой мыши на заказ Действия node => Добавить пользовательское действие ...

  • Дважды щелкните папку приложения в списке, чтобы открыть его, выберите Первичный вывод из SampleService (Active) и нажмите OK. ("Первичный выход из SampleService (Active)" был добавлен в четырех узлов)

  • проект Выберите SampleServiceSetup правой кнопкой мыши => Вид => Пользовательский интерфейс

  • Start => Папка установки => Свойства => InstallAllUsersVisible: изменение ложных

  • Построить решение

+0

Если бы я мог взглянуть на это шаг за шагом, я был бы признателен. Я определенно буду изучать маршрут WiX вместе с другими вариантами. –

+0

Хорошо, я проведу это с расширением проекта установки в VS2013 в ближайшее время. Затем я отредактирую свой ответ (~ 2 дня). –

+0

Я добавил свои инструкции для создания образца службы Windows с помощью Visual Studio 2013 с расширениями для дополнительных проектов –

1

установщика Windows имеет семафор, который предотвращает установку нескольких запуск в Сэме е время. По этой причине один установщик не может вызвать другой установщик. Это исключение, но полученный шаблон не может быть установлен молча и не является лучшей практикой.

Вам необходимо исследовать концепции бутстраппера/цепочки. У InstallShield есть тот, который они называют установщиками пакетов, а XML-установщик Windows (WiX) имеет один заголовок Burn.

Также проекты установщика Visual Studio хорошо известны специалистам Windows Installer для их низкого качества. Я хотел бы переписать этот установщик с помощью другого инструмента, такого как WiX. Я поддерживаю проект с открытым исходным кодом под названием Industrial Strength Windows Installer XML (IsWiX - CodePlex), который предоставляет шаблоны проектов (строительные леса) и графические дизайнеры, которые позволяют авторизовать MSI, который устанавливает службу, не создавая ни одной строки XML вручную. Затем созданный проект создается WiX для создания MSI.

+0

Это отличное спасибо, я не удивлен, что это считается плохой практикой, идея заставила меня съесть немного, но это все, что я мог подумать из. Я посмотрю на IsWiX, это кривая обучения немного меньше, чем я слышал, что это для WiX? Я работаю над довольно интенсивным сроком, так что чем легче я смогу справиться с этим, тем лучше! –

+0

Это меньше для первоначального подъема. Для достижения более глубоких требований требуется знание и опыт WiX/MSI. Оформление заказа: https://www.youtube.com/watch?v=NJxU47_zqbw Видео немного устарело, поскольку вам больше не нужно писать элементы ServiceInstall и ServiceControl вручную. У IsWiX теперь есть графический дизайнер. –

+0

Напишите мне, если хотите демонстрацию. –

Смежные вопросы