AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Programmupdate bei geöffneter EXE

Ein Thema von haentschman · begonnen am 12. Aug 2020 · letzter Beitrag vom 15. Aug 2020
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von Moombas
Moombas

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

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.000 Beiträge
 
Delphi 11 Alexandria
 
#22

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
Benutzerbild von Moombas
Moombas

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

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 09:56
Hmm, nicht ganz ernst gemeint:
Vorm Update-einspielen, das Netzlaufwerk trennen, dann fliegen alle aus dem Programm und danach Updaten.
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.000 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 10:44
Zitat:
Vorm Update-einspielen, das Netzlaufwerk trennen, dann fliegen alle aus dem Programm und danach Updaten
... hast du dann danach einen neuen Job für mich?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.357 Beiträge
 
Delphi 10.3 Rio
 
#25

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 11:52
... hast du dann danach einen neuen Job für mich?
Strippenzieher wäre dann passend
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.673 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 12:36
Zitat:
Strippenzieher
Beim Galgenbauer oder lieber beim Geigenbauer?

Man kann aber auch in der Systemverwaltung irgendwo die aktiven Freigabe-Verbindungen zu den Dateien trennen (virtuelles selektives Strippenziehen).

Wir haben die Möglichkeiten an all "unsere" Client-Programme, die über's Netzwerk auf die Freigabe zugreifen, einen Shutdown-Befehl zu schicken.
"Programm wird in {frei einstellbarer Zeit} geschlossen".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.357 Beiträge
 
Delphi 10.3 Rio
 
#27

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 12:47
Beim Galgenbauer oder lieber beim Geigenbauer?
Wenn er so drauf ist wie ich dann beim Geiger "Boss of BigBlocks"
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.073 Beiträge
 
Delphi 7 Professional
 
#28

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 12:58
Zitat von himitsu:
Wir haben die Möglichkeiten an all "unsere" Client-Programme, die über's Netzwerk auf die Freigabe zugreifen, einen Shutdown-Befehl zu schicken.
"Programm wird in {frei einstellbarer Zeit} geschlossen".
Das, in Kombination mit dem oben beschriebenen Wartungsfenster von 5:00 Uhr bis 5:30 Uhr, sollte doch eigentlich eine gangbare Lösungsmöglichkeit sein und ohne Launcher, Updater.exe, ... funktionieren.

Einen eigenen Job auf dem Server, auf dem die Exe liegt, einrichten, der jeden Morgen um 5:00 Uhr nachschaut, ob es eine neue Version gibt. Wenn ja, schickt er den Programmen einen Shutdown-Befehl, wartet ein bisserl, bis sich die Programme beendet haben und tauscht dann die Exe aus.

Muss das Programm überhaupt 24 Stunden laufen oder wäre es möglich, dass es sich grundsätzlich um 5:00 Uhr beendet und per Taskplaner (o. ä.) um 5:30 Uhr gestartet wird?

Oder:

Das Programm schaut grundsätzlich um 5:00 Uhr nach, ob's 'ne neue Version gibt. Wenn ja beendet es sich. Punkt.

Der Server schaut grundsätzlich um 5:15 Uhr nach, ob es eine neue Version gibt und tauscht die Exe aus, dies dürfte über den Taskplaner und eine Batchdatei relativ einfach realisierbar sein.

Muss ein laufendes Programm auf 'nem Client eigentlich nach dem Austausch der Exe wieder gestartet werden oder ist es ok, wenn es sich "einfach" beendet? Wenn's wieder benötigt wird, muss der User es am Client halt starten?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.673 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 13:09
Das Problem mit dem Austauschen ... im Prinzip, mag bei einer EXE gehen.

Bei uns gab es das auch mal (die Funktion für den Shutdown gab es zwar, aber machmal funktionierten die Notifications nicht *1 oder die EXE blieb beim Runterfahren hängen *2)
1) für den Fall wird nun im Programm successive geprüft, ob sich die Datei geändert hat und dann auch der Neustart angestoßen.
2) hier wird nun ein Thread gestartet, der nach x Sekunden ein TerminateProcess ausführt, wenn das Beenden hängt
Manuell hatte Cheffchen die Dateien in dem Verzeichnis gelöscht (INIs und Co. hoffentlich überprungen), was sich nicht löschen ließ umbenannt (*.exe > *.exe.del > weil manchmal Programme lange offen waren oder schnelle Updatefolge auch schonmal *.exe.del_DATUM)
später hatte ich das Vorgehen (bin da bisl faul) durch eine Batch ersetzt, die das automatisch macht. > Zips entpacken in Unterverzeichnis, Backup erstellen (hab ich mal eingeührt) > Dateien löschen und den Rest umbenennen > das Entpackte rüberkopieren (vorher entpackt, um die Dateiintigrität gleich mit zu prüfen, und damit der eigentlich Austausch möglichst schnell geht)

Bei einer EXE geht das noch,
aber bei dynamisch gekladenen Packages und DLLs+Packages raucht es schnell ab, wenn die dann in einem "alten" Programm geladen werden soll und nichts mehr zusammen passt.

Wenn es bei einer Neztfreigabe aber die aktive EXE nach dem Trennen die Verbindung zum "alten" Dateinamen neu aufbaut, anstatt mit einen Verbindungsfehler abzurauchen, dann läd sie eventuell falschen Code in ihren Speicher, wenn Windows vorher das Programm aus dem Speicher ausgelagert und Speicherseiten entladen hatte und der Programmierer kein IMAGE_FILE_NET_RUN_FROM_SWAP benutzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (13. Aug 2020 um 13:30 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
913 Beiträge
 
Delphi 2009 Professional
 
#30

AW: Programmupdate bei geöffneter EXE

  Alt 13. Aug 2020, 18:06
Wir machen das derzeit auch mit Launcher-EXE. Das sucht in seinem Ordner nach Programmen, die heißen wie es selbst nur mit Suffix.
Außerdem gibt es ein Programm, das ich auf dem Server starte und das automatisch eine mit Datum (und ggf. Buchstaben) benannte Kopie vom aktuellen Kompilat anlegt.

Das hat natürlich Nachteile im Sinne von Performance und wenn Leute das Anpinnen an die Startleiste nutzen würden, würde das auch nicht (lange) funktionieren.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf