Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Como hariais este actualizador en delphi 5 ? (https://www.clubdelphi.com/foros/showthread.php?t=65280)

radge 02-12-2009 18:59:07

Como hariais este actualizador en delphi 5 ?
 
Buenas tengo un proyecto que me gustaria que cada vez que se ejecuta o cada "x" dias o una condición "X" Consulte un ftp o bien un directorio compartido e intente copiar ese archivo.
Un ejemplo tengo el ejecutable TEST1.EXE , cuando se abre (formshow , formcreate)... deberia comprobar si hay una versión más nueva de dicho ejecutable , si lo encuentra lo descarga ok.
Pero claro una vez descargado si lo descargo como TEST2.EXE como le digo desde el primer ejecutable que lo renombre ?
Porque si tengo TEST1.EXE en ejecución no hay forma de decirle que se cierre... se autorenombre a TEST_OLD.EXE... y el que era TEST2.EXE lo renombre a TEST.EXE

Vaya tocho :P

Alguien se ha encontrado con una situación similar ?

gracias radge

duilioisola 02-12-2009 19:48:38

Puedes descargarlo y luego ejecutar un batch que te haga el trabajo final.
Justo antes de cerrar la aplicacion (OnClose) generas este batch y lo ejecutas:
Código:

@echo off
rem Ejecuto 2 ping para darle tiempo al programa a cerrarse
ping localhost > null
ping localhost > null

rem Renombro el ejecutable
ren test.exe test_old.exe

rem Renombro la nueva version
ren test_new.exe test.exe

rem Ejecuto nuevamente
text.exe


radge 03-12-2009 09:05:20

Buenas !

Gracias por la respuesta , la verdad que esto del batch no se que es.
Supongo que será ejecutar un archivo .BAT ?

Entonces en el evento OnClose ejecuto un archivo.bat que contenga ese codigo ?

gracias , radge

duilioisola 03-12-2009 09:25:24

Exacto.
Puedes crearlo de la siguiente forma:

Código Delphi [-]
procedure TFMMain.FormClose(Sender: TObject;
  var Action: TCloseAction);
var
   s : TStrings;
begin
   s := TStringList.Create;
   s.Clear;
   s.Add('@echo off');
   s.Add('ping localhost > null');
   [...]
   s.SaveToFile('C:\CopiaVersion.BAT');
   s.Free;

   winexec(PChar('C:\CopiaVersion.BAT', SW_MINIMIZE);
end;


La franja horaria es GMT +2. Ahora son las 14:04:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi