Druckserver als Windows Dienst
- 
				Kurdirektor
 
Druckserver als Windows Dienst
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
			
			
									
						
										
						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
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
			
			
									
						
							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)
			
						Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Re: Druckserver als Windows Dienst
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
			
			
									
						
										
						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
Hallo,
man kann den Windows-Printserver schon beim Aufruf mit einigen Parametern starten, z.B.:
In dem Fall wird die Abarbeitung der Druckjobs sofort gestartet (Parameter /start) und die Konfigurationsdatei "C:\config.cfg" verwendet.
Gruß,
Stefan
			
			
									
						
							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"Gruß,
Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
			
						Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Re: Druckserver als Windows Dienst
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
			
			
									
						
										
						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
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.
			
			
									
						
							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)
			
						Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Re: Druckserver als Windows Dienst
Habe alles super hinbekommen, habe einfach auf die bestehende "POSPrinterServer.xml verwiesen, der Druckserver startet jetzt wie gewünscht beim Start des Rechners, danke  
 
Grüße
			
			
									
						
										
						Grüße
- 
				Metafrage
 
Re: Druckserver als Windows Dienst
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.
Gruß,
Michael
			
			
									
						
										
						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
Michael
- 
				pichel
 - Administrator
 - Beiträge: 1429
 - Registriert: So 13. Sep 2015, 19:48
 - Wohnort: Hamburg
 - Kontaktdaten:
 
Re: Druckserver als Windows Dienst
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
			
			
									
						
							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)
			
						Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
- 
				Metafrage
 
Re: Druckserver als Windows Dienst
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
			
			
									
						
										
						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