AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi vorhandene VCL Anwendung als Windows Dienst

vorhandene VCL Anwendung als Windows Dienst

Ein Thema von AJ_Oldendorf · begonnen am 14. Mär 2025 · letzter Beitrag vom 17. Mär 2025
Antwort Antwort
Seite 1 von 2  1 2   
AJ_Oldendorf

Registriert seit: 12. Jun 2009
411 Beiträge
 
Delphi 12 Athens
 
#1

vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 07:35
Guten Morgen zusammen,
da die Suche aktuell hier nicht geht, frage ich einfach mal nach.
Ein Kunde von uns fragt an, ob wir unsere vorhandene VCL Anwendung (sehr umfangreich, viele Fenster, Multi-Threading-Anwendung, Verwendung von Indy für Netzwerkkommunikation etc) als Windows Dienst laufen lassen können, damit kein User am Betriebssystem angemeldet sein muss.
Mit Windows Diensten haben wir uns noch nie beschäftigt.
Daher ein paar Fragen dazu:
1) Kann man eine komplexe VCL-Anwendung als Windows Dienst laufen lassen?
2) Kann ein Dienst eine GUI-Oberfläche haben oder wie kann man entsprechende Einstellungen/Konfigurationen in der Software vornehmen?
3) Gibt es andere Mechanismen, um den Kunden seinen Dienst zu liefern und trotzdem die VCL Anwendung laufen zu haben?

Wenn ihr da Anregungen und Tipps habt, bin ich gespannt diese zu lesen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#2

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 08:13
Grundsätzlich kannst du eine VCL-Anwendung als Dienst laufen lassen. Allerdings hast du keine Möglichkeit (mehr, früher gab es interaktive Dienste), deren Oberfläche zu sehen. Deshalb macht das wenig Sinn, ohne diese zu modifizieren.

Zur Steuerung eines Dienstes bietet sich eine Trayanwendung an, die im einfachsten Fall nur aus dem Icon und einem Konfigurationsfenster besteht. Diese kann dann mit dem Dienst kommunizieren. Oder der Dienst stellt eine Webanwendung bereit, die aus Sicherheitsgründen nur lokal abrufbar sein sollte. Ich persönlich habe die Dienst-Anwendung so gestaltet, dass je nach Aufruf (Dienstkontext oder Desktop) entweder ein Dienst gestartet wird oder ein VCL-Fenster angezeigt wurde. So konnte ich dort dann auch direkt Knöpfe zur Installation und Deinstallation des Dienstes anbieten.

Ein erster Umbau der Anwendung muss gar nicht so aufwendig sein, wenn die Oberflächenlogik einigermaßen von der Programmlogik getrennt ist. Wenn sich die Funktionalität natürlich um das Hauptfenster herum dreht, sprich dort der Dreh- und Angelpunkt ist, ist der Aufwand höher.

Ich würde in jedem Fall dazu raten, die Anwendung so umzubauen, dass sie ohne ein sichtbares Fenster ihre Arbeit verrichten kann. Sie kann durchaus Fenster unter der Haube nutzen, solange sie nicht sichtbar sein müssen. Das ist zwar nicht ideal, aber im ersten Schritt nicht schlimm.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.213 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 10:00
Zitat:
viele Fenster
D.h. eine Anwendung die normale Anwender interaktiv bedienen?
Oder ist das nur Konfig und der normale Ablauf ist das "Nach knopfdruck" alles automatisiert ablauft und man nur "hin und wieder draufschaut, ob alles passt"

Wenn 1 -> Lass es mit dienst und überlege ob die Anwendung nicht irgendwann mal sinnvoll as WebAnwendung im Browser anbieten willst
Wenn 2 -> 2 Exe erstellen. Erste zur Konfig und 2te als Dienst ohne GUI.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
411 Beiträge
 
Delphi 12 Athens
 
#4

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 12:01
Also es handelt sich um eine Anwendung, die vollständig über eine VCL bedienbar ist (eine Maschine lässt sich damit steuern). An dieser Anwendung sind über Indy Sockets Stationen angeschlossen, die mit dieser Anwendung kommunizieren. Die ganze GUI Eingabe lässt sich auch an den externen Stationen durchführen, Ausführendes Organ ist aber die Haupt VCL Anwendung (die jetzt als Dienst laufen soll).

Also kurz zusammengefasst, ich kann eine VCL Anwendung als Dienst laufen lassen, habe aber KEINE Oberfläche mehr. Richtig?
Das heißt, wenn meine externen Stationen alle ausgeschaltet wären oder das Netzwerk nicht geht, kann ich die Haupt-VCL Anwendung nicht mehr bedienen?

Noch als Hintergrund, die Anwendung ist als multithreading ausgelegt und versucht so echtzeitnah zu arbeiten wie möglich (ich weiß, Windows und Echtzeitfähigkeit...-> darum geht es hier aber nicht)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.213 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 13:36
Zitat:
... Die ganze GUI Eingabe lässt sich auch an den externen Stationen durchführen ...
... Das heißt, wenn meine externen Stationen alle ausgeschaltet wären oder das Netzwerk nicht geht, kann ich die Haupt-VCL Anwendung nicht mehr bedienen?
Kannst du nicht eine "pseudoexterne Station" lokal laufen lassen, die mit dem eingeloggten User gestartet werden kann?
Dann hättest du ja die Eingebemöglichkeit?
Oder ist diese "externe Station" kein normales Windows-programm?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
978 Beiträge
 
Delphi 6 Professional
 
#6

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 13:37
Hmm...

Einfache Fragen:
Muss beim Starten der Anwendung irgendwas durch einen User gemacht werden (Anmelden, einen 'Start' Knopf klicken)?
Zeigt die Hauptanwendung (Dienst) im Lauf Meldungsfenster oder benötigt direkte Eingaben von einem User?

Wenn Du diese Fragen mit Ja beantworten musst, dann ist die Anwendung nicht als Dienst verwendbar!

Es kann nur eine (normale) Applikation sinnvoll als Dienst installiert werden, wenn diese ohne Interaktion startet und dann ohne Meldungsfenster läuft.

Hierbei ist es unerheblich, was diese Anwendung dann macht
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.109 Beiträge
 
Delphi 2009 Professional
 
#7

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 13:41
Warum Dienst und keine Aufgabe?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#8

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 14:37
Du kannst den nicht-visuellen Teil als Dienst laufen lassen und für den visuellen Teil auf dem Haupt-PC denselben Client laufen lassen wie auf den Stationen (per localhost mit dem Dienst verbunden).

Damit kann (und sollte) der Dienst von allen visuellen Forms befreit werden. Also eine klassische Client-Server Architektur.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
vnvjan

Registriert seit: 20. Jun 2007
31 Beiträge
 
Delphi 12 Athens
 
#9

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 16:04
Vlt damit probieren: https://nssm.cc/
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.029 Beiträge
 
Delphi 12 Athens
 
#10

AW: vorhandene VCL Anwendung als Windows Dienst

  Alt 14. Mär 2025, 16:43
Hallo,

wenn es nur darum geht, dass niemand unbefugtes in dem UI "rumfummelt" einfach einen
Sperren Button einbauen der einen Modalen passwort Dialog anzeigt. Nur wer das "Admin Passwort"
für die Anwendung kennt kann den Dialog dann schließen und amit arbeiten.

Wäre eine eher kleine Änderung.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz