AGB  ·  Datenschutz  ·  Impressum  







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

Programmupdate bei geöffneter EXE

Ein Thema von haentschman · begonnen am 12. Aug 2020 · letzter Beitrag vom 15. Aug 2020
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 07:31
Ich habe mir sagen lassen, daß die EXE umbenannt werden kann und die neue EXE in den Ordner kopiert werden kann. Soweit so gut. Habe ich zig Mal auf dem Server mit der Batch ausprobiert. (Testinstanz) Gestern wollte ich das mit dem Original machen...Die Kopie "Zugriff verweigert" beim Löschen der Kopie. Die Kopie ließ sich auch nicht entfernen.
Das mit dem Löschen können von in Benutzung befindlichen Exe funktioniert seit 20 Jahren nach dem Zufallsprinzip.
Jedes Windows Update könnte dafür sorgen das es jetzt geht oder das es nicht mehr geht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 12:53
Ich habe mir sagen lassen, daß die EXE umbenannt werden kann und die neue EXE in den Ordner kopiert werden kann.
Das kommt drauf an, wie/wo die Datei geöffnet ist.

Eine EXE wird als MMF in den Speicher geladen und das File-Handle geschlossen.
Wenn die Datei dann z.B. auf einem lokalen Laufwerk liegt, dann lässt es sich umbenennen.

Ist dazwischen aber z.B. ein umgeleitetes Verzeichnis (andere Festplatte) oder gar ein Netzlaufwerk dazwischen, dann kommt es dran an, wie dort die Dateien weitergereicht werden.


Also ja, es geht, aber nicht immer.
Schon garnicht geht es, wenn ein DateiHandle (CreateFile, TFileStream, ...) existiert, z.B. um gewisse "Ressourcen" aus der Datei zu holen,
oder der nette Vierenscanner guckt grade rein, usw.

Am Einfachstes/minimalistischsten ist wohl die Batch im Temp-Verzeichnis.
Die Batch kann ich am Ende auch selbst löschen. (wobei es im Temp-Verzeichnis auch so irgendwann bestimmt gelöscht wird)


Zitat:
wenn einer die Umbenannte exe als Instanz hat kann man sie nicht nochmal umbenennen
Lange nicht mehr probiert (zuletzt im Win7)
Aber es ist schon möglich mehrmals umzubenennen und den Platz mit neuen Dateien zu belegen und zwischendrin auch mehrmals den selben Namen wiederverwenden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Aug 2020 um 12:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#3

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 12:56
Mit Batch-Skripten oder sonstigen ausführbaren Dateien im TEMP bzw. im gesamten Nutzerprofil wäre ich vorsichtig. Sowas knallt gerade in Unternehmen ganz schnell, wenn SRPs (Software Restriction Policies) oder AppLocker eingesetzt wird.

Grüße
Dalai
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 18:58
Hallo

ich mach das auch über eine starter Exe. die startet dann die eigentliche Exe und kopiert noch ein paar Dateien in lokale Verzeichnisse, hier erfolgt ein Abgleich über eine Versionsini. Die starter exe übergibt noch als Parameter das Verzeichnis und so passen auch alle Pfade. Komme gut damit klar und so auch sicherstellen, dass jeder user auf stand ist.

Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 07:16
Naja, braucht man eine "extra" starter exe wirklich?
Du kannst doch auch so vorgehen:
  1. Dein Programm prüft als allererstes (im Create) ob eine neue Version vorliegt (idealerweise auf einem Netzlaufwerk oder anders erkennbar).
  2. Wenn ein Update vorliegt, ein Update Programm starten, diesem die PID mitgeben, und das Programm beenden.
  3. Der Updater wartet bis die PID nicht mehr existiert, macht das Update und startet danach dann wieder das Programm.

Achtung: Auf ein Update der Update.exe muss vorher im Hauptprogramm geprüft und aktualisiert werden!

Nachteil: Das Programm muss lokal gestartet/installiert werden und kann nicht aus dem Netzlaufwerk heraus gestartet werden.
Vorteil: Das Programm startet schneller als über eine extra starter-exe (außer natürlich beim Update), da man nicht immer exe1 startet exe2 hat, sondern nur im Updatefall. Es können alle bis zum nächsten Start mit ihrer Version arbeiten.

Zusätzlich mal folgender Denkanstoß:
Lass das Programm doch wie oben in Punkt 1 beschrieben Regelmäßig auf Updates prüfen (z.B. alle Stunde). Wenn es eins gibt -> Hinweis an den Benutzer und Aufforderung zur Ausführung. Vorgehensweise wie oben.

Hätte den Vorteil, das du jederzeit ein Update zur Verfügung stellen könntest ohne dir Gedanken über dessen Einspielen machen zu müssen.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#6

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 07:39
Danke für die Infos...
@Moombas
So wie du es beschreibst, mache ich das bei meinen anderen Anwendungen.
Zitat:
Nachteil: Das Programm muss lokal gestartet/installiert werden und kann nicht aus dem Netzlaufwerk heraus gestartet werden.
...die einzige EXE liegt auf dem Server und wird von den Clienten von dort gestartet. Das kann ich momentan nicht ändern.

PS:
Ich habe mich für die Variante mit dem Launcher und den seperaten "Temp" Ordnern für die EXE entschieden. Mit unterschiedlichen Dateinamen gab es Probleme mit dem angehefteten Symbol der TNA.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:34 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-2025 by Thomas Breitkreuz