28 ago 2012

Actualizar automáticamente nuestra aplicación (5)

Ya para finalizar veremos la opción de realizar las operaciones de renombrado y limpieza con un archivo por lotes.

En primer lugar, dejar claro el trabajo final:
  • Borrar la versión actual/recursos no necesarios (o hacer un backup, o lo que proceda...).
  • Renombrar, parar conservar el nombre.
  • Ejecutar la nueva versión.

Fácil, si el archivo por lotes se encuentra en el mismo path que los recursos, podremos implementar las operaciones de inmediato (en caso contrario nos dirigiremos al path de nuestra aplicación, véase el comando "cd [path]")

Parar borrar la apliación vieja, procederemos de esta manera:

      :label
      del /f /q miApp.exe
      if exist miApp.exe goto label

La razón de ser del bucle se debe a que el archivo por lotes se ejecuta justo antes de cerrar la aplicación (miApp.exe), por lo que es posible que nos mande Access Denied en un principio (claro, aún está cerrando).

Renombrado de la nueva aplicación:

      rename miAppNEW.exe miApp.exe

Ejecución de la nueva versión:

      start miApp.exe

Y para darle el toque profesional, ¡nos borramos! (el archivo por lotes :p):

      del %0

¡Recuerda borrar el resto de recursos si se nos queda algo!

La codificación de esto es simple, con texto plano (TextFile) y guardando con la extensión '.bat' va genial. Tras codificar y crear el archivo por lotes, lo ejecutamos y salimos al sistema.

        WinExec('AppUpdate.bat', SW_HIDE);
        Halt;

Y listo, con esto terminamos una visión por encima de una de las posibles maneras de controlar una actualización, desde el control interno, hasta el último detalle de reinicio de la aplicación. Todo de manera simple y con la menor cantidad posible de intermediarios.

Y ya era hora de terminar este mini-tuto, que ya me aburría hasta yo xD

Salu2.






No hay comentarios:

Publicar un comentario