Ir al contenido


Foto

Consejo para actualizar la version de ejecutable y su .ini

Actualizacion de version

  • Por favor identifícate para responder
2 respuestas en este tema

#1 seba_13680

seba_13680

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 25 marzo 2017 - 06:19

Buenas noches a todos¡
y antes que nada quiero agredecer a todos por las respuestas y la informacion compartida
 
Estoy en el desarrollo de una aplicacion que realiza copias de seguridad en la cual el usuario puede seleccionar dia y hora
 
Consta de :
 
-Servicio.exe que tiene la funcion de controlar la ejecucion, cada determinado tiempo, de Launcher.exe, si no esta ejecutandose lo ejecuta (Gracias Escafandra por la paciencia y por los consejos)
 
-Launcher.exe que cumple la funcion de estar ejecutandose en la barra de tareas al lado del reloj, y desde donde el usuario puede                  seleccionar el dia y la hora a realizar las copias, generando launcher.ini en donde guarda la configuracion y de acuerdo al dia y hora ejecuta Copias.exe
 
-ModuloAlta.exe se encarga de dar de alta el usuario, crear los hosts conocidos para ssh y generar las llaves, y subirlas, ademas de generar config.ini que luego va a leer Copias.exe
 
-Copias.exe que es el que se encarga de subir las copias de los directorios a un servidor Debian por medio de llaves a traves de ssh usando rsync, lee un config.ini en donde guarda usuario, direccion ip
 
Mi consulta es la siguiente: 
 
-Algun consejo para poder actualizar la version desde el servidor, teniendo en cuenta que todos los usuarios tienen la misma estructura de directorios, pudiendo generar un bash para hacer las copias cada vez que genero un copias.exe nuevo
 
-Tenia pensado tambien que copias.exe antes de subir los archivos, descargue copias.exe desde el servidor por medio de un modulo actualiza.exe que lo podria reemplazar
 
-O por medio de un .ini que tenga un numero de version y sea comparada por un .ini en el servidor
 
-Usar Launcher.exe que siempre esta ejecutandose para controlar la version local y la que se encuentra en el servidor
 
Cualquier consejo o sugerencia u orientacion siempre es bienvenida¡ Saludos y gracias por todo¡

  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 26 marzo 2017 - 03:37

Para tus actualizaciones puede bastar una dll. La lógica sería así: App principal es informada de que se necesita una actualización, entonces termina las tareas pendientes que usan la dll y la descarga del proceso con un FreeLibrary. Acto seguido descarga de la red la nueva versión y realiza un LoadLibrary.

Para que esto funcione la dll debe exportar una función que devuelva la versión y su uso debe ser por carga dinámica, no estática. Esto supone tener una función o procedimiento de carga de la dll y actualización de todos los punteros a las funciones exportadas por la dll. Otra solución más simple sería que el grueso del funcionamiento estuviese en la dll y que el programa principal fuese un simple descargador de nuevas versiones que una vez realizada su función cede el control al grueso del la app en la dll. 

 

Si no te convence el asunto de la dll, puedes hacerlo con ejecutables, como propones, pero eso supone tener un ejecutable más y cerrar la app principal para que se pueda actualizar para arrancarla tras haberlo hecho, en caso contrario no podrás sobreescribir su archivo.

 

Saludos.


  • 1

#3 seba_13680

seba_13680

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 26 marzo 2017 - 10:51

Buenas noches Escafandra y gracias por la pronta respuesta, se entendio perfectamente el consejo¡

estuve investigando al respecto sobre la posibilidad de incorporar la actualizacion por dll

y lo voy a tener en cuenta para la proxima version del desarrollo, por el momento, buscarè la manera de hacerlo por reemplazo del ejecutable

desde otra aplicacion, ya que por el tema de las librerias aun escapa a mis actuales capacidades con Delphi

Gracias de nuevo y exitos por allà¡  


  • 0




IP.Board spam blocked by CleanTalk.