Estoy programando una app en delphi y quiero hacer un updater, hice esta function:

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;
Lo que se ejecuta es el installer que se encarga de updatear la aplicacion, en mi pc funciona bien, y en un par mas que probe tbm, pero muchas otras no se updatean, y no tengo ninguna RAT ni nada para debuggear en esas pcs q no anda, en todas mis pcs funciono bien.
Podria ser que GetEnvironmentVariable('TEMP') falle en algunas pcs?
Alguien sabe de alguna otra forma segura de hacer esto?
Responder

Volver a “Delphi”