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 1 von 2  1 2      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 07:22
Das ist doch Murks. Entweder stellt die Anwendung beim Start fest ob sie auf einem Netzlaufwerk oder lokal liegt. Wenn nicht, kopiert sie sich in irgendein Temp-Verzeichnis und startet sich da.

Oder du machst einen kleines "Launcher"-Programm das nichts anderes tut als die jeweils neuste .exe-Datei zu starten. Du kannst also direkt neue Versionen dort ablegen und hast den Vorteil dass alte Versionen weiterhin bestehen bleiben könnten.

Code:
\\myServer\myFolder
  Mein Programm (hier klicken).exe
  app_1.0.5.exe
  app_1.0.6.exe

usw.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:10
Moin...
Zitat:
Nach dem Umbenennen ist die EXE_ trotzdem noch in Benutzung und kann erst gelöscht werden, wenn der letzte Benutzer "raus" ist.
aber auch logisch.
Zitat:
Ich denke, es lässt sich nicht vermeiden, die geöffneten Dateien zu schließen.
Mist...Wieder Arbeit umsonst.

Ich habe einen Updater welchen ich noch einbauen kann. Da müßten die Instanzen aber lokal liegen. Und genau das ist derzeit nicht möglich. Deswegen hatte ich nach einer Alternative gesucht.

Ich hatte noch einen Versuch die Instanzen von außen zu entfernen (Batch als Admin über Link):
Code:
echo off
taskkill /s SERVER /U USER /p PASSWORT /f /im "xxx.exe"
...irgendetwas wollte da auch nicht.

Zitat:
Ich müsste beim 2. Mal die EXE dann anders benennen (z.B. EXE_2).
Eine Idee hätte ich noch. Ich kann damit leben, daß die Kopien der Instanzen in einem separatem Ordner (exe_temp) liegen. (xxx.exe_1 ... xxx.exe_999 oder so) Ich bräuchte nur eine Batch, die prüft ob der Dateiname xxx.exe_? noch "frei" ist. Jeden Sonntag kann dann das exe_temp, nach dem entfernen aller Instanzen, bereinigt werden.

Könnte ihr mir helfen die Batch zu schreiben? Da bin ich zu lange raus...

Geändert von haentschman (12. Aug 2020 um 08:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:13
Wir machen solche Aktionen beim nächtlichen Backup, wo ja eigentlich eh alle offline sein sollten.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:15
Zitat:
wo ja eigentlich eh alle offline sein sollten.
Software 365/24 in Benutzung... Bei Bedarf (Absprache): Je Tag zwischen 05:00 und 05:30 Update einspielen. Das wollte ich nicht mehr. Auch die Handgriffe sind mir zu manuell. (Anmelden(ich mache Update), Remotedesktop, geöffnete Dateien schließen, Explorer, manuelles Kopieren, Abmelden(Update fertsch))

Der Build Process ist automatisiert...bis auf das Tauschen der EXE.

Geändert von haentschman (12. Aug 2020 um 08:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:41
Hab grad was gelesen aber kann es nicht prüfen.
Dein "updater.exe" oder "update.bat" kann deine target.exe nicht löschen da es geöffnet ist (prozess target.exe läuft)
Aber anstelle target.exe zu löschen und eine neue target.exe da hin kopieren, soll wohl ein umbenennen funktionieren (target.exe -> target.exe.bak) während target.exe läuft.
Nun die neue updated_target.exe nach target.exe kopieren.
fertig.

sobald der pc neu startet sollte nun die aktualisierte version starten.


Meine Winapi Recherche dazu:
MoveFileExW mit "MOVEFILE_DELAY_UNTIL_REBOOT" Nutzung.
Aber ob das über Netzlaufwerke klappt = kA.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:36
Ich verstehe nicht warum du es dir so schwer machst. Keep it simple, stupid.

Oder du machst einen kleines "Launcher"-Programm das nichts anderes tut als die jeweils neuste .exe-Datei zu starten. Du kannst also direkt neue Versionen dort ablegen und hast den Vorteil dass alte Versionen weiterhin bestehen bleiben könnten.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:41
Zitat:
Ich verstehe nicht warum du es dir so schwer machst. Keep it simple, stupid.
Weil in der EXE noch ein hardgecodeter Pfad drin ist und der auf einen Unterordner des Programmverzeichnisses zeigt mit ca. 180GB Daten.

Die Trennung (Daten/EXE) ist schon beschlossene Sache...Aber alles kann ich nicht auf einmal.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 09:25
Zitat:
Ich verstehe nicht warum du es dir so schwer machst. Keep it simple, stupid.
Weil in der EXE noch ein hardgecodeter Pfad drin ist und der auf einen Unterordner des Programmverzeichnisses zeigt mit ca. 180GB Daten.

Die Trennung (Daten/EXE) ist schon beschlossene Sache...Aber alles kann ich nicht auf einmal.
Hmm, ich bin da beim Schönling und verstehe Dein Problem nicht...

Wenn die Nutzer MyProg.Exe starten kann dieses die höchst verfügbare Datei MyProg000.exe ... MyProg999.exe suchen, diese starten und sich selbst beenden.

Der Launcher kann sogar ältere Versionen versuchen zu löschen (was halt fehl schlägt, sofern noch Instanzen laufen).

So brauchst Du nur eine neue Version in den Pfad legen (nach Eintragung einer neue "Dateinummer") und der Rest geht automatisch.

Wenn natürlich eine neue Datenstruktur oder neue Unterordner vorausgesetzt werden, würde das nicht mehr reichen. Aber das wäre ja bei allen Lösungen so.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
383 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 10:51
Mein Deployvorgang sieht so aus, dass ich die neue Programmversion unter einem (festen) neuen Namen in dem Verzeichnis der ursprünglichen Exe ablege.
Dann startet per Aufgabenplanung morgens um 04.00 Uhr ein kleines Batchskript, dass bei Vorhandensein der neuen Programmversion alle Instanzen der alten Exe mit Taskkill beendet und dann die alte Exe in EXENAME_JJJ_MM_TT.exe umbenennt und die Neue dann in den alten Namen umbenennt.
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
144 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Programmupdate bei geöffneter EXE

  Alt 12. Aug 2020, 08:42
Wäre ein Softlink denn keine Alternative? Da kannst du einfach das Ziel des Links ändern.
  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 15:24 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