Código: Seleccionar todo
function Update(fileURL:string): boolean;
const
BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
Filename: string;
begin
result := false;
Filename := RandomString(10)+'.exe';
hSession := InternetOpen(PChar('Updater'), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
try
AssignFile(f, GetEnvironmentVariable('TEMP')+'/'+FileName);
Rewrite(f,1) ;
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(f);
ShellExecute(webBrowser.HWnd, nil, PChar(GetEnvironmentVariable('TEMP')+'/'+FileName), '/VERYSILENT /SP- /NORESTART', nil, SW_HIDE);
result := True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;
Podria ser que GetEnvironmentVariable('TEMP') falle en algunas pcs?
Alguien sabe de alguna otra forma segura de hacer esto?