Estoy a punto de desarrollar un programa que se instalará y ejecutará como un servicio de Windows en los servidores de servicios de fondo (con acceso a internet) de varios clientes. No tengo acceso físico a los servidores. En lo que estoy trabajando es en un esquema para implementar de manera confiable las actualizaciones del programa.Actualización automática de un servicio de Windows
He pasado bastante tiempo buscando las mejores prácticas para las actualizaciones automáticas del servicio de Windows, pero he encontrado muy poca información útil. La mayoría de las técnicas, como ClickOnce, parecen atender principalmente a las aplicaciones basadas en Windows Forms.
Mi plan actual es:
- Cuando las actualizaciones están disponibles, tienen la descarga servicio en ejecución, instale e inicie un servicio de actualización.
- El servicio de actualización descargará la nueva versión del servicio principal y la instalará lado a lado de la versión actual, todavía activa.
- El servicio de actualización detiene la versión anterior y luego inicia la nueva versión del servicio.
- La nueva versión desactiva el servicio de actualización durante el inicio.
Algunos aspectos importantes para mí son:
- Ser capaz de manejar las actualizaciones tanto para el servicio principal y el servicio de actualización
- Ser capaz de manejar las interrupciones, tales como corte de corriente o un fallo de conexión en cualquier punto durante el proceso de actualización
Lo que me pregunto es si esta es una forma común de resolver este problema y/o si me falta algo crucial. ¿Es demasiado complicado, o quizás demasiado simplista? ¿Cómo lo hubieras hecho (o, mejor aún, cómo has hecho esto con éxito)?
Gracias!
Gracias por su valiosa contribución. ¿Cómo manejó la situación potencial donde el proceso de actualización se interrumpe después de que se desinstala la versión anterior pero antes de que se haya instalado la nueva? ¿Mantuvo un registro de cuán lejos estuvo en el proceso? –
No realizo instalaciones incrementales. El servicio está instalado y en ejecución o no lo está. Por lo tanto, no hago un seguimiento de qué tan avanzado estoy en el proceso. Yo * simplemente * uso los controles de estado para determinar si algo no está bien y vuelva a intentar la instalación si es necesario. –
@Ben ¿Ha publicado sus experiencias en algún lado? –