Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigenes Programm beenden+starten? (https://www.delphipraxis.net/30521-eigenes-programm-beenden-starten.html)

PremiumPils 26. Sep 2004 00:39


Eigenes Programm beenden+starten?
 
Hallo Profis,

ich bräuchte mal den ein oder anderen Denkanstoss von eurer Seite. Ich möchte mein Programm mit Hilfe eines Internetdownloads selber aktualisieren. Natürlich kann ich die gerade gestartete EXE - mit welcher die neue runtergeladen wurde - nicht mit der neuen überschreiben. Gibt es eine kleine kurze elegante Lösung (ohne VCL), dieses beenden+kopieren und neustarten in eine kleine DLL zu packen, die ich dem eigentlichen Programm beilegen kann? Könnte ich es aus meiner eigenen EXE bewerkstelligen, wenn ja - wie?

Derzeit stehe ich mächtig auf dem Schlauch. Ich würde mich über eure Hilfe freuen.

Grüße,

Die Muhkuh 26. Sep 2004 07:15

Re: Eigenes Programm beenden+starten?
 
Hi und herzlich willkommen in der DP :dp:,


du könntest es auch so machen:

Die Exedatei heißt (z.B.) Test.exe. Danach läds du von deinem Webserver die Datei Test.exe.tmp (das .tmp ist wichtig da du ja ide laufende Exe nicht überschreiben kannst). Nach dem runterladen beendet sich das Programm und startet ein Batch-Datei. Diese löscht die Datei Test.exe und benennt die Datei Test.exe.tmp in Test.exe um.


*MFG*

Spider

CenBells 26. Sep 2004 08:32

Re: Eigenes Programm beenden+starten?
 
hi,

wenn du den download auch noch schön klein halten willst, kannst du dir auch noch MakeUpdate
http://www.tsppd.com/MakeUpdate/
anschauen. Das ist kostenlos (+Delphi source) und dort findest du ein paar schöne tools.

Gruß
Ken

XHelp 26. Sep 2004 12:23

Re: Eigenes Programm beenden+starten?
 
Du kannst auch ein extra update tool machen. Von deinem Hauptprogramm startest du es, und dann schießt du das Hauptprogramm. Update zieht was er braucht runter und dann startet er das Hauptprogramm und killt sich.

Nikolas 26. Sep 2004 12:33

Re: Eigenes Programm beenden+starten?
 
Ich glaube mich errinnern zu können, das ich hier in der DP mal gelesen habe, dass es verboten ist, Programme zu schreiben/veröffentlichen, die sich selbst löschen.

XHelp 26. Sep 2004 12:39

Re: Eigenes Programm beenden+starten?
 
Zitat:

Zitat von Toxman
Ich glaube mich errinnern zu können, das ich hier in der DP mal gelesen habe, dass es verboten ist, Programme zu schreiben/veröffentlichen, die sich selbst löschen.

:gruebel: :gruebel: was ist daran so schlimm?

jfheins 26. Sep 2004 12:51

Re: Eigenes Programm beenden+starten?
 
Das kann als Datenzerstörung ausgelegt werden ... siehe Hier

Aber wie machen das die ganzen Updater (z.B. Antivir) wenn Sie die .exe - Dateien aktualisieren ?

Dax 26. Sep 2004 12:52

Re: Eigenes Programm beenden+starten?
 
Dort gibt es spezieller (separate) Update-Programme, die die entesprechenen Dateien überschreiben.

jfheins 26. Sep 2004 12:56

Re: Eigenes Programm beenden+starten?
 
Wenn also ein Programm ein anderes Programm erstellt, das das erste Programm löscht und mit einem anderen ersetzt und sich anschließen selber löscht ist das verboten.

Wenn aber ein Programm ein anderes Programm löscht und mit einem anderen ersetzt ist das erlaubt?

Merkwürdig ... :?: :gruebel: :wiejetzt:

XHelp 26. Sep 2004 13:01

Re: Eigenes Programm beenden+starten?
 
Solange das deine dateien sind... du machst ein programm mit update feature. Ich glaube nicht, dass das verboten ist... wäre auch schwachsinn...

Nikolas 26. Sep 2004 13:03

Re: Eigenes Programm beenden+starten?
 
So viel ich weiss, darf man beides nicht machen, ohne vorher den User zu fragen.

PremiumPils 26. Sep 2004 19:12

Re: Eigenes Programm beenden+starten?
 
Danke für eure Tipps... der User drückt bei mir auf eine "Update"-Button, also ist es auch sein Wille. :wink: Hab jetzt ne Weile rumprobiert.

Meine Lösung ist nun die folgende:
*update klick*
- programm\programm.exe lädt die update.dat runter
- usertemp\update.dat wird hier im Temppfad entpackt
- usertemp\programm.exe wird mit dem parameter "/update" ausgeführt
- die ursprüngliche Applikation wird gekillt
- ein extra Updateform wird geöffnet - für einige Infos
- die ursprünglichen Dateien werden in .bak umbenannt
- neue Dateien werden über die alten kopiert
- es wird alles auf Erfolg geprüft
- das neue Programm: programm\programm.exe wird gestartet
- dieses killt dann die Updaterapplikation und löscht die temporären Dateien
- fertig

Hmm.. ich danke euch auf jedenfall für die Denkanstöße. Ist ein tolles Forum!!

Grüße,
PremiumPils :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz