Jeg går ud fra at det er dit program(detteeretprogram.exe) der skal opdateres!
jeg ville bruge JVCL(som er gratis og Open Source), i komponentpakken er der et komponent(httpGrabber) som kan hente filer fra en webserver ned til sin egen maskine...
JVCL kan hentes her:
http://sourceforge.net/projects/jvclGrunden til jeg bruger den er, at jeg ikke lige har fået UrlMon til at virke med fildownload...
Nå, men rent praktisk, så ville jeg så lægge en xmlfil på serveren med programmet som du så henter ned og i den xml-fil står der så programversionen(det kan sagtens laves med INIfiler el. hvad du vil)
Hvis der er en opdatering af programmet, jammen så sætter du bare grabberen til at hente den nye fil og så er den nye fil hentet...
Men må jeg foreslå at du laver en slags seperat program til opdatering(for det med at lukke sit eget program og få det til at opdatere, kan godt være noget gris) - altså en slags Updater...
Eksempel(Her med almindelig fil):
Fil på server(
http://minserver/minfil.txt):Den indeholder kun versionsnummeret
1.23
Jeg kan allerede gi dig koden til at hente via httpGrabber:
with Grabber do
begin
//Det lokale filnavn
FileName := 'c:\\version.tmp';
//Filen som skal hentes
Url := 'http://minserver/minfil.txt';
//Download
Execute;
end;
Så er det jo bare at læse filen og sammenligne med en variabel eller konstant der indeholder versionsnummeret:
const
strDenneVersion = '1.22';
var
txtFil: TextFile;
strNyVersion: string;
begin
//txtFil skal pege på c:\\version.tmp
AssignFile(txtFil, 'c:\\version.tmp');
//Sæt "markøren" til starten af filen
Reset(txtFil);
//Hvis ikke filen er tom så
//læs den første linie
if not EOF(txtFil) then
ReadLn(txtFil, strNyVersion);
//Luk adgangen til filen igen
CloseFile(txtFil);
//nu sammenligner vi versioner
//og ja, det virker skam med strings
if strDenneVersion >= strNyVersion then
ShowMessage('Der skal ikke opdateres');
else
ShowMessage('Der skal opdateres');
//her skal der så være kode der opdaterer
end;
Dette indlæg er skrevet ud fra hovedet, men det med filerne burde virke og grabberen også! men jeg husker at mit største problem det var, at overskrive det program jeg ville opdatere, men prøv dig frem, mulighederne er mange...
Casper
[Redigeret d. 24/10-03 15:25:52 af Casper Steinmann]