Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2005
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 239
Poder: 21
trex2000 Va por buen camino
Copiar actualizacion

Saludos:
Tengo una aplicacion que funciona en varias computadoras en red, y cada vez que hago una modificacion hay que llevarle la actualuzacion a su computadora, lo que pasa es que son alrededor de 30 computadoras y quedan muy retiradas unas de otras y lo que se me estaba ocurriendo es ver si pongo el exe en servidor de acceso comun cuando el programa se ejecute y verifique la fecha del archivo del sevidor y la compare con la fecha del archivo que se tiene actualmente y si es una version por llamarle asi es mas nueva que la que tengo que se copie solo, nomas que como el archivo esta en uso me marca un error, mi duda es como poder hacer esto si que se tenga que salir del programa?

De antemano muchas gracias.
Responder Con Cita
  #2  
Antiguo 13-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Es imposible.

Se pueden hacer mil trucos, pero desde luego tienes que salir del programa y luego entrar de nuevo.


Opciones: Esto procede del archivo NKFILES.pas de la libreria NKLIBS
Código Delphi [-]
procedure AutoDeleteExeBF;
const
  DEL_BAT = '$%AUTODL.BAT';
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  cBatFile, cExeFile: String;
  F: TextFile;
begin
  cExeFile := ParamStr(0);
  cBatFile := ExtractFilePath(cExeFile) + DEL_BAT;
  AssignFile(F, cBatFile);
  Rewrite(F);
  WriteLn(F, ':Bucle');
  WriteLn(F, 'DEL ' + cExeFile);
  WriteLn(F, 'IF EXIST ' + cExeFile + ' GOTO Bucle');
  WriteLn(F, 'DEL ' + cBatFile);
  CloseFile(F);
  ZeroMemory(@SI, SizeOf(SI));
  with SI do
  begin
   cb := SizeOf(SI);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_HIDE;
  end; (*with*)
  if CreateProcess(nil, pchar(cBatFile), nil, nil, False,
                   CREATE_SUSPENDED or IDLE_PRIORITY_CLASS,
                   nil, nil, SI, PI) then
  begin
    // Lower the batch file's priority even more.
    SetThreadPriority(PI.hThread, THREAD_PRIORITY_IDLE);
    // Raise our priority so that we terminate as quickly as possible.
    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
    SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
   // Allow the batch file to run and clean-up our handles.
    CloseHandle(PI.hProcess);
    ResumeThread(PI.hThread);
    // We want to terminate right away now so that we can be deleted
    CloseHandle(PI.hThread);
  end (*if*);
end (*AutoDeleteBF*);

Puedes copiar el archivo del servidor a la carpeta donde está el programa, cambiandole el nombre, despues modificas ese .bat que se está creando al vuelo, de tal forma que una vez borrado el archivo exe, se renombre el que se ha bajado desde el servidor, y por último lo mandes a ejecutar.

El resultado para el usuario final, es que pulsando un boton, tu programa se cierra y se vuelve a abrir (ya actualilzado).

Saludos
Responder Con Cita
  #3  
Antiguo 13-03-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Talking

Se me ocurre algo.

Crear un exe que compare el archivo del cliente con el que esta en el servidor, si este ultimo es ma reciente que lo copie y despues ejecute, de lo contrario solo ejecutar

Código:
  if fecha(c:\cliente\..\archivo.exe) < fecha(\\servidor\..\archivo.exe) then
begin
  delete c:\cliente\..\archivo.exe
  copy \\servidor\..archivo.exe to c:\cliente\..\
end;
 
ejecuta archivo.exe
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 14-03-2005
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Cita:
Empezado por trex2000
Saludos:
una aplicacion que funciona en varias computadoras en red
Mis aplicaciones suelen ser pequeñas y no necesitan instalación (a veces solo hay que configurar el BDE y esto no cambia con las actualizaciones del programa). Así que me limito a dejar la aplicación en el servidor y en los puestos de trabajo les creo un acceso directo. Cuando hay modificaciones sobreescribo el ejecutable en el servidor (cuando no hay nadie trabajando).
El problema radica en el tiempo que tarda en cargarse inicialmente la aplicación.... ¿con una red a 100Mb?... segundos.

En otra aplicación (pesa varios megas y se distribuye por internet) utilizo un conjunto de banderas:
* Una indica la versión, la compara con la versión de la aplicación en la base de datos y decide si debe copiar al PC local algún archivo. Si copia algo se cierra la aplicación y vuelve a arrancarse, renombrando ficheros y actualizando las banderas.

Esto te implica dos ejecutables: una lanzadera que hace todo lo que te he comentado antes y la aplicación en sí, que es llamada por la lanzadera cuando todo está correcto.

Este sistema es bastante sencillo de implementar, nosotros lo tenemos para que se instale así mismo, para que compruebe diferentes versiones del programa lanzadera, del programa principal, de los archivos de ayuda,...

Saludos,
__________________
Rafita.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:20:51.


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
Copyright 1996-2007 Club Delphi