Domanda

La mia domanda è essenzialmente lo stesso di quello successivo, ma la risposta non mi ha aiutato.

.NET Windows Service - più servizi in un unico progetto

In sostanza, ho 3 servizi, consente di dire "Service1", "Servizio" e "Service3".

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

ServiceBase.Run(ServicesToRun);

Ho anche classi di installazione con corrispondenti serviceInstaller.ServiceName = "ServiceX" per ciascuno di questi servizi.

Quando uso installutil, io vedo tutti e 3 i servizi sul gestore di servizio. Tuttavia, quando inizio di loro (uno o tutti loro) solo il primo ( "Service1") è in esecuzione.

So che è banale e posso probabilmente diversi progetti di installazione per ognuno di questi, ma nel mio caso, si rende semanticamente più senso utilizzare un solo

Il vostro aiuto è apprezzato

Grazie Venu

È stato utile?

Soluzione

Ho creato un progetto di servizio di 3 (in basso), che utilizza un programma di installazione di progetto per ogni servizio. Ho poi aggiunto un progetto di installazione che installa i servizi in responsabile del servizio. Qui è stato il mio flusso di lavoro:

  1. Crea 3 servizi in una soluzione in Visual Studio 2008. Naming ogni servizio come Service1, Service2 e, Service3. (Avendo cura di cambiare i nomi dei servizi reali per i loro rispettivi nomi nella finestra delle proprietà.)
  2. Aggiunto un progetto di installazione di questa soluzione.
  3. aggiunti i risultati del progetto dei tre progetti di servizio al progetto di installazione.
  4. azioni personalizzate aggiunto per tutti e tre i servizi nel programma di installazione per l'installazione dei servizi nel responsabile di servizio.
  5. costruito e installato.

Questo mi dà tre servizi distinti responsabile del servizio: Service1, Service2 e Service3

Enjoy!

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

EDIT:

Ho aggiornato il codice nel repository di avere un unico eseguibile, ma due servizi. Ogni servizio installato al gestore del servizio con il proprio nome e la capacità di start / stop. Credo che questo è ciò che hai intenzione, giusto? Ecco quello che ho fatto:

  1. creato un progetto di servizio.
  2. aggiunto un secondo servizio per lo stesso progetto (con un nome servizio unico).
  3. Aggiunto un programma di installazione per entrambi i servizi (serviceâ e ServiceB).
  4. Nel file ProjectInstaller.Designer.vb ho cambiato la linea Me.Installers.AddRange per mostrare entrambi gli installatori di servizio. (Me.ServiceInstaller1, Me.ServiceInstaller2)
  5. Nel punto di ingresso principale del servizio principale (serviceâ nel mio caso), ho impostato la variabile ServicesToRun a una serie di ServiceBase contenente tutti i servizi che voglio l'esecuzione (serviceâ e ServiceB). Questo è un passo importante in quanto il responsabile del servizio imposta una proprietà in base al numero di argomenti qui - o per consentire a più istanze dello stesso exe o solo una singola istanza.
  6. Aggiungere un progetto di installazione e utilizzare l'uscita di servizi.
  7. Aggiungi un'azione personalizzata utilizzando l'uscita dai servizi.

Il codice può ancora essere scaricato dallo stesso collegamento come sopra.

Grazie!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top