Hola:
Con relacion a la actualizacion de un programa lo que hago es un pequeno ejecutable que realiza la comparacion de la fecha de modificacion tanto del programa que esta en la maquina de los usuarios con la del servidor o PC donde esta la ultima version y si es mas nueva la remplazo, eso si el usuario tiene que tener privilegios para poder sobrescribir porque si el programa esta en Archivos de programa y es un usuario limitado no podra hacerlo.
y ese ejecutable al final llama al verdadero programa.
aqui te envio un codigo que puede te sirva:
Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
fecha1, fecha2: Double;
function GetFileDate(TheFileName: string): Double;
var
FHandle: integer;
begin
FHandle := FileOpen(TheFileName, 0);
try
Result := Int(FileDateToDateTime(FileGetDate(FHandle)));
finally
FileClose(FHandle);
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
ShortDateFormat:= 'MM/dd/yyyy';
fecha1:= GetFileDate('C:\Archivos de programa\Programa\pepe.exe');
WinExec(PChar('net use G: \\Servidor password/user:administrador'),SW_HIDE);
fecha2:= GetFileDate('G:\\sadvalcajero.exe');
if fecha2 > fecha1 then
CopyFile(Pchar('\\192.168.10.16\temp\pepe.exe'), Pchar('C:\Archivos de programa\Programa\pepe.exe'), False);
WinExec(PChar('net use G: /delete'),SW_HIDE);
Close;
//
WinExec(PChar('C:\Archivos de programa\Programa\pepe.exe'),SW_SHOWNORMAL);
end;
end.
Saludos
Luis Garcia