![]() |
Dienst aktualisieren
Hallo Leute,
ich hätte nochmal eine Frage in Bezug auf einen Dienst... Was ist die beste (am einfachsten für den Kunden) Möglichkeit einen TService (TServiceApplication) zu updaten?? Wie macht man das normalerweise (wenn möglich voll automatisch)? Vielen Dank |
Re: Dienst aktualisieren
Dienst beenden
File ersetzten Dienst starten Fertig Allerdings ja keinen Namen im Dienst ändern Gruss wo |
Re: Dienst aktualisieren
OK, das hört sich relativ logisch an.
Nun die eintscheidenten Punkte: -die neue Version ist in einem Netzwerkverzeichnis -die alte Version soll automatisch aktualisiert werden -der Dienst existiert lokal im Windows-Verzeichnis Jetzt die Problematik, auf die ich gestoßen bin: Ich kann den Dienst als User "Netzwerkdienst" laufen lassen, somit hat dieser dann Rechte um auf den UNC Pfad zuzugreifen. Der Dienst kopiert einen Updater (dazu später mehr) und die neue Version auf das Verzeichnis C:\. Er startet jetzt den Updater. Der Updater soll jetzt den Dienst beenden die Exe ersetzen und wieder starten. Problem ist, dass der Updater vom Dienst geerbt hat und somit auch unter "Netzwerkdienst" läuft und dadurch nicht auf das Win-Verzeichnis zugreifen kann. Ich habe jetzt auch schon versucht den Updater unter einen anderen Benutzer laufen zu lassen, aber das geht anscheinend auch nicht. (Versucht wurde "System") Welche Möglichkeit gibt es noch? Wie gesagt, gefordert ist: -Die neue Version vom Dienst taucht irgendwann mal in einem Netzwerkverzeichnis auf -Dies soll er merken und sich selbst Updaten -Und zuguter letzt, der Dienst kann außerdem auf mehreren Rechnern laufen. Vielen Dank! |
Re: Dienst aktualisieren
Hallo,
per Batch könntest Du das so lösen, Dein Updater müsste halt diese Batch aufrufen.
Code:
@ECHO OFF
net stop DienstName net use \\rechnername\freigegebenesVerzeichnis\ /user:Domaene\Benutzername kennwort copy \\rechnername\freigegebenesVerzeichnis\Dienst.exe c:\Support\Dienst.Exe net use \\rechnername\freigegebenesVerzeichnis\ /delete net start DienstName Zitat:
Wir haben unsere Dienste... alle in einem Supportverzeichnis liegen und halten sie so getrennt von den windowseigenen Programmen. Auf das Supportverzeichnis können wird die Rechte so vergeben, wie es für unsere Aufgaben geeignet erscheint. |
Re: Dienst aktualisieren
Jop,
und wie soll dann diese Batch aufgerufen werden? Das Update soll ja automatisch anlaufen!! Zitat:
Dort liegen alle Computerspezifischen Einstellungen des Programms... Danke schonmal! |
Re: Dienst aktualisieren
Hallo,
die Batch kann Dein Updater aufrufen. Das was die Batchdatei macht, müsste eigentlich auch alles über die Windows-API zu erledigen sein, da kann ich die aber nicht sagen, was mit welcher Funktion zu realisieren ist. |
Re: Dienst aktualisieren
Ja, aber die Batchdatei wird ja wiederum mit den Rechten von "Netzwerkdienst" aufgerufen und kann nicht in das Windowsverzeichnis zugreifen!
|
Re: Dienst aktualisieren
Hallo,
Zitat:
Das wollen wir dann doch mal lieber schnell abstellen: Mache auf das Verzeichnis des Dienstes eine Freigabe, z. B.: DienstName$. Durch das $ am Ende wird es eine versteckte Freigabe, die im Explorer nicht zu sehen ist.
Code:
Über die "Eleganz" dieser Lösung wollen wir uns lieber nicht streiten :wink:
@ECHO OFF
net stop DienstName :REM Laufwerksverbindung mit Anmeldung an "Fileserver" net use \\rechnername\freigegebenesVerzeichnis\ /user:Domaene\Benutzername kennwort :REM Laufwerksverbindung auf uns selbst mit anderer Anmeldung net use \\%COMPUTERNAME%\LokaleFreigabe$ /user:Domaene\Benutzername kennwort copy \\rechnername\freigegebenesVerzeichnis\Dienst.exe \\%COMPUTERNAME%\LokaleFreigabe$\Dienst.Exe net use \\rechnername\freigegebenesVerzeichnis\ /delete net use \\%COMPUTERNAME%\ObenGenannteFreigabe$ /delete net start DienstName Ansonsten schau bitte mal, ob Du mit CreateProcess nicht weiter kommst. |
Re: Dienst aktualisieren
Man kann doch den Dienst gar nicht über "Netzwerk" installieren (bzw. starten) oder?
Als ich das vor ein paar Tagen probiert hab, ging es jedenfalls nicht wirklich... :gruebel: Vielen Dank! |
Re: Dienst aktualisieren
Hallo,
Zitat:
Dann müsstest Du wohl probieren, über Deinen Updater mit CreateProcess einen weiteren Prozess zu starten, dem beim Start die entsprechenden Benutzerrechte mitgegeben werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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