Entwickler-Ecke
Internet / Netzwerk - Auto Updater mit Filecheck
Novo - Mo 08.06.09 17:05
Titel: Auto Updater mit Filecheck
hi,
ich meld mich mal auch wieder in der Delphi Szene zurück nach langer Zeit.
Ich möchte ein Autoupdate realisieren (wahrscheinlich mit Indy).
Es soll prüfen, ob eine neue Version meines Programms verfügbar ist, und dann die Dateien, die neu sind, downloaden!
Bloss ka. wie ich das anstellen soll, da das sehr viele Dateien sind, und fast alle keine integrierte Versionsnummer haben.
(MySQL Datenbank Files des portable Apache und einige Batch und ein Opensource Programm usw.)
Also dann wohl CRC oder MD5 Hash check, und wenn unterschiedlich -> download und ersetzen.
Wie mach ich das?
Kennt sich damit jemand aus?
Würde mich furchtbar freuen auf vllt. einer kleinen Zusammenarbeit in ICQ oder so, wenn mir einer helfen mag?
Mfg Novo
jaenicke - Mo 08.06.09 17:07
Es wäre wohl am sinnvollsten eine Dateiliste inkl. Versionsnummern zu führen.
Eine Checksumme online zur Verfügung zu stellen wäre aber sowieso sinnvoll um sicherzugehen, dass es keine Übertragungsfehler gibt. Und die könntest du natürlich auch vergleichen.
BenBE - Mo 08.06.09 17:13
Und nicht vergessen, in deinem Updater VOR dem Ersetzen der Dateien eine Signatur zu überprüfen, damit dir keiner was unterschieben kann.
Novo - Mo 08.06.09 17:16
jaenicke hat folgendes geschrieben : |
| Es wäre wohl am sinnvollsten eine Dateiliste inkl. Versionsnummern zu führen |
Danke für die schnelle antwort.
Das kannst du aber vergessen, das sind einfach viel zu viele Dateien!
Bisher hab ich das so, dass ich immer ein Full Pack mache, dass Programm läd die Full update.zip und entpackt sie.
Netter wärs echt, dass es nur die geänderten Files updated.
(Wobei das eh fast alle sind xD)
Das ist dann so nicht möglich.
Wobei ich einige Projekte kenne, die sehr viele Dateien updated, aber die haben wahrscheinlich alle Versionsnummern oder sind gelistet.
Das ist bei mir aber nicht möglich.
OK hat sich dann erledigt.
thx
jaenicke - Di 09.06.09 00:48
Novo hat folgendes geschrieben : |
| Das kannst du aber vergessen, das sind einfach viel zu viele Dateien! |
Warum? Das musst du doch nicht manuell machen. Du kannst doch ein Programm dafür schreiben, das die Liste jeweils aktualisiert und die Datei selbst vorher auch gleich hochlädt.
jaenicke - Di 09.06.09 18:51
Naja, am einfachsten wäre es, wenn in der Datei in jeder Zeile am Anfang der Dateiname und danach die Checksumme z.B. steht. Dann müsste dein Programm nur diese Datei in eine TStringList laden und alle Zeilen nach dem Dateinamen durchsuchen. Ist der noch nicht drin, wird er hinzugefügt.
Zusätzlich muss die Checksumme berechnet werden, dafür bietet sich MD5 an, da gibt es eine Unit dafür. Die solltest du finden, wenn du im Forum nach md5.pas suchst.
Zum Upload bietet sich dann TIdFTP von den Indy Komponenten an, wenn es sich um einen FTP-Server handelt. Wichtig ist dabei, dass du das Passwort in dem Uploadprogramm drin hast, du dieses also nicht weitergeben solltest.
oki - Di 09.06.09 19:31
Warum nicht ein Setup herunterladen und durch den Updater starten? Mit InnoSetup kann man das recht schnell und einfach erstellen. Die Version kann in den Dateinamen des Setup und fertig. Will man sich das zusammenstellen vieler unterschiedlicher Dateien in vielen Setups sparen, so kann man die Flags im InnoSetup nutzen (ignoreVersion etc.).
Gruß oki
jaenicke - Di 09.06.09 19:33
Dann müssten aber immer alle Dateien heruntergeladen werden in dem Setup statt selektiv die neuen.
BenBE - Di 09.06.09 19:42
MD5 und SHA1 sollten nicht mehr genutzt werden. Alternativen wären SHA512 oder Whirlpool.
oki - Di 09.06.09 19:46
jaenicke hat folgendes geschrieben : |
| Dann müssten aber immer alle Dateien heruntergeladen werden in dem Setup statt selektiv die neuen. |
Ja klar, bei vielen kleinen Dateien sollte das akzeptabel sein. Anderenfalls muß man den Aufwand auf der Updater-Seite treiben.
Die Frage ist halt immer, wo ist das Optimum zwischen Aufwand/Nutzen.
Gruß oki
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!