Frage

Meine Frage ist im Wesentlichen die gleiche wie die folgenden ein, aber die Antwort half mir nicht.

.NET Windows Service - mehr Dienste in einem Projekt

Im Wesentlichen I-3-Dienste haben, kann "Service1", "Service" und "Service3" sagen.

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

ServiceBase.Run(ServicesToRun);

Ich habe Installateur Klassen auch mit entsprechenden serviceInstaller.ServiceName = "ServiceX" für jeden dieser Dienste.

Wenn ich installutil verwenden, sehe ich alle drei Dienste auf dem Service-Manager. Aber wenn ich sie (einige oder alle) nur die erste ( „Service1“) beginnen läuft.

Ich weiß, das ist trivial, und ich kann wahrscheinlich verschiedene Installer Projekte für jede dieser aber in meinem Fall, es macht mehr Sinn semantisch eine verwenden nur

Ihre Hilfe ist willkommen

Danke Venu

War es hilfreich?

Lösung

Ich habe ein 3-Service-Projekt (siehe unten), die ein Projekt Installer für jeden Dienst verwendet. Ich habe dann ein Installer-Projekt, das die Dienste in Service-Manager installiert. Hier war mein Workflow:


  1. Erstellen 3-Dienste in einer Lösung in Visual Studio 2008 jeden Dienst als Service1, Service2 Naming und Service3. (Wobei Sie die aktuellen Service-Namen auf ihre jeweiligen Namen im Eigenschaftenfenster zu ändern.)
  2. Zu dieser Lösung, die ein Installer-Projekt.
  3. Hinzugefügt wurde die Projektergebnisse aus den drei Service-Projekte für den Installateur Projekt.
  4. hinzugefügt benutzerdefinierte Aktionen für alle drei Dienste im Installer für die Installation der Dienste in Service-Manager.
  5. gebaut und installiert.

Das gibt mir drei verschiedene Dienstleistungen im Service-Manager: Service1, Service2 und Service3

Genießen Sie!

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

EDIT:

Ich habe den Code in das Repository aktualisiert eine ausführbare Datei, sondern zwei Dienste zu haben. Jeder Dienst installiert, um den Service-Manager mit seinem eigenen Namen und die Fähigkeit, starten / stoppen. Ich denke, das ist das, was Sie wollen, nicht wahr? Hier ist, was ich getan habe:

  1. ein Service-Projekt erstellt hat.
  2. einen zweiten Dienst an demselben Projekt (mit einem einzigartigen Servicenamen) wurde hinzugefügt.
  3. hinzugefügt ein Installationsprogramm für beide Dienste (ServiceA und ServiceB).
  4. In der ProjectInstaller.Designer.vb Datei änderte ich die Me.Installers.AddRange Linie sowohl der Service-Installateure zu zeigen. (Me.ServiceInstaller1, Me.ServiceInstaller2)
  5. Im Haupteintrittspunkt des Hauptdienst (ServiceA in meinem Fall), stelle ich die ServicesToRun Variable auf ein Array von Servicebase alle Leistungen enthalten, dass ich es (ServiceA und ServiceB) ausgeführt werden soll. Dies ist ein wichtiger Schritt, da der Service-Manager eine Eigenschaft setzt auf der Grundlage der Anzahl der Argumente hier - entweder mehrere Instanzen derselben exe oder nur eine einzelne Instanz zu ermöglichen.
  6. ein Installer-Projekt hinzufügen und die Ausgabe von Service verwenden.
  7. Fügen Sie eine benutzerdefinierte Aktion die Ausgabe von Services.

Der Code kann immer noch wie oben aus dem gleichen Link heruntergeladen werden.

Danke!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top