exe Dateien übers Internet übertragen
-
Hi
Ich stehe vor folgendem Problem: Ich möchte das mein Programm eine art Updatefunktion bekommt in welcher sich die exe Datei des Programms über das Internet aktualisiert. Wie z.B. bei Firefox. Das bedeutet, glaub ich ,das ich zwei Programme brauche da sich eine Datei ja nicht selber überschreiben kann.
Meine Frage ist jetzt wie ich das in C++ umsetzte. Ich habe es mit diesen Fastnet Komponenten probiert die beim Borland Builder dabei sind. Aber leider ohne Erfolg. Es passiert das gleiche wie wenn man den Inhalt einer exe Datei aus dem Editor kopiert und ihn als eine neue exe abspeichert. Wenn man die Datei ausführt erscheint ein cmd Fenster und dannach eine Fehlermeldung.
habt ihr Vielleicht irgendwelche Tipps oder hat jemand so etwas schonmal gemacht? Oder nochbesser: gibt es dafür bereits eine Komponente mit der ich experimentieren kann?
Danke schonmal für Eure Hilfe!
Viele Grüße Drevilt
-
Hallo
Du must das Problem in zwei Teile trennen.
Zum einen den Download von Dateien. Dazu ist zuallersrt FTP geeignet, zu diesem Protokoll gibt es auch eine Komponente im Builder. Natürlich brauchst du als "Lieferant" dann auch einen zentralen FTP-Server.Der zweite Teil ist das Ersetzen von Programmdateien durch neuere. Wie du schon selber sagst ist es nicht möglich die Exe eines laufenden Programms zu ersetzen. Da bietet sich die Auslagerung des gesamten updatebaren Quellcodes in eine (oder mehrere) dynamische DLLs an. Das eigentliche Hauptprogramm ist nichts weiter als ein minimaler Rumpf, der nur zwei Sachen machent :
- nach Updates suchen und herunterladen, DLLs ersetzen
- die DLLs dynamisch linken und möglichst einfach das eigentliche "Nutzprogramm" aus der DLL heraus aufrufen.bis bald
akari
-
Erstmal Vielen Dank für die schnelle Hilfe akari!!
die Sache mit den Dlls ist eine echt gute Idee. Ich weiß zwar noch nicht wie ich mit dlls umgehen soll aber das werde ich schon irgendwo nachlesen können. Aber ist es nicht aus so möglich das ich zwei Programme habe:
einmal das Hauptprogramm das dann grundsätzlich laufen wird und wenn man in diesem dann auf, sagen wir mal, "Updaten" klickt ,er erst die Zweite Anwendung startet und sich dann selber schließt, wonach die Zweite Anwendung nur dazu da ist das Hauptprogramm zu aktualisieren? Oder Stellt sich dem noch etwas anderes in den Weg?
Danke Drevilt
-
Hallo,
hier gibt es ein Tutorial zu Dll's
DLL-TutorialIch habe es selbst vorige Woche erst durchgearbeitet und es funzt (und ich bin voll der Anfänger.) - man muss nur den Überblick behalten...
Und wenn nix mehr geht, gibts ja hier dieses fantastische
Forum! 
MfG
-
Hallo
Drevilt schrieb:
Erstmal Vielen Dank für die schnelle Hilfe akari!!
die Sache mit den Dlls ist eine echt gute Idee. Ich weiß zwar noch nicht wie ich mit dlls umgehen soll aber das werde ich schon irgendwo nachlesen können.
Eine Anleitung für DLLs findest du hier.
Aber ist es nicht aus so möglich das ich zwei Programme habe:
einmal das Hauptprogramm das dann grundsätzlich laufen wird und wenn man in diesem dann auf, sagen wir mal, "Updaten" klickt ,er erst die Zweite Anwendung startet und sich dann selber schließt, wonach die Zweite Anwendung nur dazu da ist das Hauptprogramm zu aktualisieren? Oder Stellt sich dem noch etwas anderes in den Weg?
Doch das geht auch und so ähnlich habe ich es in meinem früherem Projekt auch gelöst. Ist nur etwas knifflig weil du dann die Beziehung zwischen den beiden Programmen sehr gut koordninieren must. In deinem Fall muß der Updater so lange warten bis das Hauptprogramm wirklich vollständig beendet ist. Kann aber das Hauptprogramm nicht schließen (OnCloseQuery...) muß es den Update benachrichigen seine Warteschleife zu beenden.
bis bald
akari