Pregunta

Mi pregunta es esencialmente el mismo que el siguiente, pero la respuesta no me ayuda.

.NET Windows Service - múltiples servicios en un proyecto

En esencia, tengo 3 servicios, digamos "Servicio1", "servicio" y "Servicio3".

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
                                {
                                    new Service1("Service1"),
                                    new Service2("Service2"),
                                    new Service3("Service3")
                                };

ServiceBase.Run(ServicesToRun);

También tengo clases instalador con la correspondiente serviceInstaller.ServiceName = "ServiceX" para cada uno de estos servicios.

Cuando uso installutil, hago ver los 3 servicios en el gestor de servicio. Sin embargo, cuando ellos (o todos ellos), sólo el primero empezar ( "Servicio1") se está ejecutando.

Sé que esto es trivial y es probable que pueda tener diferentes proyectos de instalación para cada uno de ellos, pero en mi caso, es semánticamente tiene más sentido utilizar un solo

Su ayuda es apreciada

Gracias Venu

¿Fue útil?

Solución

I creó un proyecto 3 servicio (abajo) que utiliza un instalador proyecto para cada servicio. Luego añade un proyecto de instalación de la que se instalan los servicios en gerente de servicio. Aquí estaba mi flujo de trabajo:


  1. Crea 3 servicios en una solución en Visual Studio 2008. nombrando cada servicio como Service1, Servicio2 y, Servicio3. (Asegurándose de cambiar los nombres de servicios reales a sus respectivos nombres en la ventana de propiedades.)
  2. Añadido un proyecto de instalación de esta solución.
  3. Añadido los resultados del proyecto a partir de los tres proyectos de servicio al proyecto de instalación.
  4. acciones personalizadas añadidas para los tres servicios del programa de instalación para la instalación de los servicios en el administrador de servicio.
  5. construido e instalado.

Esto me da tres servicios distintos en jefe de servicio: Service1, Servicio2 y Servicio3

Disfrute!

http://code.google.com/p/multi-service-install /

EDIT:

He actualizado el código en el repositorio de tener un ejecutable, pero dos servicios. Cada servicio se instala en el jefe de servicio con su propio nombre y la capacidad de arranque / parada. Creo que esto es lo que está queriendo, ¿correcto? Esto es lo que hice:

  1. Creación de un proyecto de servicio.
  2. añadido un segundo servicio para el mismo proyecto (con un nombre de servicio único).
  3. Se ha agregado una instalación para ambos servicios (serviceâ y ServiceB).
  4. En el archivo ProjectInstaller.Designer.vb me cambió la línea Me.Installers.AddRange para mostrar tanto de los instaladores de servicios. (Me.ServiceInstaller1, Me.ServiceInstaller2)
  5. En el punto de entrada principal del servicio principal (serviceâ en mi caso), que establece la variable ServicesToRun a una serie de ServiceBase que contiene todos los servicios que desea que se ejecute (serviceâ y ServiceB). Este es un paso importante como el administrador de servicios establece una propiedad basado en el número de argumentos aquí - ya sea para permitir que múltiples instancias de la misma exe o una única instancia.
  6. Agregar un proyecto de instalación y el uso de la producción de servicios.
  7. Añadir una acción personalizada utilizando la salida de Servicios.

El código todavía se puede descargar desde el mismo enlace que el anterior.

Gracias!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top