Vra

My vraag is in wese dieselfde as die volgende een, maar die antwoord het my nie gehelp nie.

.NET Windows Service - veelvuldige dienste in een projek

In wese het ek 3 dienste, kom ons sê "Diens1", "Diens" en "Diens3".

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

ServiceBase.Run(ServicesToRun);

Ek het ook installeringsklasse met ooreenstemmende ServiceInstaller.ServiceName = "ServiceX" vir elk van hierdie dienste.

As ek installutil gebruik, sien ek al 3 dienste op die diensbestuurder.Wanneer ek hulle egter begin (enige of almal van hulle) is net die eerste een ("Diens1") aan die gang.

Ek weet dit is triviaal en ek kan waarskynlik verskillende installeerderprojekte vir elk van hierdie hê, maar in my geval maak dit semanties meer sin om net een te gebruik

U hulp word waardeer

Dankie Venu

Was dit nuttig?

Oplossing

Ek het 'n 3-diensprojek (hieronder) geskep wat 'n projekinstalleerder vir elke diens gebruik.Ek het toe 'n installeerderprojek bygevoeg wat die dienste in diensbestuurder installeer.Hier was my werkvloei:


  1. Skep 3 dienste in 'n oplossing in Visual Studio 2008.Benoem elke diens as Diens1, Diens2 en Diens3.(Maak seker dat u die werklike diensname na hul onderskeie name in die eienskappevenster verander.)
  2. Het 'n installeerderprojek by hierdie oplossing gevoeg.
  3. Het die projekuitsette van die drie diensprojekte by die installeerderprojek gevoeg.
  4. Bygevoeg pasgemaakte aksies vir al drie dienste in die installeerder vir die installering van die dienste in diensbestuurder.
  5. Gebou en geïnstalleer.

Dit gee my drie verskillende dienste in diensbestuurder:Diens1, Diens2 en Diens3

Geniet dit!

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

EDIT:

Ek het die kode in die bewaarplek opgedateer om een ​​uitvoerbare maar twee dienste te hê.Elke diens installeer na die diensbestuurder met sy eie naam en vermoë om te begin/stop.Ek dink dit is wat jy wil hê, reg?Hier is wat ek gedoen het:

  1. Het 'n diensprojek geskep.
  2. Het 'n tweede diens by dieselfde projek gevoeg (met 'n unieke diensnaam).
  3. Het 'n installeerder by beide dienste (DiensA en DiensB) gevoeg.
  4. In die ProjectInstaller.Designer.vb-lêer het ek die Me.Installers.AddRange-lyn verander om beide die diensinstalleerders te wys.(Me.ServiceInstaller1, Me.ServiceInstaller2)
  5. In die hooftoegangspunt van die hoofdiens (ServiceA in my geval), stel ek die ServicesToRun-veranderlike op 'n skikking van ServiceBase wat al die dienste bevat wat ek wil hê dit moet laat loop (ServiceA en ServiceB).Dit is 'n belangrike stap aangesien die diensbestuurder 'n eienskap opstel op grond van die aantal argumente hier - óf om veelvuldige gevalle van dieselfde exe toe te laat of slegs 'n enkele instansie.
  6. Voeg 'n installeerderprojek by en gebruik die afvoer van Dienste.
  7. Voeg 'n pasgemaakte handeling by met behulp van die afvoer van Dienste.

Die kode kan steeds vanaf dieselfde skakel as hierbo afgelaai word.

Dankie!

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top