Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4
  Alt 28. Mai 2003, 18:22
Hallo,
ich hoffe Dein Problem ist noch aktuell.
Hier kommt die Lösung. Grundsätzlich funktioniert es so, wie jbg es beschrieben hat.
Also, Du hast einen FTP-Server. Auf diesen Server legst Du neben den Dateien, die upgedated werden sollen eine Datei (A) (z.B. Textdatei) mit der Versionskennung. Der Client hat ebenfalls eine Datei (B) mit der Versionskennung. Jetzt brauchst Du nur die Datei (A) vom Server zu laden und den Inhalt mit Datei (B) zu vergleichen. Ist der Inhalt unterschiedlich kann das Update gestartet werden. Der Haken an der Sache ist nur, dass man eine EXE, die gerade läuft nicht so ohne weiteres auf der Platte überschreiben kann.
Ich habe das Problem mit zwei Programmen gelöst. Die eigentliche Anwendung startet das UpdateProgramm. Nach dem Start des UpdateProgrammes holt sich die Anwendung mit FindWindow das FensterHandle des UpdateProgramms. Jetzt sendet die Anwendung mit PostMessage das eigene FensterHandle an das UpdateProgramm. Jetzt können die beiden Programme über Botschaften miteinander kommunizieren.
Nun baut das UpdateProgramm eine Verbindung zum FTP-Server auf und holt Datei (A). Wenn ein Update erforderlich ist, sendet das Updateprogramm eine "Close-Botschaft" an die Anwendung. Daraufhin beendet sich die Anwendung selbsständig (Jetzt kann das UpdateProgramm die EXE der Anwendung auf der Platte überschreiben).
Nun kann sich das Updateprogramm eine weitere TxT-Datei vom Server holen. In dieser Datei stehen die Dateinamen der Dateien, die upgedated werden sollen. Nachdem der Download beendet ist, startet das UpdateProgramm wieder die Anwendung und beendet sich selbst.

Um das ganze mit ein bisschen Code zu hinterlegen habe ich Dir ein kleines Beispiel angefügt.

Ach ja, das Updateprogramm kann sich natürlich nicht selbst updateten. Deshalb solltest Du sehr viel Grips da hineinstecken und Dir möglichst alle Eventualiäten vorher überlegen.
Angehängte Dateien
Dateityp: zip upprg.zip (362,2 KB, 23x aufgerufen)
  Mit Zitat antworten Zitat