Home » Tutorials » Datenbanken » Firebird als Dienst installieren

Firebird als Dienst installieren

Die eigene Konsolenanwendung instsvc.exe

Für die Umsetzung unserer Konsolenanwendung benötigen wir die folgenden Funktionen aus dem Win32 API:

  1. OpenSCManager
    Stellt eine Verbindung zum Service-Control-Manager her
  2. CreateService
    Installiert eine Anwendung im Service-Control-Manager
  3. OpenService
    Öffnet einen existierenden Service
  4. DeleteService
    Löscht eine Anwendung aus dem Service-Control-Manager
  5. CloseServiceHandle
    Beendet eine Verbindung zum Service-Control-Manager bzw. schließt das Handle zu einem geöffneten Service.

Um einen Dienst zu installieren, müssen wir wie folgt vorgehen:

  1. Service-Control-Manager öffnen (OpenSCManager)
  2. CreateService aufrufen (c:ProgrammeMyFirebirdServerbinfbserver.exe)
  3. Service-Control-Manager schließen

Um den Dienst wieder los zu werden, ist ein anderer Ablauf notwendig:

  1. Service-Control-Manager öffnen (OpenSCManager)
  2. Service öffnen (OpenService)
  3. DeleteService aufrufen
  4. Service Handle schließen
  5. Service-Control-Manager schließen

Wie bereits erwähnt sind alle Funktionen bereits in der Unit WinSvc implementiert.
Unsere Version von instsvc.exe soll universell einsetzbar sein. Es sollen beliebige Anwendungen als Service installiert werden können, daher müssen alle relevanten Daten als Parameter über die Kommandozeile übergeben werden.
Es ergeben sich daraus folgende Kommandozeilenschalter:

  1. -name: Symbolischer Name des Dienstes. (darf keine Leerzeichen enthalten)
  2. -display_name: Angezeigter Name des Dienstes. (darf Leerzeichen enthalten)
  3. -filename: absoluter Pfad und Dateiname der Anwendung
  4. -param: optionale Parameter der Anwendung
  5. -install: Dienst installieren
  6. -uninstall: Dienst deinstallieren

Das Grundgerüst für die Konsolenanwendung ist schnell erstellt. Der entsprechende Assistent in Delphi erledigt diese Aufgabe für uns.

Anschließend erstellen wir eine Funktion, um die Daten der jeweiligen Kommandozeilenschalter zu extrahieren.
Per Definition müssen die Kommandozeilenschalter wie folgt aufgebaut sein:

-Schaltername „Parameter“
Zwischen Schaltername und den Parameterdaten muss ein
Leerzeichen eingegeben werden.
Beispiel: -name „MyFirebirdServer“

Kommen wir nun zu den entscheidenden Funktionen zum Installieren bzw. Löschen eines Dienstes. Wie bereits erwähnt, sind alle erforderlichen Funktionen bereits in der Unit WinSvc implementiert.
Dienst registrieren:

Dienst löschen:

Zum Schluss erstellen wir aus den drei Unterprogrammen das Hauptprogramm.

Das war schon alles.