Mega Code Archive

 
Categories / Delphi / Examples
 

How to Detect and Download a new version of (an own) application

Title: How to Detect and Download a new version of (an own) application uses {...,}IniFiles, UrlMon, type TForm1 = class(TForm) {...} private winsc: TiniFile; old: Integer; vernfo: TIniFile; end; implementation {$R *.dfm} function DownloadFile(Source, Dest: string): Boolean; { Function for Downloading the file found on the net } begin try Result := UrlDownloadToFile(nil, PChar(Source), PChar(Dest), 0, nil) = 0; except Result := False; end; end; function GetPathPath: string; { Retrive app path } begin Result := ExtractFilePath(Application.ExeName); end; procedure TForm1.DownLoadNewVersion1Click(Sender: TObject); var apath: string; new: Integer; begin // This is the exact code from my application apath := GetPathPath; Gauge1.Progress := 0; StatusBar1.SimplePanel := True; StatusBar1.SimpleText := 'Connecting to http://tsoft.home.ro'; Gauge1.Progress := 20; if DownloadFile('http://www.tsoft.home.ro/update.ini', PChar(apath) + '/update.ini') then begin Gauge1.Progress := 50; StatusBAr1.SimplePanel := True; StatusBar1.SimpleText := 'Checking for newer versions...'; vernfo := TiniFile.Create(GetPathPath + '/update.ini'); new := vernfo.ReadInteger('version', 'wsc', 7); vernfo.Free; if (old = new) then begin StatusBar1.SimplePanel := True; StatusBar1.SimpleText := 'No new version detected'; Gauge1.Progress := 100; end else if DownloadFile('http://www.tsoft.home.ro/winsafe.exe', PChar(apath) + '/winsafe.exe') then begin ShowMessage('Update succeseful'); Gauge1.Progress := 100; winsc := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); winsc.WriteInteger('wsc', 'vernfo', new); winsc.Free; end else MessageDlg('A new version has appeard but it requires a second install', mtInformation, [mbOK], 0); end else begin StatusBar1.SimplePanel := True; StatusBar1.SimpleText := 'Failed to connect probably a internet problem'; Gauge1.Progress := 0; end; end; procedure TForm1.FormCreate(Sender: TObject); begin //App version winsc := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); try old := winsc.ReadInteger('wsc', 'vernfo', 1); finally winsc.Free; end; end; end. The concept is very simple u download a ini file from your website that contains the version you compare it with the one from your computer and it downloads the file if the versions are Not equal if you find any froblems write me.