Montag, 9. Juli 2007

Schnelle und einfache Installation eines Windows Service

Nicht oft, aber hin und wieder kommt es vor das ich einen kleinen Windows-Service programmieren muss. Das ist nicht mein täglich Brot, es macht aber Spaß zwischendurch mal was anderes zu machen.
Da es nicht möglich ist einen Service einfach mal soeben z.B. durch Doppelklick zu starten, muss der Service auf dem System installiert werden.
Ich möchte hier kurz eine einfache Möglichkeit beschreiben wie das mit einem "Applikationsinstaller" erreicht werden kann.

Mit Visual Studio ist das ganze einfach und schnell zu realisieren. Ich verwende dazu eine eigene Klasse, die dem WindowsService hinzugefügt wird.


[RunInstaller( true )]
public class demoWindowsInstaller : Installer
{
private ServiceInstaller _tService;
private ServiceProcessInstaller _tServiceProcess;

public demoWindowsInstaller()
{
_tService = new ServiceInstaller();
_terviceProcess = new ServiceProcessInstaller();

_tServiceProcess.Account = ServiceAccount.NetworkService;
_tService.ServiceName = "DemoService";


_tService.StartType = ServiceStartMode.Manual;

Installers.AddRange(new Installer[] { _tServiceProcess, _tService });

}
}


Am Ende sollte der fertige Windows-Service als EXE vorhanden sein. Da es sich dabei ja um einen Windows-Service handelt, kann die EXE eben nicht einfach durch Doppelklick ausgeführt werden, sondern muss installiert werden.
Das kann man einfach durch das Tool "installutil" erreichen, indem man das Tool mit der Befehlszeile

"installutil.exe DemoService.exe" ausführt.

Wenn alles geklappt hat, sollte der Service nun auf dem System installiert sein.
Je nachdem was man als StartTyp in der InstallKlasse angegeben hat muss man den Service nun noch Starten.
Deinstallieren kann man den Service auf einefache Weise mit dem Befehl

"installutil.exe /u DemoService.exe"

Das Tool installutil.exe liegt im .NET Verzeichnis der .NET-Installation.
Um den Windows-Service-Installer erstellen zu können, wird der Namespace "System.Configuration.Install" benötigt.

Keine Kommentare: