26 ago 2012

Actualizar automáticamente nuestra aplicación (1)

Bueeeeno, y al grano con lo que me mola.

La programación... menudo rollo eh? Suena complejo eso... (no vayamos de listos infravalorando este mundillo :p) El hecho de poder automatizar tareas, sea del tipo que sea, es el clímax de la humanidad. La tecnología desarrollada en los últimos años se lo debemos al avance que proporciona la automatización de procedimientos de toda clase, desde mecanismos físicos a sistemas inteligentes por ordenador.

Para nosotros, los programadores, ¿cómo podemos mejorar la calidad de nuestros programas? Pues dentro de una larga variedad de cosas a tener en cuenta, una de ellas, y en mi opinión, de gran valor, el automantenimiento.

Cualquier error cometido, por mínimo que sea, nos obligaría a actualizar nuestro software. ¡Menudo marrón sería tener un programa público con miles de usuarios con un bug en sus entrañas! Que a pesar de siempre evitar esto, suele pasar. (Y si no, mira tú la de parches que salen cada día para las aplicaciones ya desarrolladas).

Hasta aquí podemos resumir que un módulo encargado de sustituir, tanto recursos, como la propia aplicación en sí, es necesario cuando esta es distribuida al público.

Este es el último proyecto que me marqué como trabajo personal en este verano. Es un módulo sencillo que simplemente sustituye la aplicación principal por la nueva, nada de recursos. que soy muy vago y no me pagan

La idea es simple, el algoritmo principal del módulo sería:
  1. Buscar posible actualización.
  2. En caso afirmativo, preguntar/forzar la actualización.
  3. Proceder con la actualización y sustitución de ficheros/recursos
  4. Finalizar cediendo el control a la aplicación
Hablemos por separado de cada apartado:

1.  En esta primera parte tenemos que pensar CÓMO comunicarnos con nuestra aplicación una vez esté vetetúasaberdonde. (Siempre me lo imagino como si enviara un satélite al espacio, tiene que ser capaz de reaccionar ante cualquier improvisto). En este paso he optado por comunicación vía web por texto simple. Básicamente tenemos una página de libre acceso con un "galimatías" para cualquier visitante, no para nuestra aplicación, que sabrá interpretarlo.

MiAplicación*Versión
El separador '*' será la referencia, siendo la primera parte el nombre de la aplicación y la segunda, la versión publicada. (Nota: esto es solo un ejemplo, se podría codificar de milyuna maneras) También podríamos aprovechar espacio y realizar una lista entera.
MiAplicación1*Versión1
MiAplicación2*Versión2
MiAplicación3*Versión3
...
Recordar que el salto de línea es un carácter de la tabla ASCII (es lógico, de alguna manera se tenía que representar)


2. ¡Existe una actualización! Procederemos a preguntar o forzar actualización (en mi caso, opté por una actualización voluntaria, en determinados casos sería conveniente una actualización forzada, y para esto deberíamos añadir más información en el paso #1 (Les recuerdo que #1 es la vía de comunicación con nuestra aplicación)).

3.  Procederemos a descargar la nueva actualización, si procede. Dejando los recursos preparados para su sustitución.

4. Deberemos finalizar el programa principal, pues seguramente se tenga que sustituir por la versión superior.

- Ey....
- ¿Qué?
- Si cierras el programa... ¿cómo sigues ejecutando código automáticamente?
- Buena pregunta

Cederemos el control a una aplicación externa, que se encargará de este trabajo (eliminación y renombrado de recursos). En mi caso opté por la vía fácil, y le cedí el control a un archivo por lotes. OhYes.

</Fin de parrafada padre>

Ya seguimos mañana en profundidad con esto, que toca descansar :D

Salu2.

No hay comentarios:

Publicar un comentario