Druckserver als Windows Dienst

In diesem Forum können Wünsche geschrieben werden, die sich Benutzer für zukünftige OrderSprinter-Versionen wünschen.
Kurdirektor

Druckserver als Windows Dienst

Beitrag von Kurdirektor »

Hallo Stefan,

ein Wunsch aus der Praxis. Der Printserver unter Windows läuft auf einem PC, der auch von den Kellnerinnen für andere Tätigkeiten benötigt wird. Jetzt kommt es vor, dass die Mädels den Printserver schließen, um z.B. Hotelzimmer einzugeben. Damit ist der ganze Bestellungprozess natürlich blockiert.
Schön wäre es, den Printserver als Dienst zu starten, dann kann dieser nicht so ohne weiteres ausgeschaltet werden.

Ist aber ein Luxusproblem und nicht dringend, da die Kollegen in der aktuellen Testphase sehr begeistert und beeindruckt von der Software sind.

Aloha
Kurdirektor
pichel
Administrator
Beiträge: 1429
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Druckserver als Windows Dienst

Beitrag von pichel »

Hallo,

sollte doch per instsrv.exe möglich sein.

Aber ich würde das Programm einfach per Kommandozeilenargument ("/invisible") in den Hintergrund setzen. Dann kann man es bei Bedarf wieder in den Vordergrund holen, um vielleicht Einstellungen zu ändern.

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
udgesbou
Beiträge: 102
Registriert: Fr 15. Jul 2016, 21:57

Re: Druckserver als Windows Dienst

Beitrag von udgesbou »

Servus,
wenn ich den Druckserver allerdings in Windows starte, dann öffnet sich das Fenster und dann muss ich ja um Fenster unten noch auf die "Start"-Schaltfläche klicken, damit der Server startet.
Ist es auch umsetzbar, dass das alles beim Start von Windows geschieht, ohne dass man noch etwas klicken muss?


Grüße
pichel
Administrator
Beiträge: 1429
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Druckserver als Windows Dienst

Beitrag von pichel »

Hallo,

man kann den Windows-Printserver schon beim Aufruf mit einigen Parametern starten, z.B.:

Code: Alles auswählen

OrderSprinterPrintserver.exe /start /config:"c:\config.cfg"
In dem Fall wird die Abarbeitung der Druckjobs sofort gestartet (Parameter /start) und die Konfigurationsdatei "C:\config.cfg" verwendet.

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
udgesbou
Beiträge: 102
Registriert: Fr 15. Jul 2016, 21:57

Re: Druckserver als Windows Dienst

Beitrag von udgesbou »

Was müsste denn dann in der "config.cfg" stehen, weil die habe ich nicht?

Ich habe nur die standartmäßig erstellte "POSPrinterServer.xml"


Grüße
pichel
Administrator
Beiträge: 1429
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Druckserver als Windows Dienst

Beitrag von pichel »

In der Oberfläche siehst du, welche Konfigurationsdatei inklusive Pfadangabe verwendet wird. Am besten gibst du diese Datei an.

Du kannst auch eine beliebige noch nicht existierende Datei angeben, dann wird sie beim ersten Aufruf des Printservers angelegt (insofern das Verzeichnis beschreibbar ist), nur musst du dann die Konfiguration wieder neu vornehmen.
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
udgesbou
Beiträge: 102
Registriert: Fr 15. Jul 2016, 21:57

Re: Druckserver als Windows Dienst

Beitrag von udgesbou »

Habe alles super hinbekommen, habe einfach auf die bestehende "POSPrinterServer.xml verwiesen, der Druckserver startet jetzt wie gewünscht beim Start des Rechners, danke :mrgreen:


Grüße
Metafrage

Re: Druckserver als Windows Dienst

Beitrag von Metafrage »

Hallo,
entschuldigt bitte, dass ich den Beitrag noch einmal ausgrabe.

Benötigt die Serveranwendung unbedingt die Oberfläche?
Zur Konfiguration ist es hilfreich, wenn dann aber alles läuft, kann es halt passieren, das einer unbeabsichtigt das Fenster schließt...

