Seite 1 von 1

Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 7:57
von Jan
Für meine Software habe ich ein Updatemodul geschrieben, das automatisch auf dem Server nachsieht, ob es eine aktuellere Version für die Programmdateien gibt. Das fuktioniert auch sehr gut. Vor Allem selektiv - es werden nur die Dateien herunter geladen, die wirklich aktualsiert wurden. Auch heute hat noch nicht jeder Kunde einen Breitbandanschluß ...

Sporadisch passiert es aber Kunden, daß das Update sauber durchläuft, die Dateien ausgetauscht werden, dann aber eine Windows-Fehlermeldung sagt, das eine dll nicht für den Betrieb unter Windows geeignet sei. Was soviel heißt wie: Das Teil ist bei der Übertragung zerschossen worden.

Jetzt überlege ich, in meine Updateroutine eine Prüfung einzubauen. Das zu jeder Datei eine Prüsumme gespeichert wird. Nach dem Download wird kontrolliert, ob die heruntergeladene Datei diese Prüfsumme hat, und wenn nicht, wird die noch einmal herunter geladen.

Aber: Wie komme ich an diese Prüfsumme? Macht es Sinn, eine Alaska-Standard-Funktion wie Char2Hash() zu benutzen? Oder bietet Alaska etwas passenderes? Oder muß man besser auf ganz was anderes asuweichen? Quasi-Standard ist ja die MD5, aber sowas bietet Alaska leider nicht, auch nicht in der 2.0.

Jan

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:28
von satmax
Für MD5 gibt es zahlreiche Lösungen, auch Command Line Programme:

von MS: https://www.microsoft.com/en-us/downloa ... x?id=11533
oder auch: http://winmd5.com/

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:35
von Jan
Hallo Markus,

Danke für die beiden Links. Mir wäre aber eine Lösung lieber, die ich in meinen Code einbauen kann. Es widerstrebt mir, meinen Kunden noch eine Datei mehr ausliefern zu müssen, nur damit die sehr sporadische Updatefehler abfangen können. Wenn es garnicht anders ginge würde ich aber auch das in Kauf nehmen.

Ich kenne mich in der Materie nicht aus. Aber naiv gefragt: Muß es unbedingt MD5 sein? Würde nicht eventell auch ein Char2Hash() reichen? Oder SecureKey()? Oder eine andere Xbase++-Funktion?

Jan

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:42
von Manfred
wäre FileCheck() aus den Tools eine Möglichkeit?

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:42
von satmax
IMHO ist Char2Hash() nur für Strings, nicht für Binary-> Char2Hash( <cString> ) --> cHash

Ich würde da eventuell gleich einen anderen Weg gehen, zippen. Da hast automatisch eine Prüfung, ein fehlerhaftes ZIP kannst gar nicht erst entpacken.

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:48
von Jan
Manfred,

auch eine gute Idee. An die Tools hatte ich nicht gedacht. Wenn auch das wieder eine zusätzliche dll bedeuten würde, was ich ja eigentlich vermeiden wollte.

Markus,

hmmm. Würde natürlich zusätzlich die Übertragungen beschleunigen. Aber ich müsste dann auch die komplette Update-Routine umschreiben.

Jan

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 8:50
von Manfred
ja sicher, aber wenn Du dann die Zusatzdll benutzt, dann hast Du auch wieder einen großen Pool an zusätzlichen guten Funktionen. So ganz ohne sind die nämlich nicht.

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 15:07
von Werner_Bayern
Servus Jan,

du nutzt doch auch ot4xb? Dann ist es ein 3zeiler:

Code: Alles auswählen

   nFile := fopen(cDatei)
   hHash := HFile2Md5Hex(nFile)
   fclose(nFile)
Hat sich sehr bewährt bei uns.

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 15:25
von Jan
Hallo Werner,

interessante Variante. Vor Allem wäre das wieder "Standard" MD5. Schau ich mir mal näher an.

Jan

Re: Prüfsumme auf Datei

Verfasst: Sa, 25. Jul 2015 22:40
von AUGE_OHR
satmax hat geschrieben:Ich würde da eventuell gleich einen anderen Weg gehen, zippen.
YUP ... wer eine DLL oder EXE "so" verschickt hat selbst Schuld wenn es "kaputt" ankommt.

p.s. ich würde das Windows ZIP System nehmen zu ein-/auspacken.