Ich habe einen Dienst Programmiert. Nun habe ich ein Updateprogramm für diesen Dienst geschrieben dass folgendes tut:
- Dienst beenden
- alte myservice.exe überschreiben
- Dienst starten
Wenn ich das Programm per doppelklick starte funktioniert das auch wunderbar.
Jetzt überprüfe ich, wenn der Dienst gestartet wird, ob der Dienst aktuell ist. Wenn nicht, wird per ShellExecute der Updater gestartet...
Der Updater wird zwar gestartet, dann wirft der Dienst aber gleich ne Fehlermeldung aus...
Meine Vermutung: Da der Updater vom Dienst gestartet wird, kann ich den Dienst dann nicht mehr mit dem Updater beenden weil er sich dann selber beenden müsste!?!?! - ne, was mache ich falsch?!
PS: Der Dienst läuft als System.
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
Bei Deinem Problem an sich kann ich Dir ohne Sourcen oder zumindest Binaries nicht wirklich helfen. Aber Du solltest Deinen Updatevorgang überdenken.
Prinzipiell sollte sich der Service selbst updaten. Dazu ist nichts weiter zu tun als sich selbst umzubenennen, die neue Service Datei an die alte Position zu kopieren und sich neu zu starten.