|
Registriert seit: 8. Nov 2006 1.360 Beiträge Delphi 10.3 Rio |
#25
So ich habe Poste mal mein Update, ich habe es auf der Basis von Larsi aufgebaut.
Delphi-Quellcode:
so bis hier hin war das die Updateüberprüfung und das Downloaden
private
bUpdateNochOffen : Boolean; function IsInternetConectet: Boolean; // Internetverbindung überprüfen procedure DownloaddateiPruefen; public INIEinstellungenProgramm,IniProgrammeinstellung :TFileName; {Constanten für Ini.} const DownloadInfo = 'DownloadInfo'; BtnUpdatInstall = 'Installation steht noch aus'; BtnUpdateueberp = 'Updateüberprüfung'; BtnDownload = 'Downloaden'; ProgrammInfo = 'Programminfo'; Programmversion = 'Programmversion'; end; var UpdateForm: TUpdateForm; implementation {$R *.dfm} { TUpdateForm } //=====Einstellungen laden============================= procedure TUpdateForm.FormShow(Sender: TObject); begin Edit5.Text:= Form1.GetFileVersion(ParamStr(0)); // Programversion auslesen if not FileExists(ExtractFilePath(ParamStr(0))+ 'Einstellungen\ProgrammSettings.ini') then begin IniProgrammeinstellung:= (ExtractFilePath(ParamStr(0))+ 'Einstellungen\ProgrammSettings.ini'); begin with TMemIniFile.Create(IniProgrammeinstellung ) do try begin WriteString(Programminfo,Programmversion,'0'); WriteBool(DownloadInfo,BtnUpdateueberp,True); WriteBool(DownloadInfo,BtnDownload,False); WriteBool(DownloadInfo,BtnUpdatInstall,False); UpdateFile; end; finally Free; end; end; end; // Lokale Einstellungen für Programm IniProgrammeinstellung:= (ExtractFilePath(ParamStr(0))+ 'Einstellungen\ProgrammSettings.ini'); with TMemIniFile.Create(IniProgrammeinstellung) do try Label11.Caption:= ReadString(Programminfo,Programmversion,Label11.Caption); BtnUpdateUeberpruefung.Enabled:= ReadBool(DownloadInfo,BtnUpdateueberp,BtnUpdateUeberpruefung.Enabled); BtnUpdateDownloaden.Enabled:= ReadBool(DownloadInfo,BtnDownload,BtnUpdateDownloaden.Enabled); BtnUpdateInstallieren.Enabled:= ReadBool(DownloadInfo,BtnUpdatInstall,BtnUpdateInstallieren.Enabled); bUpdateNochOffen:= ReadBool(DownloadInfo,BtnUpdatInstall,bUpdateNochOffen); finally Free; end; if bUpdateNochOffen = True then // wenn das Installieren des Updates noch aussteht begin Label15.Visible:= True; Label15.Font.Color:= ClRed; Label15.Caption:= ('Update Installation steht noch aus!!!'); end else begin Label15.Visible:= False; end; end; //=========Updateüberprüfung starten================== procedure TUpdateForm.Button2Click(Sender: TObject); var DownloadDatei,DownloadZiel: PChar; begin try if IsInternetConectet = True then // Internet Verbindung da begin ProgressBar1.Position:= 0; Label6.Font.Color:= ClLime; Label6.Caption:= 'Überprüfung gestartet'; try DownloadDatei:= 'http://Techniker-werden.de/update/UpdateDatei.txt'; // Von Internetseite Versions Info DownloadZiel:= PChar(ExtractFilePath(ParamStr(0))+ 'Einstellungen\System\UpdateDatei.txt'); // Ins Zielverzeichnis UrlDownloadToFile(nil, DownloadDatei, DownloadZiel, 0, nil); Von --> Nach Downloaden Label6.Font.Color:= ClLime; Label6.Caption:= 'Überprüfung beendet'; except Label6.Font.Color:= ClRed; Label6.Caption:= ('Überprüfung abgebrochen'); end; DownloadDateiPruefen; end else begin Form1.MessageDlgPos2('Es besteht keine Verbindung zum Internet',mtInformation,[mbOk],self); BtnUpdateInstallieren.Enabled:= False; Edit5.Text:= Form1.GetFileVersion(ParamStr(0));// versionsnummer anzeigen end; except Form1.MessageDlgPos2('Unbekannter Fehler',mtInformation,[mbOk],self); end; end; //========exe updaten========================================================== procedure TUpdateForm.Button3Click(Sender: TObject); var DownloadEXE,DownloadEXEZiel: PChar; begin TimerLabelBlinken.Enabled:= False; // Blinken von Label wenn Update vorhanden Label7.Visible:= true; Label7.Font.Color:= ClLime; Label7.Caption:= ('Download wird gestartet bitte warten'); Label12.Font.Color:= ClLime; Label12.Caption:= 'Download wird gestartet bitte warten'; try DownloadEXE:= 'http://Techniker-werden.de/update/Programm.exe'; // Programm Downloaden DownloadEXEZiel:= PChar(ExtractFilePath(ParamStr(0))+ 'Einstellungen\System\Programm.exe'); //ns Zielverzeichnis UrlDownloadToFile(nil, DownloadEXE, DownloadEXEZiel, 0, nil); Von --> Nach Downloaden TimerProgressbar.Enabled:= True; except Label12.Font.Color:= ClRed; Label12.Caption:= ('Download abgebrochen'); end; BtnUpdateDownloaden.Enabled:= False; // Button Downloaden IniProgrammeinstellung:= (ExtractFilePath(ParamStr(0))+ 'Einstellungen\ProgrammSettings.ini'); begin with TMemIniFile.Create(IniProgrammeinstellung ) do try begin WriteBool(DownloadInfo,BtnUpdatInstall,True); WriteBool(DownloadInfo,BtnUpdateueberp ,False); WriteBool(DownloadInfo,BtnDownload,False); UpdateFile; end; finally Free; end; end; Label6.Font.Color:= ClBlack; Label6.Caption:= 'Nicht aktiv'; end; //==========Textdatei auslesen mit Versionsinfo auslesen================================ procedure TUpdateForm.DownloaddateiPruefen; Var List: TStrings; begin List:= TStringList.Create; try List.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'Einstellungen\System\UpdateDatei.txt'); if List.Count>0 then Edit1.Text:=List[0]; Edit2.Text:=List[1]; Edit3.Text:=List[2]; Edit4.Text:=List[3]; finally List.Free; end; //Edit1 und Label11 sind Visble:= False dient nur im Hintergrund zur Überprüfung if StrToInt(Edit1.text) > StrToInt(Label11.Caption) then begin TimerProgressbar.Enabled:= True; Label7.Font.Color:= ClLime; Label7.Caption:= ('Es ist ein neues Update vorhanden!'); BtnUpbdateDownloaden.Enabled:= True; end else begin Label7.Font.Color:= ClRed; Label7.Caption:= ('Sie haben das aktuellste Update!'); BtnUpdateDownloaden.Enabled:= False; end; end; //=========download Progrssbar================================================= procedure TUpdateForm.TimerProgressbarTimer(Sender: TObject); begin Label7.Font.Color:= ClLime; Label7.Caption:= ('Update Download gestartet'); Label12.Font.Color:= ClLime; Label12.Caption:= 'Update Download gestartet'; ProgressBar1.Position := ProgressBar1.Position + 33; if ProgressBar1.Position = 99 then begin ProgressBar1.Position := 100; Label7.Font.Color:= ClLime; Label7.Caption:= ('Download erfolgreich beendet'); Label12.Font.Color:= ClLime; Label12.Caption:= 'Download erfolgreich beendet'; TimerProgressbar.Enabled := False; BtnUpdateInstallieren.Enabled:= True; end; IniProgrammeinstellung:= (ExtractFilePath(ParamStr(0))+ 'Einstellungen\ProgrammSettings.ini'); begin with TMemIniFile.Create(IniProgrammeinstellung ) do try begin WriteString(ProgrammInfo,Programmversion,Edit1.Text); UpdateFile; end; finally Free; end; end; end; //===============Updater aufrufen=============================================== procedure TUpdateForm.Button4Click(Sender: TObject); begin if Form1.MessageDlgPos2('Um das Update zu installieren wird das Programm beendet',mtInformation, [mbNo,mbYes],self) = mrYes then begin BtnUpdateInstallieren.Enabled:= False; //Button Installieren // Updater aufrufen if ShellExecute(Application.Handle,'open',PChar(ExtractFilePath(ParamStr(0)) +'Updater.exe'),Nil, Nil,SW_NORMAL) >= 32 then MainForm.Close; // Programm Schließen Label12.Caption:= ('Status'); Progressbar1.Position:= 0; end else begin end; end; //===========für Blinken vom Label======================== procedure TUpdateForm.Timer2Timer(Sender: TObject); begin Label7.Visible:= Not Label7.Visible; BtnUpdateDownload.Enabled:= true; end; //Internetverbindung Überprüfen============================ function TUpdateForm.IsInternetConectet: Boolean; begin if InternetGetConnectedState(nil,0) then begin Result:= True; end else begin Result:= False; end; end; Jetzt Kommt das Kopieren und Ersetzen des Programms, dazu wurde vorher das Hauptrogramm geschlossen und ein anderes gestartet das sich im Programmverzeichnis befindet.
Delphi-Quellcode:
So das war das ganze Updaten hoffe man sieht das es sehr einfach ist.
private
IniProgrammeinstellung :TFileName; Datei :Textfile; public ServerPfad :String; Const ProgrammInfo = 'Programminfo'; Programmversion = 'Programmversion'; DownloadInfo = 'DownloadInfo'; BtnUpdatInstall = 'Installation steht noch aus'; BtnUpdateueberp = 'Updateüberprüfung'; BtnDownload = 'Downloaden'; { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} //====Programm löschen und Timer für Kopie starten======== procedure TForm1.Button1Click(Sender: TObject); begin DeleteFile(ExtractFilePath(ParamStr(0)) + 'Programm.exe'); TimerUpdaten.Enabled:= True; end; //==Progessbar und Kopieren starten======================== procedure TForm1.TimerUpdatenTimer(Sender: TObject); begin TimerKopieren.Enabled:= True; // Kopieren starten ProgressBar1.Position:= ProgressBar1.Position + 33; if ProgressBar1.Position = 99 then begin ProgressBar1.Position:= 100; TimerUpdaten.Enabled:= False; end; end; procedure TForm1.TimerKopierenTimer(Sender: TObject); var NeuesUpdate,AltesUpdate :string; List: TStrings; begin NeuesUpdate:= (ExtractFilePath(ParamStr(0)) + 'Einstellungen\System\Programm.exe'); AltesUpdate:= (ExtractFilePath(ParamStr(0)) + 'Programm.exe'); begin CopyFile(PChar(NeuesUpdate), PChar(AltesUpdate), true); begin List:= TStringList.Create; try List.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Einstellungen\System\UpdateDatei.txt'); if List.Count > 0 then Edit1.Text:= List[0]; finally List.Free; end; IniProgrammeinstellung:= (ExtractFilePath(ParamStr(0)) + 'Einstellungen\ProgrammSettings.ini'); begin with TMemIniFile.Create(IniProgrammeinstellung) do try begin WriteString(ProgrammInfo,Programmversion,Edit1.Text); WriteBool(DownloadInfo,BtnUpdatInstall,False); WriteBool(DownloadInfo,BtnUpdateueberp ,True); WriteBool(DownloadInfo,BtnDownload,False); UpdateFile; end; finally Free; end; end; TimerUpdaten.Enabled:= False; MessageDlg('Update erfolgreich durchgeführt, Sie können das Programm jetzt wieder starten', mtInformation, [mbOK], 0); Close; end; end; end; Im Anhang noch mal die Oberfläsche der Updateüberpüfung Ich weis das mit der Progressbar könnte man noch schöner machen. Gruß sascha
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...
Surft Ihr mit dem Taschenrechner?" |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |