![]() |
Problem beim webupdate
Hi,
ich habe gerade angefangen eine Prozedur für ein Webupdate zu schreiben. Alles läuft, allerdings lädt er nicht die Dateien runter, obwohl sie vorhanden und im richtigen Verzeichnis liegen... Folgender Source:
Delphi-Quellcode:
Hoffe auf schnelle Hilfe,
procedure TForm1.lookForUpdate1Click(Sender: TObject);
var updateFile: TIniFile; aktVer, newVer: String; VersionFile: TextFile; FileCount: integer; FileList: TStringlist; offFileList: TStringList; i: integer; MainFile: String; begin if FileExists(ExtractFilePath(Application.ExeName)+'update\updateload.inf') then DeleteFile(ExtractFilePath(Application.ExeName)+'update\updateload.inf'); try URLDownloadToFile(nil, 'http://www.chris-harms.de/sites/projects/updates/CodeLib.inf', PChar(ExtractFilePath(Application.ExeName)+'update\updateload.inf'), 0, nil); except MessageDlg('Fehler beim downloaden der Update-Informationsdatei!'+#13+#10+'Download wird abgebrochen!', mtError, [mbOK], 0); exit; end; // load current version AssignFile(VersionFile, ExtractFilePath(Application.ExeName)+'version.clf'); Reset(VersionFile); readln(versionFile, aktVer); CloseFile(VersionFile); // load updated version updateFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'update\updateload.inf'); try newVer := updateFile.ReadString('update', 'newVersion', aktVer); finally updateFile.Free; end; // check version-difference if aktVer = newVer then begin MessageDlg('Es ist keine neuere Version vorhanden!', mtInformation, [mbOK], 0); Exit; end; try updateFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'updates\updateload.inf'); FileList := TStringList.Create; offFileList := TStringList.Create; try FileCount := updateFile.ReadInteger('files', 'count', 0); FileList.Sorted := true; MainFile := updateFile.ReadString('files', 'mainfile', ''); for i:=1 to FileCount do begin FileList.Add(updateFile.ReadString('file'+IntToStr(i), 'filename', '')); end; for i:=0 to FileList.Count - 1 do begin // ForceDirectories(ExtractFilePath(Application.exeName)+'updates\'+newVer+'\'); URLDownloadToFile(nil, PChar('http://www.chris-harms.de/sites/projects/updates/'+newVer+'/'+FileList[i]), PChar(ExtractFilePath(Application.exeName)+'update\'+FileList[i]), 0, nil); offFileList.Add(ExtractFilePath(Application.exeName)+'update\'+FileList[i]); end; finally updateFile.Free; FileList.Free; end; except MessageDlg('Fehler beim updaten der Dateien!'+#13+#10+'Update wird abgebrochen!', mtError, [mbOK], 0); exit; end; if MessageDlg('Es wurde eine aktuelle Version ('+newVer+') heruntergeladen.'+#13+#10+'Soll diese jetzt installiert werden?', mtWarning, [mbYes,mbNo], 0) = mrNo then begin DoFileWork(self.Handle, FO_DELETE, offFileList, nil, FOF_NOERRORUI); Exit; end; ShellExecute(0, 'open', PChar(ExtractFilePath(Application.exeName)+'update\'+MainFile), nil, nil, SW_SHOWNORMAL); offFileList.Free; Close; end; Chris |
Moin Chris,
da der Aufruf von URLDownloadToFile ja soweit korrekt aussieht, kann es eigentlich nur noch daran liegen, dass die Quellpfade Grossbuchstaben enthalten, dass kann, meines Wissens, nicht jeder Server verarbeiten. Setz' die Quellpfade doch einfach mal in ein LowerCase(...). |
Hallo Christian,
die Idee ist nicht schlecht, aber wenn seine Dateien wirklich mit Grossbuchstaben geschrieben hat und dann mit Kleinbuchstaben "anfragt" gibt es glaub ich auch so rum probleme, nicht nur umgekehrt. @Chris, welche Datei wird eigentlich nicht herunter geladen? Die Old oder die New? Schon mal Debuggt? Grüsse, Daniel :hi: |
Moin Daniel B,
man sollte allerdings Dateien auf einem Webserver eh' nur mit Kleinbuchstaben benannt ablegen. Dann stellt sich das Problem nicht ;-) @Chris: Da URLDownloadToFile keine Exception auslöst, kannst Du Dir zum einen den try/except Block dafür sparen, und lieber den Returncode abfragen. |
Hallo Christian,
Zitat:
Grüsse, Daniel :hi: |
Hm.. Also die INF-Datei lädt er ohne Probleme herunter, nur die update.exe (die in der INF als MainFile und in files1 steht) wird nicht heruntergeladen.
Anstatt das Programm zu starten(, dass nicht da ist) öffnet er jetzt nur den Ordner "update". Ideen? Chris |
Ich habe alle Vorschläge eingebaut, aber es nichts gebracht. :cry:
Chris |
Moin Chris,
bringt URLDownloadToFile an jeder Stelle ein S_OK als Returncode? |
Zitat:
Code:
Denn abgesehen davon konnte ich von meiner Seite ein paar Dateien herunterladen, wobei ich den entsprechenden Download-Teil deiner Funktion 1:1 übernommen habe. :)
FileList.Add(updateFile.ReadString('file'+IntToStr(i), // <- "file", NICHT "files"
'filename', '')); end; mfg |
files1 war ein Tippfehler es muss schon file1 heißen...
URLDownloadToFile gibt immer S_OK zurück (laut Fehlerabfänger)! Aber die Datei ist nicht da ([edit=Chakotay1308]Auf der Platte meine ich...[/edit])! Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz