AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem beim webupdate
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim webupdate

Ein Thema von CalganX · begonnen am 7. Dez 2002 · letzter Beitrag vom 8. Dez 2002
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem beim webupdate

  Alt 7. Dez 2002, 19:08
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:
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;
Hoffe auf schnelle Hilfe,
Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 7. Dez 2002, 20:22
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(...).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 7. Dez 2002, 20:29
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 7. Dez 2002, 20:48
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 7. Dez 2002, 21:54
Hallo Christian,

Zitat von Christian Seehase:
man sollte allerdings Dateien auf einem Webserver eh' nur mit Kleinbuchstaben benannt ablegen.
ACK.

Grüsse, Daniel
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 8. Dez 2002, 10:30
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 8. Dez 2002, 10:56
Ich habe alle Vorschläge eingebaut, aber es nichts gebracht.

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 8. Dez 2002, 11:38
Moin Chris,

bringt URLDownloadToFile an jeder Stelle ein S_OK als Returncode?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9
  Alt 8. Dez 2002, 11:48
Zitat von Chakotay1308:
(die in der INF als MainFile und in files1 steht)
Wenn das mal nicht der Fehler ist, weil:
Code:
FileList.Add(updateFile.ReadString('file'+IntToStr(i), // <- "file", NICHT "files"
  'filename',
  ''));
end;
Denn abgesehen davon konnte ich von meiner Seite ein paar Dateien herunterladen, wobei ich den entsprechenden Download-Teil deiner Funktion 1:1 übernommen habe.


mfg
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#10
  Alt 8. Dez 2002, 11:53
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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