Aplicación de actualización automática - filosofía

15

Esta es una pregunta filosófica.

Dada una aplicación de escritorio hipotética y el deseo de proporcionar actualizaciones automáticas (en lugar de obligar a las personas a ir a un sitio web, buscar una actualización, descargar una actualización, instalar), ¿cuál de los dos es más un enfoque de "mejor práctica"?

  1. Me gusta iTunes , verifica si hay una nueva versión y solicita al usuario que descargue la nueva versión. Si es así, descarga un ejecutable de instalación completa (en este caso, un archivo de Windows Installer (.msi)) que instala la versión completa (no solo una actualización de la versión anterior, demasiado para administrar si hay varias versiones disponibles) . Entonces, digamos, es la versión 10.1.1, ya sea que esté instalando nueva o actualizando, use el mismo archivo. Después de descargar, le indica al usuario que cierre la aplicación y ejecute el archivo de instalación.

  2. Similar al otro, busca una nueva versión y solicita al usuario que la descargue, pero en lugar de simplemente descargar un ejecutable y pedirle al usuario que lo ejecute, en realidad lo ejecuta para ellos, cerrando el programa que han abierto, adquiriendo La seguridad necesaria para instalar archivos.

Problemas con el n. ° 2: muchos problemas relacionados con el cierre del programa, ya que el programa puede abrir otros programas ( Outlook y Excel ), o qué sucede si el usuario estaba en medio de algo. También en materia de seguridad, necesita acceso de administrador local para instalar, ¿qué pasa si no lo tiene? En versiones posteriores de Windows, no puede simplemente anular la seguridad de la persona.

Problemas con el n. ° 1: algunas personas creen que esto será demasiado difícil, demasiado esfuerzo para el usuario final.

Preferiría ir con el # 1 porque ahorrará 80-120 horas en mi proyecto y es más sencillo de implementar y mantener. Sin embargo, tenemos personas que se sienten fuertemente por todos lados.

¿Cuál es una mejor práctica para este tipo de cosas?

Shannon Davis
fuente
No estoy tan seguro de que sea filosófico, parece que está buscando una solución para mí.
Entonces, ¿no está bien hacer preguntas de diseño / arquitectura aquí?
Mi pregunta es, ¿por qué # 2 requiere que el programa se apague y reinicie? Si se trata de una actualización de seguridad, eso es comprensible, pero un usuario normal cierra y vuelve a abrir un programa al menos una vez al día, si no más, entonces, ¿por qué no instalarlo en segundo plano? Deje que el usuario ejecute el programa usando la versión anterior en la memoria y luego, cuando lo reinicien, use la nueva versión que se instaló. Sin complicaciones, sin problemas.
Mike S
@ Mike S: eso no es posible en Windows (no puede sobrescribir los archivos ejecutables que se están ejecutando) e incluso en Linux no es una idea particularmente buena (si abre otra instancia, tendrá uno que ejecute el código anterior y otro que ejecute el nuevo código) - Si está sucediendo algún IPC, es aún peor)
Dean Harding
Por experiencia: si busca actualizaciones, no haga que su programa lo haga diariamente a medianoche o a las 3 p.m. Eso parece razonable, pero usted finaliza DDOS en sus propios servidores. Simplemente agregue hasta 3600 segundos de aleatoriedad; no es que urgente.
MSalters

Respuestas:

20

Personalmente, prefiero el enfoque de Google Chrome. Un directorio base con un iniciador y subdirectorios para cada versión instalada del software. El iniciador solo busca el número de versión más alto y lo usa y elimina las versiones anteriores según sea necesario. De vez en cuando se ejecuta una tarea de actualización para descargar y crear nuevos directorios. Cuando se instalan nuevas versiones, la aplicación en ejecución solicita un reinicio para usar la nueva versión.

Pedacitos de tocino
fuente
44
+1 por señalar el buen comportamiento de Google. El contraste es Adobe Acrobat Reader que, como cada 2º día, instala algunos parches aparentemente urgentes y los perturba continuamente en el trabajo.
Ingo
También me gusta este enfoque. La desventaja es que funciona solo para instalaciones por usuario que no requieren elevación. Una vez que tenga un mensaje de elevación, realmente no importa si necesita un par de clics más para realizar la actualización (ya no es silencioso).
@Cosmin si no desea usar% appdata%, puede usar% ProgramData% para almacenar los archivos descargados. Una forma más filosóficamente correcta sería almacenar el archivo allí, luego elevarlo para instalarlo la próxima vez que se ejecute el programa.
Bacon Bits
AMOR esta respuesta y yo estoy poniendo en mi bolsillo trasero (por ahora, el "iTunes" descarga estilo ha encontrado un gran atractivo por razones de ahorro de costos.)
Shannon Davis
3

No debe crear entradas de inicio innecesarias para buscar actualizaciones como Adobe Flash Player (es difícil rastrearlas todas, y no puedo encontrar una manera de desactivar las comprobaciones ...) o iTunes. Molesta al usuario (geeks, de todos modos). Una mejor opción sería buscar actualizaciones al inicio de la aplicación como lo hace Firefox .

Un simple y discreto "¿Instalar actualizaciones?" La ventana no molestará a los usuarios. Permita que se actualice en segundo plano mientras el usuario hace otras cosas, y luego inicie automáticamente su aplicación.

Solo asegúrese de incluir una opción:

Busque actualizaciones en:

  • Inicia sesión (si quieres molestar a los geeks)
  • De inicio de aplicaciones ( en por defecto)
  • Cada pocas semanas ( apagado por defecto)