Der Tipp mit dem Parameter hat bei mir (Windows 10 - 32bit) jedenfalls geholfen. Das Fenster verschwindet komplett und kann auch nicht mehr in den Vordergrund geholt werden. Sprich es verhält sich wie ein Dienst :)

Falls Stefan das Programm ohne Oberfläche als Komandozeilenprogramm kompiliert, könnte man den Dienst/Service mit folgendem Befehl in einer mit Administratorrechten erstellen Konsole erstellen. (Der zweite Befehl löscht den Dienst wieder.) In Windows 10 klappt das nicht, da von Windows aus sämtliche Fenster blockiert werden. Das hat zur Folge, das sich das Programm beim starten aufhängt.

Code: Alles auswählen

sc create OrderSprinterPrinterService start= auto binPath= ""C:\PfadzuExe\OrderSprinterPrintserver.exe" /invisible /start "/config:C:\PfadzuConfig\POSPrinterServer.xml""
sc delete OrderSprinterPrinterService
Gruß,
Michael
pichel
Administrator
Beiträge: 1429
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Druckserver als Windows Dienst

Beitrag von pichel »

Hallo Michael,

Tests mit Windows 10 habe ich noch nicht durchgeführt, da ich privat meist Linux nutze und nur ganz selten ein Windows 7 in einer VM starte (z.B. zum Programmieren des Printservers). Mit Windows 10 muss ich zwar beruflich ab und zu arbeiten, aber es macht mir so gar keinen Spaß - und nun ja, da es ein Hobbyprojekt ist, bin ich in der glücklichen Lage mir aussuchen zu dürfen, welches OS ich unterstütze... ;)

Trotzdem ist deine Anregung natürlich sinnvoll, denn ein Service bietet natürlich einige Vorteile. Leider stecke ich in der Windows-Programmierung nicht so tief drin, darum verzeihe mir die Frage: Kann ich eine Applikation gleichermaßen als Service und als GUI-Applikation kompilieren, die dann auch auf einem Win 10 als Service lauffähig ist (z.B. per Parameter, der den Aufruf der GUI verhindert) - oder schaut sich Win 10 die gelinkten Libs an und verweigert die Erstellung als Service, sobald GUI-Libs eingebunden sind? Ich möchte vermeiden, für GUI und Service unterschiedliche Executables zu erstellen, denn das muss ja auch gewartet, dokumentiert und von Leuten in der Gastronomie ohne erweiterte Systemkenntnisse verstanden werden...

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Metafrage

Re: Druckserver als Windows Dienst

Beitrag von Metafrage »

Hallo Stefan,

da habe ich mich verdrückt ausgekehrt... :)
Der Service lässt sich mit oben genannten Befehl schon erzeugen (müsste auch auf den vorherigen Windows Versionen möglich sein.), wenn aber der Dienst gestartet wird, gibt es die Fehlermeldung 'der Dienst reagiere nicht/falsch/...'. Der 'OrderSprinterPrintserver' taucht dann zwar in den Prozessen auf, hat sich aber selbst 'aufgehängt', da er am Punkt 'lade GUI' nicht weiterkommt, da von Windows geblockt. Die eingebundenen Libs sollten eigentlich nicht stören.

Zur Frage:
Uff, als ich dass letzte mal ne Gui in Windows programmiert habe, habe ich das umgedreht gemacht, eine Konsolenanwendung, die die Fenster selbst erzeugt, ohne extra Bibliothek oder Framework. (Wollte wissen wie das geht...) Die Konsolenanwendung konnte man dann mit dem Befehl problemlos in einen Service auslagern. :)
Spaß beiseite, mein Bruder hat das in C# mal gemacht: einen Dienst erstellt, welcher über die Taskleistensymbole gesteuert eine Gui zum Vorschein brachte, und sonst nicht sichtbar war, den müsste ich diebezüglich mal fragen...

Gruß,
Michael
Antworten