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 03-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
reemplazar un EXE que está en uso

Hola!!

¿Existe alguna manera de poder reemplazar un EXE que está siendo usado?

Supongamos que tengo una aplicación 'ventas.exe' que está siendo utilizado por n usuarios, pero tengo la urgencia de actualizar esa aplicación. No me importa que a los n usuarios les aparezca un error.
Al intentar copiar el nuevo exe me sale un error de que dicho archivo está siendo utilizado. Se que una alternativa es ir uno por uno y pedirle que salga pero ¿existe alguna otra manera de forzar dicha copia?

Todos los usuarios trabajan con Windows y existe una única aplicación (ventas.exe) que está alojada en un servidor NT y desde el cual acceden los usuarios.

Gracias por las sugerencias !!
__________________
Carlos Marí
Responder Con Cita
  #2  
Antiguo 03-12-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Respuesta corta : No (y creo que vato el récor )

Respuesta larga : en NT, lo que podrías hacer es cerrar el recurso compartido y luego actualizar el exe. Eso sí, el problema es que los clientes no se enterarían de que ese recurso compartido ha sido cerrado (ya que no se les cerrará la app) hasta que intenten hacer algo con ella, lo que les provocara unos bonitos errores.
La verdad es que no creo que sea la manera más correcta, pero si lo quieres hacer..... Yo te recomendaría otras alternativas menos drásticas cómo tener, por ejemplo, un ejecutable de pruebas y sólo actualizaras ese y los clientes que necesiten de los cambios, que atacaran temporalmente a ese en lugar de al real
Responder Con Cita
  #3  
Antiguo 03-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Otra solución que utilizo yo, es que los usuarios no ejecutan directamente el programa Ventas.exe, sinó que ejecutan el archivo de proceso por lotes Ventas.bat (también en el servidor).

Ese archivo por lotes es el que realmente llama a Ventas.exe. Cuando quiero cambiar el programa, simplemente lo copio como Ventas2.exe y modifico el Ventas.bat para que llame al nuevo ejecutable.

La próchima vez que los usuarios entren al programa, entrarán en el ejecutable correcto.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 03-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Un caso Particular:
Si un Win9x ejecuta un EXE de 16Bits en un servidor NT/2000... El administrador del servidor puede sobreescribir en EXE sin tener la necesidad de desconectar a los usuarios previamente.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 03-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
muchísimas gracias por las sugerencias, me han sido de gran utilidad.

Hay una gran verdad cuando se dice que 'la experiencia hace la diferencia'.

Gracias por compartir sus experiencias !!
__________________
Carlos Marí
Responder Con Cita
  #6  
Antiguo 03-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
aquí estoy de vuelta ...

Ha probado haciendo un bat, solo que me aparece una ventana de DOS y luego se ejecuta mi aplicación normalmente. ¿Existe alguna manera de que esa ventana de DOS no aparezca?
__________________
Carlos Marí
Responder Con Cita
  #7  
Antiguo 03-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

¿ Has probado a configurar el acceso directo que pones en el ordenador de los usuarios ?. En las propiedades, pestaña acceso directo, prueba a seleccionar Minimizada en la opción Ejecutar. NOTA : En esta misma pantalla puedes seleccionar un icono para el acceso directo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 03-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
la opción de minimizado me funcionó bien, solo que me gustaría que no me quedase esa ventana de DOS ... se que soy muy fino ... pero ojalá se pudiese eliminar. De hecho es lo que hago, la elimino manualmente con el mouse y luego sigo trabajando con mi aplicación.

El tema es, además de utilizar la opción de minimizado, encontrar un comando o algo que me cierre la ventana para que no quede en la barra de estado esperando nada.

Gracias !!! ... en el 'consejo de muchos hay sabiduría'
__________________
Carlos Marí
Responder Con Cita
  #9  
Antiguo 03-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Prueba poniendo una línea exit dentro del archivo de proceso por lotes, después de llamar al ejecutable. Esto debería finalizar la sesión DOS.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 03-12-2003
hogol hogol is offline
Miembro
 
Registrado: jul 2003
Posts: 62
Poder: 21
hogol Va por buen camino
Un exe se puede reemplazar siempre que quieras, aunque esté en ejecución.
El truco consiste en renombrar el exe antiguo. Luego se copia el exe nuevo y en paz.
Los usuarios que usan el exe no se enteran de nada y siguen trabajando con la versión antigua hasta que cierran el programa y vuelven a entrar.

Saludos
Hogol
Responder Con Cita
  #11  
Antiguo 03-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
he puesto el Exit y no sale. Hasta que no sale de la aplicación (ventas.exe) no se va esa pantalla de DOS.
__________________
Carlos Marí
Responder Con Cita
  #12  
Antiguo 03-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Entonces, en lugar de ejecutar directamente la aplicación, usa el comando start.

Ejplo.

start Ventas.exe
exit

Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #13  
Antiguo 04-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
Funcionó !!!

Coloqué el Start y no fue necesario el Exit.

Mil Gracias !!!
__________________
Carlos Marí
Responder Con Cita
  #14  
Antiguo 04-12-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
Cita:
Un exe se puede reemplazar siempre que quieras, aunque esté en ejecución.
El truco consiste en renombrar el exe antiguo. Luego se copia el exe nuevo y en paz.
Los usuarios que usan el exe no se enteran de nada y siguen trabajando con la versión antigua hasta que cierran el programa y vuelven a entrar.
Intenté renombrar un archivo exe que está siendo usado y no me lo permite, ya que 'está siendo usado por otra persona o programa'
__________________
Carlos Marí
Responder Con Cita
  #15  
Antiguo 04-12-2003
hogol hogol is offline
Miembro
 
Registrado: jul 2003
Posts: 62
Poder: 21
hogol Va por buen camino
Pues yo lo hago muy a menudo y siempre me ha funcionado bien.
Normalmente lo que hago es cambiar la extension del fichero de .exe a .old
Misterios de la informática....
Responder Con Cita
  #16  
Antiguo 04-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una forma de hacer esto funcionalmente idéntica a la que propone guillotmarc pero sin utilizar archivos bat podría ser construirte una pequeña aplicacíón Delphi que se encargue de lanzar el programa:

Código:
program Loader;

uses
  Windows,
  SysUtils;

{$R *.res}

begin
  if not FileExists('ventas.exe') then
    raise Exception.Create('No se encuentra la aplicación ventas');

  if FileExists('ventas2.exe') then
  begin
    DeleteFile('ventas.exe');
    RenameFile('ventas2.exe', 'ventas.exe');
  end;

  WinExec('ventas.exe', SW_SHOW);
end.
Este prorama no tiene formularios, sólo el archivo dpr.

El programa de ventas lo llamarías ventas2 para evitar renombrarlo tú mismo. Cada vez que haces un cambio en el programa simplemente tienes que colocar la nueva versión de ventas2.exe en el directorio donde esté ventas.exe y loader.exe y este último se encarga de utilizar la nueva versión cuando vuelva a arrancar y de borrar la anterior.

// Saludos
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 02:17:45.


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