Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Patcher (https://www.delphipraxis.net/192496-delphi-patcher.html)

xReva 24. Apr 2017 10:26

Delphi Patcher
 
Hey,


Ich versuche momentan über Delphi ein Programm zu schreiben das mir auf meinem PC die Dateien in dem Ordner wo das Programm liegt mit einem Ordner vergleicht der auf meinem Root Server liegt und dementsprechend die Dateien auf meinem PC Updatet.(Patcht). Da ich noch relativ neu in Delphi bin habe ich nicht wirklich einen guten Ansatz gefunden ich weiß nur das es wohl über Hash vergleiche funktionieren soll.

Ich hoffe mir kann hier damit weitergeholfen werden weil ich da schon eine Weile dran sitze allerdings nie etwas funktionsfähiges hinbekommen habe.

Mfg Lucas

Hobbycoder 24. Apr 2017 10:38

AW: Delphi Patcher
 
Was möchtest du denn jetzt wissen?
Wie man eine Hash erzeugt?

Um eine Hash für eine Datei zu erzeugen, muss die komplette Datei gelesen werden. Das jedes Mal für alle Datei zu machen, wäre ja nicht unbedingt sinnvoll. Für die lokalen Dateien würde das ja noch gehen, aber für die Dateien auf dem Root-Server....naja. Ich kenn deine Anbindung nicht.
Möglichweise kannst du schon beim Ablegen zu jeder Datei auf dem Root-Server eine Textdatei mit dem dazugehörigen HASH-Wert ablegen, und den Hash nur daraus lesen.
Ansonsten bleibt ja nur de Weg über Dateiname, Dateigröße und FileDate.

bra 24. Apr 2017 10:43

AW: Delphi Patcher
 
Am sinnvollsten wäre die Dateiversion, allerdings geht das nur bei EXE und DLL.

Hobbycoder 24. Apr 2017 10:58

AW: Delphi Patcher
 
Zitat:

Zitat von bra (Beitrag 1368818)
Am sinnvollsten wäre die Dateiversion, allerdings geht das nur bei EXE und DLL.

Sofern denn die Dateiversion sich immer verändert.
Hash wäre wohl der sicherste Weg.

xReva 24. Apr 2017 11:07

AW: Delphi Patcher
 
Danke für die schnellen Antworten.

Wie geschrieben habe ich keinen wirklichen Ansatz dafür ob ich das am besten über eine Hash mache oder anders.

Meine Frage währe halt wie würde ich so ein Programm am besten umsetzen und wo müsste ich dort anfangen bzw wie würde ich das am besten machen

Mfg Lucas

Hobbycoder 24. Apr 2017 11:24

AW: Delphi Patcher
 
Die ersten Fragen die sich stellen sind:

1. Wie greifst du auf den Root-Server zu? (FTP, SMB, ...)
2. Mit welcher Bandbreite greifst du zu? (DSL 16mb/s oder LAN 100/1000 MB/s).
3. Kannst du den Inhalt auf dem Root-Server selbst festlegen, bzw. den/die Hashwert der Dateien ggf. schon beim Hochladen erstellen/speichern?

Erst dann kann man sich Gedanken über die Umsetzung machen, denn erst dann weiß man ggf. welche Vergleiche man überhaupt durchführen kann.

Wenn ich mal davon ausgehe, dass du den Inhalt auf dem Root-Server selber festlegen kannst, dann würde ich folgendes machen.
Ich würde mir beim Hochladen über jedes Verzeichnis für alle Dateien die Hashwert erzeugen und diese in eine Datei schreiben, die ebenfalls hochgeladen wird.
Beim Synchronisieren am Client würde ich dann diese Datei herunter laden, die Hashwerte einlesen und dann mit den Hashwerten der lokalen Dateien vergleichen. (Vielleicht über die Hashdatei von der letzten Synchronisierung, oder die Hashwerte der lokalen Dateien jedesmal selbst erzeugen).
Ist ein Hashwert unterschiedlich: Datei aktualisieren.
Ist kein Hashwert für eine lokale Datei vorhanden: Datei löschen
Fehlt die lokale Datei: Datei herunterladen.

Ein Vergleich über Dateiname, Dateigröße und FileTime würde ähnlich ablaufen, nur dass statt dem herunterladen der HashDatei halt das ermitteln der Werte Dateiname, Dateigröße und Filetime der Root-Dateien als erstes erfolgt.
Dann wieder den gleichen Vergleich wie oben, nur halt auf DAteiname, Dateigröße und Filetime.

a.def 24. Apr 2017 11:38

AW: Delphi Patcher
 
Ich selber mache es so:

Auf meinem Server liegt eine Datei in der in jeder Zeile ein Dateiname steht.
Ich lade diese Liste herunter und gehe sie mit einer for-Schleife durch.
Nun hole ich mir über ein PHP-Script, welches auf dem Server liegt, den Hash dieser Datei.
Jetzt hole ich mir auch den Hash derselben Datei in meinem Programmverzeichnis.

Ich vergleiche jetzt beide Hash-es. In Einzelfällen vergleiche ich auch die Dateigröße.

Das ist meiner Meinung nach ein sicherer Weg. So funktioniert mein Updater/Patcher seit Jahren.

p80286 24. Apr 2017 11:40

AW: Delphi Patcher
 
Hier im Forum suchendoppelte datei
damit solltest Du fündig werden.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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