| Autor |
Beitrag |
reepo2k
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 03.01.05 08:58
Hallo, ich hab n AutoUpdate für mein Programm gemacht, das wie folgt funzt:
Mein Programm lädt sich eine .txt Datei von Server und guckt ob die Zahl die da drin steht größer ist, als die Programmversion.
Wenn dies der Fall ist, dann kommt eine Meldung, dass man die Update.exe ausführen soll, wenn nicht, dann passiert auch nichts.^^
Die Update.exe lädt dann die neue Version runter (Wenn manauf Weiter klickt^^) und ersetzt die alte version meines programmes.
Nun habe ich 2 Fragen:
Was muss ich denn machen wenn ich die Update.exe updaten will?^^
Und wie finde ich herus, wie weit der Download ist, damit meine progress bar das anzeigen kann?
MfG: reepo2k
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 03.01.05 09:18
wie weit der download ist, das sagt dir dene download routine. aber du hast nicht geschrieben welche du hernimmst also kann ich dir da nix sagen !
die update exe könntest du so update, dass du die neue update.exe als update.new speicherst. dann schaust du beim starten des hauptprogrammes ob es eine update.new gibt. wenn ja dann löscht du die update.exe und benennst die .new in .exe um !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
reepo2k 
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 03.01.05 09:25
Jo, ich schreib mal rein, wie das mit dem Download funzt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button2Click(Sender: TObject); var Datei, Ziel: PChar; begin Button1.Enabled :=false; Label2.Caption := 'Download gestartet'; if DeleteFileToRecycleBin('meine.exe') then try Datei := 'http://www.domain.de/Programme/meineExe.zip'; Ziel := 'meineExe.zip'; UrlDownloadToFile(nil, Datei, Ziel, 0, nil); Label2.Caption := 'Download beendet'; Button1.Enabled := true; Except MessageBox(0, 'Download abgebochen!', 'Fehler', MB_ICONERROR or MB_OK);
end; end; end. |
dabei wirs aber erst die alte version gelöscht, die Funktion zum löschen habe ich jetzt aber nich hier gepostet.
Zuletzt bearbeitet von reepo2k am Mo 03.01.05 09:27, insgesamt 1-mal bearbeitet
|
|
ScorpionKing
      
Beiträge: 1150
Win XP
|
Verfasst: Mo 03.01.05 10:51
_________________ Aus dem Urlaub zurück!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 03.01.05 10:55
|
|
ScorpionKing
      
Beiträge: 1150
Win XP
|
Verfasst: Mo 03.01.05 11:00
das ist aber viel zu aufwendig!
mit der indy-komponente gehts einfacher!!! 
_________________ Aus dem Urlaub zurück!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 03.01.05 11:02
Alles relativ. Dann guck dir mal die Indy Komponenten an, wie viele Zeilen Code die für einen Download mit Fortschrittsanzeige brauchen und wie lang dieser Code ist. 
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 03.01.05 11:17
jap. also indy ist definitiv kürzer !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
ScorpionKing
      
Beiträge: 1150
Win XP
|
Verfasst: Mo 03.01.05 11:52
denk ich auch!
da muss ja nur was in OnWork rein! 
_________________ Aus dem Urlaub zurück!
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 03.01.05 12:10
dafür haste bei der anderen rotine den vorteil, dass das vom IE bereitgestellt wird und dementsprechend schon fehlerbehandlung und proxysettings und all den schmarrn drin hat !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 03.01.05 12:11
| matze hat folgendes geschrieben: | | jap. also indy ist definitiv kürzer ! |
Sicher? Dann guck dir mal die Indy HTTP Unit an und zähle mal die relevanten Codeteile (nicht vergessen die, in den anderen Indy Units, die eingebunden werden) und zähle mal die Zeilen in der von mir geposteten Klasse. 
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 03.01.05 14:30
ja ok da hast du recht  . aber fur den programmierer ist indy kürzer. man muss ja nur ein 3 events einen doppelklick machen und dann jeweils eine zeile code einsetzten!
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
reepo2k 
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 03.01.05 16:38
Wie mach ich das denn mit Indy?
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 03.01.05 18:12
bei der indy http kompo gibt die ereignisse OnWorkBegin OnWork und Onworkend.
in den ereignis prozedurne gibt es dann auch noch parameter die dir übergeben werden.
bei OnWorkbegin wird dir ein integerwert übergeben den du bei der progressbar als maximalwert einsetzt.
bei on work bekommst du einen integerwert, den du bei der progressabr als position setzt.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
reepo2k 
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 03.01.05 19:25
THX ich probier das morgen mal, ich denke das bekomm ich hin.
MfG: reepo2k
|
|
reepo2k 
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 03.01.05 20:45
Funzt nich, oder ich hab was falsch gemacht...^^
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; end;
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end; |
kann gut sein, dass das falsch ist, da ich noch Anfänger bin, und das mal so getestet habe.
|
|