No sé si esta es la mejor manera, pero esto es lo que hicimos:
- Reemplazó al ejecutado ejecutado con un iniciador, lanzó el programa real y monitoreó los bloqueos, etc. Tenía una cobertura de prueba del 100%, porque no podía fallar. Si se estrellara, estaríamos jodidos, tendríamos que enviar un correo electrónico, etc.
- Teníamos un archivo en un servidor ftp que tenía la versión actual, y si era una actualización forzada.
- Si el iniciador detecta una actualización normal (la versión es diferente a la que se está ejecutando), informaría al usuario y seguiría su vida.
- Si el iniciador detectó una actualización forzada (la versión es diferente con el indicador de fuerza), esperaría informar al usuario que tenían X cantidad de tiempo antes de que se aplicara la actualización, detener lo que está haciendo, etc.
- Si el iniciador se estuviera actualizando, finalizaría el proceso secundario (la aplicación) e iniciaría el instalador como un proceso similar y se terminaría a sí mismo (para evitar problemas de bloqueo de archivos en Windows)
Las actualizaciones normales se aplicaron la primera vez que se ejecutó la aplicación ese día, sin informar al usuario. Esto significaba que solo teníamos que admitir una versión durante menos de 24 horas después de lanzar una nueva versión. Por lo general, después de 24 horas, agregamos la bandera de fuerza para atrapar a todas las personas que no cerraron la aplicación en mucho tiempo.
Solo tuvimos que hacer una actualización de la fuerza de la vida real una vez, lanzamos una versión que era una construcción incorrecta (heh, sucede).
- ¿Cuál es el mejor marco e idioma para crear sitios web?
- Cómo actualizar una aplicación web en vivo si no puede tener ningún tiempo de inactividad
- ¿Qué lenguaje de programación debo comenzar a aprender para un futuro en el desarrollo de aplicaciones web, aplicaciones web y Android?
- ¿Cómo resuelven las startups web el problema del huevo y la gallina de tener contenido inicial antes de un lanzamiento público, si la aplicación web se basa completamente en contenido generado por el usuario?
- ¿Cuáles son las diferencias clave entre PHP y Perl?