Ответ 1
Я создал 3 проекта сервиса (ниже), который использует установщик проекта для каждой службы. Затем я добавил проект установщика, который устанавливает службы в диспетчер службы. Вот мой рабочий процесс:
- Создайте 3 службы в решении в Visual Studio 2008. Именование каждой службы как Service1, Service2 и Service3. (Обязательно измените имена реальных сервисов на их соответствующие имена в окне свойств.)
- В это решение добавлен проект установщика.
- Добавлены результаты проекта из трех проектов обслуживания в проект установщика.
- Добавлены настраиваемые действия для всех трех служб в установщике для установки служб в диспетчере сервисов.
- Построено и установлено.
Это дает мне три различных сервиса в сервис-менеджере: Service1, Service2 и Service3
Наслаждайтесь!
http://code.google.com/p/multi-service-install/
EDIT:
Я обновил код в репозитории, чтобы иметь одну исполняемую, но две службы. Каждая служба устанавливается в диспетчер службы с собственным именем и возможностью запуска/остановки. Я думаю, что это то, чего ты хочешь, правильно? Вот что я сделал:
- Создал сервисный проект.
- Добавлена вторая услуга в тот же проект (с уникальным именем службы).
- Добавлен установщик для обеих служб (ServiceA и ServiceB).
- В файле ProjectInstaller.Designer.vb я изменил строку Me.Installers.AddRange, чтобы показать оба установщика службы. (Me.ServiceInstaller1, Me.ServiceInstaller2)
- В главной точке входа основной службы (ServiceA в моем случае) я установил переменную ServicesToRun в массив ServiceBase, содержащий все службы, которые я хочу запустить (ServiceA и ServiceB). Это важный шаг, так как диспетчер сервиса устанавливает свойство на основе количества аргументов здесь - либо для того, чтобы разрешить несколько экземпляров одного и того же exe или только одного экземпляра.
- Добавьте проект установщика и используйте выходные данные служб.
- Добавить настраиваемое действие с помощью вывода служб.
Код можно загрузить по той же ссылке, что и выше.
Спасибо!