Announcement

Collapse
No announcement yet.

Windows NT Dienst mit TService (Mehrfachinstallation)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windows NT Dienst mit TService (Mehrfachinstallation)

    Guten Tag,

    ich habe einen Dienst mit Hilfe der Komponente TService geschrieben. Es handelt sich hierbei um einen interaktiven Dienst (über ein TrayIcon kann eine Oberfläche geöffnet werden).

    Eine weitere Anforderung an den Dienst wäre, dass dieser mehrfach auf einem Server läuft (wobei die EXE´s in unterschiedlichen Verzeichnissen liegen). Mir war es nicht möglich den Dienst mehrfach zu installieren.

    Folgendes habe ich versucht:
    1. Über den "/install Parameter": Hier wird der Dienst einmalig installiert und kann gestartet werden, allerdings bei einer weiteren Installation bekomme ich die Fehlermeldung „Dienstname bereits vorhanden!“.
    2. Mit Hilfe des "MS-Tools SRVINSTW.EXE": Mehrfache Installation ohne Probleme möglich, allerdings konnte ich keinen Dienst starten.

    Ist es möglich einen Delphi-Dienst mehrfach zu installieren und auszuführen?

    Danke für die Hilfe,
    Stefan Lohr

  • #2
    Moin Stefan,

    Eine Möglichkeit ist, den Namen bei der Installlation dynamisch zu setzen:

    procedure TService1.ServiceBeforeInstall(Sender: TService);
    begin
    Self.Name := '_Service' + FormatDateTime('yymmddhhnnsszzz', Now);
    Self.DisplayName := Self.Name;
    end;

    Dann kannst Du sogar den Dienst zweimal im gleichen Verzeichnis installieren.

    VORSICHT: UNINSTALL IST DANN PROBLEMATISCH !!!

    Gruß,

    Geer

    Comment


    • #3
      Danke für die Antwort.

      Dies hätte ich schon versucht, allerdings startet bei mir anschließend der Service nicht. Ist das selbe Problem, wie wenn ich den Dienstnamen mit SRVINSTW.EXE ändere.

      Gruß,
      Stefa

      Comment


      • #4
        Kurze Frage: Wieso benötist Du den Dienst mehrfach installiert

        Comment


        • #5
          Kurzform:
          Ich benötige den Dienst mehrfach installiert, weil es sich hierbei um eine Kundenanforderung handelt.

          Langform:
          Wir haben verschiedene Verarbeitungsprogramme (Win32 Applikation), wobei jedes Verarbeitungsprogramm seinen speziellen Bereich hat (z.B. Dateien ins System einbuchen, Lieferscheine schreiben, Modullisten erstellen etc.). Die Verarbeitungsprogramme kommunizieren untereinander über Tabellen in der Datenbank.

          Wir haben verschiedene Kunden, bei denen wir diese gesamte Kette im Einsatz haben. Einige der Kunden haben mehrere dieser Ketten für den einen bestimmten Bereich (Produktionslinie) im Einsatz. Die Applikationen werden hierbei auf Workstations ausgeführt.

          Nun möchte ein Kunde die Workstations durch einen leistungsfähigen Appliaktionsserver (inkl. Hot-Standby-Server) ablösen. Auf dem Server soll sich keiner Anmelden, und deshalb möchte er die ganzen Applikationen als Dienste haben.

          Es ist allerdings so, dass der Kunde mehrere dieser Verarbeitungsketten für viele Produktionslinien betreibt, und diese alle auf dem Server laufen lassen möchte.

          Thread sind keine Lösung, da der Kunde auf keinen Fall die Gefahr eingehen möchte, dass durch einen Programmfehler (welche nur bei Produktionslinie 1 auftritt) auch die Verarbeitung von den Restlichen 5 Produktionslinien gestoppt wird (falls der Thread den Service abschießt)

          Comment


          • #6
            OK.

            Dann geh halt einen Schritt weiter und lass für jede Produktionslinie eine VM-Instanz mit einem eigen Windows laufen. Wenn nun ein Windows abraucht sind die anderen nicht betroffen (unabhängig von deiner Anwendung)

            Comment


            • #7
              Diesen Vorschlag hätten wir auch schon gemacht, allerdings war unser Kunde nicht erfreut darüber.

              der Kunde möchte mehrmals die EXE als Dienst starten. Er habe dies auch mit C++ Applikationen gemacht, und dort geht dies ohne Probleme, dass ich mehrere Dienste von der selben EXE einbinde.

              Ist es nicht möglich einen Delphi Dienst mehrmals zu installieren, so dass er noch funktionieren würde

              Comment

              Working...
              X