desktop application - wybuild - La mejor práctica para autoupdates
windows presentation foundation (3)
Para aplicaciones basadas en escritorio, ¿cuáles son las mejores prácticas para realizar actualizaciones automáticas? Actualmente, descargamos todos los archivos, luego copiamos y registramos (si los usamos) en sus respectivos directorios.
Miré el método de actualización de Google Chrome. Parece que primero descarga un archivo comprimido en un directorio y luego descomprime todos los archivos. Además, tienen una aplicación de configuración que parece ser utilizada para hacer la actualización. Además, crean un directorio mapeado para actualizar la versión como 1.0.154.43, pero conservan el directorio de la versión anterior.
La publicación reciente del blog del equipo de Chromium es una gran guía:
http://blog.chromium.org/2009/01/google-chrome-installation-and-updates.html
Básicamente, lo mismo se hace cuando usas ClickOnce de MS y no tengo problemas para usar aplicaciones con dicho método de actualización hasta el momento, así que supongo que esto se clasifica como una "Mejor práctica" ... pero así soy yo.
- Almacene cada versión en su propia carpeta única.
- Use un "Lanzador" para lanzar la versión más actualizada disponible y ...
- Compruebe si hay nuevas versiones en el fondo después de que se haya lanzado la aplicación.
- Descargue cualquier nueva versión encontrada y cree una nueva carpeta para esa versión.
Google Chrome es un poco diferente, ya que utilizan el servicio Google Update para realizar la actualización, pero la experiencia / ciclo general es prácticamente el mismo.
Su usuario inicia una aplicación, si hay alguna versión nueva disponible, se descarga en segundo plano. Y luego, la próxima vez que se inicia la aplicación, su usuario obtiene la nueva versión automáticamente y (si es posible) silenciosamente.
Use un marco existente
En MacOS X: use el marco Sparkle, http://sparkle.andymatuschak.org
En Linux: cree paquetes y repositorios de configuración para las distribuciones que apoyará
Un par de consejos:
Independientemente de cómo elija hacerlo, no cree un nuevo servicio o proceso para buscar actualizaciones y luego déjelo encendido continuamente . Ya sabes, como le gusta hacer a Adobe y Sun (para Java). Independientemente de lo que esté haciendo, puedo garantizar que no es lo suficientemente importante como para que deba actualizarse cada vez que el usuario inicie la computadora. Las actualizaciones deben integrarse con un proceso de actualización estandarizado común al sistema operativo o cuando la aplicación se está ejecutando. Las actualizaciones no deben robar continuamente los recursos del sistema o ralentizar el proceso de arranque de forma predeterminada.
Si mantiene directorios separados para cada versión, debe agregar código para mantener eso. El espacio en disco no está destinado a actualizaciones de combustible. Recuerdo una aplicación Citrix que tenía 5 versiones diferentes en mi computadora a la vez. El usuario no debe ver más de dos copias (máximo de una copia de seguridad, confirmada como funcional) de su aplicación en su sistema de archivos, a menos que explícitamente las coloque allí. Los accesos directos a su aplicación pueden quedar obsoletos cuando la ubicación de la carpeta cambia de esta manera, así que tenga cuidado.
Si actualiza después de que se haya iniciado el programa, le recomendaría notificar al usuario de una manera no molesta . Si la actualización no causa un cambio significativo en la funcionalidad, descargue la actualización en segundo plano, cambie a la nueva versión la próxima vez que se ejecute la aplicación, y notifique al usuario de los cambios significativos (no use un cuadro de diálogo modal o robe atención). No haga que el usuario haga clic en un botón para aceptar la instalación de actualizaciones antes de iniciar la aplicación o forzarlas a reiniciar para usar la versión actualizada. Permita a los usuarios configurar actualizaciones automáticas, luego hágalo sin afectar su productividad. Firefox es bastante malo acerca de esto, lo cual es triste ya que es una aplicación tan integral para muchos usuarios.
No toque la bandeja del sistema . Eso debe reservarse para aplicaciones útiles (para el usuario). También recomendaría contra notificaciones globo, también. Use algo como la barra de información que se ve comúnmente en los navegadores. Las aplicaciones de Microsoft son particularmente malas sobre el uso de la bandeja del sistema y las notificaciones de globo para perder el tiempo del usuario con notificaciones sin importancia. Si el usuario habilitó las actualizaciones automáticas, realmente no necesitan saber que todo está funcionando tal como esperaban. Dígales cuándo hay algo nuevo o útil, y no fuerce el conocimiento en sus gargantas. Deje el registro de cambios en un elemento del menú Ayuda para que puedan verificar las correcciones de errores por su cuenta.
Tenga cuidado con las actualizaciones utilizando el sistema MSI si implementa un archivo de configuración predeterminado. No desea sobrescribir ningún archivo de usuario en su actualización . En la misma línea, si el formato de los archivos de configuración o los archivos de usuario cambia, debe proporcionar un mecanismo para hacer copias de seguridad y actualizar esos archivos automáticamente. O empiece a crear configuraciones predeterminadas internamente dentro de la aplicación en lugar de implementarlas.
Sea consciente del ancho de banda . Los archivos grandes tardan tiempo y posiblemente anoten el ancho de banda de sus usuarios. Especialmente si actualiza diariamente.
No recuerdo un procedimiento de actualización verdaderamente no intrusivo, pero puedo recordar muchas cosas que han desperdiciado mi tiempo y recursos en el pasado. No seas el tipo que hace a otro.