AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Programm-Update: Dateien löschen

Ein Thema von Gausi · begonnen am 21. Jan 2023 · letzter Beitrag vom 24. Jan 2023
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
802 Beiträge
 
Delphi 11 Alexandria
 
#1

Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 11:00
Ich stehe vor der etwas blöden Situation, dass beim nächsten Update meines Players (ist noch ne ganze Weile hin, aber der problematische Teil in dem Kontext ist fast fertig) ein paar Dateien überflüssig werden. Die sollen dann weg. Problem ist, dass ich einerseits eine Setup.exe habe (da kann ich ja bei InnoSetup beim Installieren eine Liste von Dateien angeben, die ggf. vorher gelöscht werden sollen), aber auch ein einfaches Zip-Archiv zum entpacken und loslegen (portable Software, ohne Installation). Wenn der User da einfach das neue Archiv in das vorhandene entpackt, bleiben die alten Dateien natürlich erhalten.

Ich sehe da irgendwie keine wirklich schöne Lösung.
  • Vorhandene Dateien durch Dummy-Dateien überschreiben (z.B. Bilder mit 1x1 Pixel, PDF mit "Outdated" als Inhalt) ist blöd - dann schleppe ich ständig Datenmüll auch im Zip/Setup mit.
  • Vorhandene Dateien im Setup löschen lassen (und in der Zip-variante einfach beibehalten), ist blöd, weil einige Infos dann veraltet und verwirrend sind (z.B. eine überflüssig gewordene veraltete PDF)
  • Oder ist hier das "Best practice", dem Zip-Anwender auf die Komplikationen hinzuweisen und ihm erklären, dass er einen bestimmten Ordner im Programm-Verzeichnis vor dem Upgrade löschen sollte? Und im Code die Verwendung der Dateien so anpassen, dass die alten Dateien den Programmablauf nicht stören können, falls sie doch da sind? Aber liest der normale Anwender sowas?
Wie macht ihr das?
The angels have the phone box.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#2

AW: Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 12:13
Du könntest eventuell eine Batchdatei mit ins ZIP packen, die alle Aufräumarbeiten durchführt und sich dann am Ende selbst löscht. Dein Programm müsste dann prüfen, ob die Batchdatei vorhanden ist. Wenn ja, wird sie ausgeführt. Dies führt dazu, dass beim ersten Programmstart einmal aufgeräumt wird.

Nachteil: Es wird quasi auf Ewig (bei jedem Programmstart) geprüft, ob die Batchdatei vorhanden ist.
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
191 Beiträge
 
#3

AW: Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 13:27
Du könntest eventuell eine Batchdatei mit ins ZIP packen, die alle Aufräumarbeiten durchführt und sich dann am Ende selbst löscht. Dein Programm müsste dann prüfen, ob die Batchdatei vorhanden ist. Wenn ja, wird sie ausgeführt. Dies führt dazu, dass beim ersten Programmstart einmal aufgeräumt wird.

Nachteil: Es wird quasi auf Ewig (bei jedem Programmstart) geprüft, ob die Batchdatei vorhanden ist.
Wobei man den Nachteil ja beseitigen kann wenn er in der Ini-Datei / Registry ein "Dateien bereits gelöscht" führt.

Hans
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#4

AW: Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 13:47
Du könntest eventuell eine Batchdatei mit ins ZIP packen, die alle Aufräumarbeiten durchführt und sich dann am Ende selbst löscht. Dein Programm müsste dann prüfen, ob die Batchdatei vorhanden ist. Wenn ja, wird sie ausgeführt. Dies führt dazu, dass beim ersten Programmstart einmal aufgeräumt wird.

Nachteil: Es wird quasi auf Ewig (bei jedem Programmstart) geprüft, ob die Batchdatei vorhanden ist.
Wobei man den Nachteil ja beseitigen kann wenn er in der Ini-Datei / Registry ein "Dateien bereits gelöscht" führt.

Hans
Ja, das schon, aber es bleibt für eine einmalige Aufgabe eine dauerhafte Prüfung erforderlich, ob die einmalige Aufgabe erledigt wurde.

Sinnvoller wäre eine Lösung, die automatisch einmalig ausgeführt wird und anschließend auch keine Prüfung mehr erfordert, ob sie nun ausgeführt wurde oder nicht.
  Mit Zitat antworten Zitat
TUhr

Registriert seit: 25. Sep 2021
11 Beiträge
 
#5

AW: Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 16:57
Hallo,

warum löschst Du die nicht beim Starten der neuen Software ?

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
802 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Programm-Update: Dateien löschen

  Alt 21. Jan 2023, 17:44
