Página 1 de 1

Actualizar Programas compilados en caliente

Publicado: 13 Feb 2014, 10:35
por juantxo
Buenos dias autoiteros de pro! :smt039

Vuelvo mi mirada a este foro en busca de ayuda, aunque lo sigo leyendo y aprendiendo casi a diario. :smt007

Os cuento mi duda, y a ver si me podeis ayudar... :smt022

Llevo cinco años haciendo programas en AutoIt!, que automatizan y facilitan procesos para mi trabajo, y para el de mis compañeros. Los hay con varias funciones y finalidades, desde leer unos datos de una base de access para consultar telefonos y otros datos, hasta hacer consultas a varios servidores de SQL y varias bases de datos en cada uno, exportando los resultados a Excel si se requiere. :smt029

Bueno pues la duda que tengo es a la hora de compilarlos y aplicar novedades. :smt037

Al principio creé un Script que se lanzaba despues de compilar las aplicaciones, y comprobaba si habia cambios en los .exe fuente. En caso afirmativo los copa a un recurso de red que es donde se ejecutan por todo el grupo. :smt017

Como el mantenimiento de esta 'copiador' se volvio un poco locura, configuré los fuente para que automaticamente, desde el AutoIt3Wrapper se hiciese la copia del archivo tras la compliacion. :smt017
Por ejemplo:

Código: Seleccionar todo

#AutoIt3Wrapper_Run_After=Copy "%out%" "X:\Utilidades\Ejecutables\WOL.exe"
:smt033

Incluso uno de los programas lo configuré para que comprobase si hay una version mas reciente de si mismo, y en ese caso guarde el estado (textos, opciones, etc.) en un .ini, lance otro .exe que espera a que el primero se cierre y entonces copia el nuevo machacando el viejo, y vuelve a abrir la nueva version cargando las opciones desde el INI :smt017

Y tras la presentacion del escenario, mis dudas... :smt022

En ocasiones, cuando el archivo destino (el .exe que se usa por todo el grupo) esta en uso por alguno de mis compañeros, la copia no se realiza, y encima el archivo queda como 'corrupto' y nadie puede acceder a el (solo el que lo tenia abierto con anterioridad).

¿Hay alguna forma de comprobar si un archivo esta en uso?
¿Se os ocurre alguna forma de poder actualizar los ejecutables finales, sin depender de si se estan usando? No todos los usuarios estamos fisicamente en el mismo lugar, y a veces es complicado averiguar quien esta utilizando la aplicacion... :smt014


Gracias por adenlantado, y perdon por la chapa! :smt021

Re: Actualizar Programas compilados en caliente

Publicado: 13 Feb 2014, 14:50
por arkcrew
Hola,

Se me ocurre que cuando el archivo (cualquiera de tus programas) se abra cree en un archivo ini un registro que ponga que máquina está utilizándolo y que lo libere cuando se cierre la aplicación, así tu antes de copiar compruebas que no exista registro y si lo hay puedes saber quién es el que lo utiliza.

Es una idea, supongo que ya te comentarán más, pero para empezar creo que es una buena forma.

Saludos!