Я тщательно следовал учебному руководству Microsoft : создайте Windows сервисное приложение . В частности, я видел этот код :
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService(args)
};
ServiceBase.Run(ServicesToRun);
}
С соответствующим ProjectInstaller
, также описанным в руководстве, я смог успешно установить службу способом, описанным в учебник с installutil
.
Теперь приведенный выше код подсказывает, что я могу установить массив служб с этой программой. Например, я собрал несколько сервисов и получил код следующего вида:
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1(args),
new Service2(args),
new Service3(args),
new Service4(args)
};
ServiceBase.Run(ServicesToRun);
}
Опять же, с соответствующим ProjectInstaller
, установка этих 4 сервисов с installutil
- это хорошо. Я установил свои службы и даже могу их запустить.
Однако мне не удалось найти способ упаковать это в пакет установщика. Документация Microsoft упоминает установщики пакетов ClickOnce, WiX и InstallShield. В моей команде разработчиков мы используем Advanced Installer . Похоже, что ни один из этих пакетов установки не показывает в своей документации, как установить службы с помощью вышеуказанной программы 4-services Main
. Каждый раз я вижу, как установить один сервис за раз. Я мог бы, например, написать одну из вышеуказанных Main
программ для каждой из моих служб и упаковать эти программы в мой установочный пакет.
Возможно ли это? Как? Я действительно не хочу создавать один визуальный студийный проект для каждого из моих сервисов, просто чтобы установить их. Какие у меня есть возможности, если я не могу реализовать это с помощью вышеуказанного набора услуг?