O algo similar.


Si vale la pena el esfuerzo, diría que lo haga. Esa es tu decisión.

Mateen Ulhaq
fuente
2

Creo que quieres una configuración "ClickOnce".

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce es una tecnología de implementación que le permite crear aplicaciones basadas en Windows de actualización automática que se pueden instalar y ejecutar con una mínima interacción del usuario. La implementación de ClickOnce supera tres problemas principales en la implementación:

Dificultades en la actualización de aplicaciones. Con la implementación de Microsoft Windows Installer, cada vez que se actualiza una aplicación, el usuario debe reinstalar toda la aplicación; Con la implementación ClickOnce, puede proporcionar actualizaciones automáticamente. Solo se descargan las partes de la aplicación que han cambiado, y luego la aplicación completa y actualizada se reinstala desde una nueva carpeta de lado a lado.

Impacto en la computadora del usuario. Con la implementación de Windows Installer, las aplicaciones a menudo dependen de componentes compartidos, con el potencial de conflictos de versiones; Con la implementación ClickOnce, cada aplicación es autónoma y no puede interferir con otras aplicaciones.

Permisos de seguridad. La implementación de Windows Installer requiere permisos administrativos y solo permite la instalación limitada del usuario; La implementación de ClickOnce permite a los usuarios no administrativos instalar y otorga solo los permisos de seguridad de acceso al código necesarios para la aplicación.


fuente
No se trataba de los pros y los contras de hacer clic una vez y MSI (a lo que muchas de sus conclusiones son incorrectas o incompletas), sino más bien una cuestión de mejores prácticas para las soluciones de actualización automática.
Christopher Painter
De todos modos, aprecio esta información y la compartiré con el desarrollador para ver si la había considerado como una opción, tal vez pensó que tendría que desarrollar el proceso de actualización él mismo.
Bueno Christopher, tómalo con MS, eso es directo de MSDN. Ese es realmente un comentario útil también.
Cuando codifica tecnologías de implementación, nunca me sorprende cuando alguien que publica en MSDN se equivoca. Somos muy pocos los expertos que realmente comprendemos esto.
Christopher Painter
2

Personalmente, llegué a apreciar las aplicaciones que hacen algo similar al marco de Sparkle . Supongo que es solo una cosa de Mac, pero esencialmente hace lo siguiente (fuera de mi cabeza, supongo que el comportamiento se puede ajustar).

  1. Buscar actualizaciones (generalmente al inicio de la aplicación)
  2. Si hay uno, se muestra una ventana separada con un registro de cambios bien formateado
  3. El usuario puede omitir esa versión, instalarla o elegir que se le recuerde más tarde.
  4. Si decide instalar la aplicación, se muestra una barra de progreso debajo del registro de cambios
  5. Después de la descarga, el usuario puede decidir cerrar la aplicación e instalarla inmediatamente o instalarla después de cerrar la aplicación.

Teniendo en cuenta que está hablando de .msi, este marco en particular no es realmente aplicable, pero en este caso preferiría optar por alguna solución existente que reinventar la rueda.

sebastiangeiger
fuente
1

Yo diría que realmente tienes que conocer a tu usuario. Si son inteligentes y tienen un intenso interés en mantenerse al día, # 1 funcionará.

Nunca subestimes la holgazanería de un usuario porque cuando su programa ya no funciona porque ya no es compatible, más tarde recibirás llamadas de ayuda.

El tiempo vendrá del desarrollo (# 2) o del soporte (# 1).

árbol de arce
fuente
1

¿Qué hay de esto?

  • Al iniciar la aplicación, verifique la nueva versión y (opcionalmente después de preguntarle al usuario) descárguela.
  • Cuando finalice la descarga, proporcione un botón para el usuario que permita reinstalar y reiniciar la aplicación (no use ningún diálogo a menos que la actualización sea crítica).
  • Al cerrar la aplicación, (opcionalmente después de preguntarle al usuario), inicie el instalador. En caso de que el usuario se niegue a realizar la instalación en este momento (tal vez tenga prisa), hágalo la próxima vez antes de que se inicie la aplicación.

No necesita molestar al usuario, no necesita cerrar nada ...

maaartinus
fuente
1

¿Por qué no algo en el medio?

Solicitar la descarga (o hacer la opción "descargar automáticamente"), después de finalizar, solicitar la instalación de la actualización descargada (ejecute el .msi). De esta forma, usted niega la desventaja del n. ° 2 (cierre en medio del trabajo del usuario) y, al mismo tiempo, mantiene la comodidad con el costo de 1 clic más.

El cuadro de diálogo " ¿Cerrar e instalar actualización? " Debe ser fácilmente accesible (pero no molesto) cuando el usuario rechaza al principio. Con tener "Iniciar <nombre del programa>?" la casilla de verificación al final de .msi será casi como la n. ° 2 sin realmente más trabajo

@ Los
programas de seguridad en Windows moderno pueden solicitar permiso para realizar acciones que requieren derechos de administrador (se muestra al usuario un mensaje donde escribe la contraseña del administrador y luego selecciona "sí / no" para otorgar permiso)

NoxArt
fuente
1

Tengo 124 casas de empeño que utilizan mi aplicación de escritorio Pawnshop Management. Cada vez que tengo una nueva actualización, les envío un correo electrónico para informarles sobre la actualización y los detalles de la misma. Luego tienen la opción de enviarlo por FTP iniciando sesión en mi sitio web. También tienen la opción de deshacer la actualización. Mi sitio web también realiza un seguimiento de cada versión instalada de casas de empeño.

Frank R.
fuente