AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst aktualisieren

Ein Thema von MacKleriker · begonnen am 24. Feb 2009 · letzter Beitrag vom 26. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
MacKleriker

Registriert seit: 6. Feb 2008
13 Beiträge
 
#1

Dienst aktualisieren

  Alt 24. Feb 2009, 12:33
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
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 13:17
Dienst beenden
File ersetzten
Dienst starten
Fertig

Allerdings ja keinen Namen im Dienst ändern

Gruss
wo
  Mit Zitat antworten Zitat
MacKleriker

Registriert seit: 6. Feb 2008
13 Beiträge
 
#3

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 13:47
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!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 14:11
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 von MacKleriker:
-der Dienst existiert lokal im Windows-Verzeichnis
Warum muss der Dienst auf das Windowsverzeichnis zugreifen bzw. dort liegen?
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.
  Mit Zitat antworten Zitat
MacKleriker

Registriert seit: 6. Feb 2008
13 Beiträge
 
#5

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 14:22
Jop,
und wie soll dann diese Batch aufgerufen werden?
Das Update soll ja automatisch anlaufen!!


Zitat von nahpets:
Warum muss der Dienst auf das Windowsverzeichnis zugreifen bzw. dort liegen?
Es ist ein Unterverzeichnis im Windows-Verzeichnis.
Dort liegen alle Computerspezifischen Einstellungen des Programms...


Danke schonmal!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 14:30
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.
  Mit Zitat antworten Zitat
MacKleriker

Registriert seit: 6. Feb 2008
13 Beiträge
 
#7

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 14:40
Ja, aber die Batchdatei wird ja wiederum mit den Rechten von "Netzwerkdienst" aufgerufen und kann nicht in das Windowsverzeichnis zugreifen!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 15:03
Hallo,
Zitat von MacKleriker:
Ja, aber die Batchdatei wird ja wiederum mit den Rechten von "Netzwerkdienst" aufgerufen und kann nicht in das Windowsverzeichnis zugreifen!
ja, irgendwie hast Du recht, wir laufen hier wohl momentan in eine Rekursion.

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:
@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
Über die "Eleganz" dieser Lösung wollen wir uns lieber nicht streiten

Ansonsten schau bitte mal, ob Du mit CreateProcess nicht weiter kommst.
  Mit Zitat antworten Zitat
MacKleriker

Registriert seit: 6. Feb 2008
13 Beiträge
 
#9

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 15:10
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...

Vielen Dank!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Dienst aktualisieren

  Alt 24. Feb 2009, 15:23
Hallo,
Zitat von MacKleriker:
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...

Vielen Dank!
was willst Du damit sagen, dass der Benutzer, unter dessen Anmeldung der Dienst läuft, den Dienst nicht beenden und starten darf?
Dann müsstest Du wohl probieren, über Deinen Updater mit CreateProcess einen weiteren Prozess zu starten, dem beim Start die entsprechenden Benutzerrechte mitgegeben werden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz