通过网络自动升级: 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.}
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.}
http://www.aslike.net