Intentando crear un instalador para Windows

15 mayo 2009

He decidido aparcar de momento el resumen de las transferencias, ya que prefiero antes lograr un instalador para Windows de lo que ya está hecho. Para ello,  he estado investigando desde hacer varios días sobre cómo generar los instaladores. La idea es primero, generar un ejecutable de Unimail con todas sus dependencias, de tal forma que, se pueda ejecutar sin instalar nada más en el sistema y después, generar un instalador que instale dicho ejecutable.

Antes de generar el ejecutable, hay que comprobar que el programa se puede ejecutar mediante Python de forma normal (una vez que se hayan instalado las librerías necesarias, como GTK+, Libglade, etc.). No conseguí que se ejecutara, debido a un error que desconocía (la ventana se quedaba “congelada”), por lo que ha sido bastante frustrante para mí.

Afortunadamente, ayer, descubrí lo que pasaba: en el código de la interfaz gráfica, se trataban mal los hilos (threads) de GTK+. Ahora, sí he conseguido ejecutar el programa en Windows y, después de realizar algunos pequeños cambios en el código y realizar pruebas, crearé una nueva versión de Unimail que dispondrá de un instalador para Windows.


Trabajando en el resumen

22 abril 2009

Ahora mismo me encuentro trabajando en el resumen de las descargas y envíos. Esto permitirá poder parar una descarga/envío y continuarlo más adelante. Creo que esta característica me va a costar bastante tiempo hacerla, sobretodo por el poco tiempo libre del que dispongo últimamente, pero será muy interesante disponer de ella.

El resumen estará disponible en la próxima versión, la 0.12.


Trabajando en la documentación

9 abril 2009

Ahora mismo me encuentro trabajando en la documentación de la próxima versión, la 0.11. Será la primera versión documentada, y su documentación estará disponible en internet en formato HTML, para consultarla en cualquier momento.


Internacionalización acabada

18 marzo 2009

Ya he acabado la internacionalización (el sistema de traducciones) del proyecto. Ahora, me pondré con el guardado de la configuración y, en cuanto lo termine, publicaré la versión 0.9.


Integración de POP

22 febrero 2009

Ahora mismo estoy trabajando en volver a integrar POP en el proyecto. Aunque no puedo reutilizar del todo el código de las versiones antiguas que usaban POP y lo estoy modificando un poco. Tengo el código casi terminado, me falta integrarlo con las interfaces de usuario, de tal forma que el usuario pueda elegir entre usar POP e IMAP.

Espero publicar pronto una nueva versión con POP ya integrado.


Comienzo de la interfaz gráfica

19 enero 2009

He comenzado a investigar cosas para comenzar la interfaz gráfica de usuario de Unimail. Pretendo que sea una interfaz sencillita y en ningún caso sustituirá a la interfaz de consola. Ambas interfaces estarán disponibles de aquí en adelante aunque, eso sí, la más fácil de usar será la gráfica.

Lo que estoy investigando es concretamente PyGtk y Glade. PyGtk es una librería para Python que sirve para hacer interfaces gráficas y Glade es un diseñador de interfaces gráficas. Con Glade lo que se hace es crear un archivo XML que define el aspecto de la intergaz gráfica y luego se escribe en un archivo aparte código Python que utilice PyGtk para cargar el archivo XML y dibujar y ejecutar la interfaz conforme a lo que en el archivo XML se define. Aparte, en el mismo archivo Python o en otro, se escribe código para definir el funcionamiento (la lógica) de dicha interfaz gráfica. El uso de estas dos herramientas hace que la programación de interfaces gráficas en Python sea realmente elegante, ya que se separa la presentación de la lógica (ya sea la lógica de la propia interfaz o la lógica general de la aplicación).

Las interfaces gráficas que se consiguen con estas dos herramientas están diseñadas para el entorno Gnome, que es para el que está pensado Unimail. De momento, no tengo en mente realizar una interfaz gráfica alternativa para el entorno KDE u otro, pero nunca se sabe; en todo caso lo dejaría para después del concurso, ya que no es una prioridad para mí.

Os muestro un par de imágenes de lo que estoy haciendo. No dicen mucho, pero bueno, son un signo de que el proyecto va avanzando poco a poco.

unimail-07-gui-1

unimail-07-gui-2


Cambio de protocolo

8 enero 2009

Después de haber investigado un poco, he decidido usar el protocolo IMAP en lugar del POP, que es el que estaba utilizando hasta ahora. Para esto tendré que usar la librería estandar de Python “imaplib”, en vez de “poplib”, por lo que voy a tener que reescribir una parte importante del código.