warum löschst Du die nicht beim Starten der neuen Software ?
Das ist ja auch der Vorschlag von Delphi.Narium. Um ehrlich zu sein: auf diesen offensichtlichen Ansatz bin ich nicht gekommen, um dieses Problem für die Zip-Variante zu lösen.
Beim Installer fällt das jedoch auch wieder raus - denn wenn der Player nach c:\Programme\ installiert wird, dann kann man da nachträglich nichts mehr löschen (zumindest nicht ohne weiteres). Und natürlich hat man dann dauerhaft die Abfrage drin, ob das noch getan werden muss - aber ein Value aus der Ini-Datei zusätzlich auswerten sollte den Start nicht verzögern.

D.h. es wird wohl eine Kombination aus "Installer räumt beim Installieren auf" und "exe aus der Zip räumt beim ersten Start auf". Ob letzteres ne Batchdatei wird, oder eine kleine eincompilierte Stringlist, deren Einträge in einer Schleife gelöscht werden, muss ich nochmal schauen.

Falls noch jemand andere Vorschläge hat - immer her damit.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.785 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Programm-Update: Dateien löschen

  Alt 22. Jan 2023, 00:45
Wenn du kein Setup nutzt, welches das löschen könnte,
dann mach es doch einfach beim nächsten Start des Programms.

[edit] ups, vergessen zu aktualieren
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.189 Beiträge
 
Delphi 7 Professional
 
#8

AW: Programm-Update: Dateien löschen

  Alt 22. Jan 2023, 12:55
Wenn Du eine Stringliste einkompilierst könntest Du eventuell auch diesen Ansatz erweitern.

Deine Programm heißt NEMP.EXE.
Die bisherige NEMP.EXE benennst Du im ZIP um, z. B. NEMP_NEU.XXX.
Du erstellst ein neues Programm NEMP.EXE für die Aufräumarbeiten.
Diese Programm wird der Anwender (gewohnheitsgemäß, per ShortCut, Link, ...) starten.
Das Programm räumt beim Start auf, löscht die eigene EXE (also NEMP.EXE), benennt NEMP_NEU.XXX um in NEMP.EXE und startet diese.

Damit ist nach dem ersten Start von NEMP.EXE aufgeräumt und für die Zukunft keine weitere Prüfung erforderlich.

Ob das Löschen der eigenen EXE, das Umbenennen einer zweiten EXE auf den eigenen Dateinamen und deren anschließender Start so ohne weiteres möglich ist, weiß ich nicht. Habe das zwar schonmal realisiert, aber es hat nicht immer zwingend funktioniert.

Das Problem kann man aber mit Hilfe einer temporären Batchdatei lösen.

NEMP.EXE räumt auf.
Erstellet Batchdatei.
Startet Batchdatei.
Beendet sich.
Batchdatei löscht NEMP.EXE
Batchdatei benennt NEMP_NEU.XXX um
Batchdatei startet NEMP.EXE
Batchdatei löscht sich.

Gorb sowas:
Code:
:REM Fuenf Sekunden Pause machen, damit NEMP Zeit zum Beenden hat.
@PING -n 5 127.0.0.1 > nul
:REM Das Aufraeumprogramm loeschen
@DEL NEMP.EXE
:REM Die neue EXE umbenennen
@REN NEMP_NEU.XXX NEMP.EXE
:REM und dann starten,
:REM damit die Batchdatei nicht bis zum Beenden von NEMP.EXE
:REM weiter laeuft, wird per START gestartet.
@start NEMP_NEU.XXX
:REM Batchdatei loescht sich selbst.
@DEL %0
Wenn die Batchdatei minimiert per ShellExecute gestartet wird, sollte das, aus Anwendersicht, unbemerkt ablaufen, lediglich der erste Start wirkt verzögert.

Eine "dauerhafte Aufräumänderung" des eigentlichen Programmes oder eine "dauerhafte Aufräumprüfänderung" im Player wäre damit entbehrlich.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
9.954 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Programm-Update: Dateien löschen

  Alt 22. Jan 2023, 14:28
Das Programm räumt beim Start auf, löscht die eigene EXE (also NEMP.EXE), benennt NEMP_NEU.XXX um in NEMP.EXE und startet diese.
Funktioniert eventuell aber auch nur mit Admin-Rechten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.785 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Programm-Update: Dateien löschen

  Alt 22. Jan 2023, 14:39
Zitat:
PING
https://learn.microsoft.com/de-de/wi...mmands/timeout
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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