Ver Mensaje Individual
  #10  
Antiguo 31-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Aunque pienso que es complicarse demasiado, aquí te dejo una manera de hacerlo usando un archivo bat. Cuando quieras actualizarte, llama a la siguiente función pasándole la ruta del nuevo ejecutable, y cierra tu programa. El archivo bat se encargara de actualizar y volver a ejecutar tu aplicación.

Código Delphi [-]
procedure Actualizate(Nuevo: string);
var
  Actual: String;
  Buffer: array[0..MAX_PATH] of Char;
begin
  if GetShortPathName(PChar(ParamStr(0)),@Buffer, Sizeof(Buffer) -1) = 0 then
    Exit;
  Actual:= String(PChar(@Buffer));
  if GetShortPathName(PChar(Nuevo),@Buffer, Sizeof(Buffer) -1) = 0 then
    Exit;
  Nuevo:= String(PChar(@Buffer));
  with TStringList.Create do
  try
    Add(':BUCLE');
    Add('Del ' + Actual);
    Add('if %ERRORLEVEL% NEQ 0 goto BUCLE');
    Add('Copy ' + Nuevo + ' ' + Actual);
    Add('Start ' + Actual);
    SaveToFile(ChangeFileExt(ParamStr(0),'.bat'));    
    ShellExecute(0,nil,PChar(ChangeFileExt(ParamStr(0),'.bat')),nil,nil,SW_SHOW);
  finally
    Free;
  end;
end;

// Ejemplo de uso
Actualizate('c:\Windows\Temp\nuevo.exe');
Halt; // Lo apropiado seria usar close, o algo similar
Responder Con Cita