¿Merece la pena este cambio?. Pues la verdad es que sí. La razón principal para el cambio es que IMAP permite hacer búsquedas en el servidor, de forma que éste te devuelva los índices de los mensajes que coincidan con el criterio de búsqueda. Este descubrimiento que he hecho sobre IMAP es importantísimo para mí, ya que ahora los problemas que me han ido surgiendo con las búsquedas desaparecerán automáticamente, ya que las búsquedas son prácticamente instantáneas para el usuario, y no va a ser necesario esperar a que se complete un proceso de búsqueda que descargaba información de todos y cada uno de los mensajes, proceso que era lentísimo. Otro problema que tenía POP, al menos con Gmail (que es donde he hecho hasta ahora las pruebas) era que había que activar el servicio POP cada vez que se recibía un archivo con Unimail (aunque ya estuviera activado), si no, Unimail no detectaba dicho archivo; ahora con IMAP se supone que sólo hay que activarlo una vez, y Gmail sólo tiene 2 opciones para IMAP: activarlo o desactivarlo. Debido a esto, ahora el usuario sólo se preocupará de activar IMAP 1 vez, instalarse Unimail 1 vez y usar Unimail tantas veces quiera sin tener que hacer ningún proceso previo.

Estoy trabajando ya en la versión 0.5, y espero tenerla en breve. La única novedad que tendrá será el cambio de POP a IMAP, aunque se trata de una novedad importantísima. A partir de la publicación de dicha versión, lo que habrá que hacer es realizar un montón de pruebas, para verificar su buen funcionamiento y para ver que realmente IMAP es mejor que POP.

Una cuestión que podría presentarse al lector sería la siguiente: ¿por qué no haber usado IMAP desde el principio?. Bueno, las respuesta es que no lo he usado desde el principio básicamente por desconocimiento mío de este protocolo/tecnología. Sólo sabía que IMAP era más avanzado que POP y que POP era más básico o “primitivo”. Aunque, al principio, no tenía ni idea de ninguno de los protocolos, decidí usar POP porque al ser más básico mi programa podría usarse con un mayor número de servicios de e-mail y además me sería más fácil escribir código, ya que POP está mejor documentado que IMAP, al menos en la información de Python que existe en Internet y en los libros de la biblioteca de mi facultad (mis dos fuentes a la hora de investigar).

El descubrimiento de IMAP ha sido algo tardío para mí, pero ha merecido la pena. Supongo que es consecuencia de mi condición: comencé el proyecto sin tener ni idea de Python, ni del e-mail, ni de POP, ni de IMAP. Ahora, gracias a que he estado haciendo una labor más o menos de investigación, he ido aprendiendo cosas, lo cual es gratificante.

Después de publicar la versión 0.5, trabajaré en la 0.6, la cual tendrá opciones para guardar la configuración de las cuentas de e-mail usadas y esas cosas, y ya después, intentaré que la versión 0.7 disponga ya de una interfaz de usuario gráfica, lo cual quedaría muy, pero que muy, bien.


Problema solucionado

29 noviembre 2008

He solucionado el problema mencionado en el anterior artículo.

Se trata de las rutas relativas de los archivos. Las rutas relativas parten de un directorio llamado “directorio de trabajo” y se supone que dicho directorio es aquel donde se está el programa ejecutado. El problema es que en Windows, el directorio de trabajo no es aquel donde está el programa, sino aquel donde está Python instalado, por lo que el código no funcionaba bien en dicho sistema.

La solución que he encontrado es una función que te devuelve el directorio donde está el programa ejecutado, independientemente del sistema en el que se esté, tanto si coincide con el directorio de trabajo como si no. Al obtener el directorio donde está mi programa, puedo trabajar ya correctamente con los archivos y directorios del programa.

Por lo tanto, el problema queda solucionado. Sólo lo he comprobado en Linux y en Windows, así que, puedo garantizar su funcionamiento en ambos sistemas.

En cuanto termine otras pruebas, publicaré la versión 0.2.


Problema en Windows

28 noviembre 2008

Debido a un fallo del programa, éste no se puede ejecutar correctamente en Windows (y puede que tampoco en otros sistemas que no sean Unix). En los próximos días intentaré corregir este problema, para luego publicar la versión 0.2.


Novedades para la próxima versión

27 noviembre 2008

Ahora mismo estoy trabajando en la versión 0.2. Las novedades que tendrá serán:

  • Comprobación de la integridad de un archivo recibido:
    En la bandeja de entrada sólo se mostrarán los archivos que se hayan recibido por completo.
  • Corrección de un problema con el nombre del archivo a enviar:
    Hasta ahora, un mismo usuario (es decir, una misma dirección de e-mail) no debía enviar 2 veces un mismo archivo (o enviar 2 archivos con el mismo nombre), ya que luego no se podrían descargar correctamente. En ese sentido, el usuario podrá despreocuparse del nombre del archivo que va a enviar.

Seguir

Get every new post delivered to your Inbox.