2010-10-04 25 views
8

Estoy escribiendo un conjunto de programas para ordenadores cliente -Actualización automática de programas C#

  • un servicio de Windows
  • un espacio de usuario de Windows Forms

necesito estar capaz de publicar una versión actualizada de estos programas y tener las PC del cliente de forma automática y transparente (sin interacción del usuario) actualizarse. Esta actualización se realizará a través de una conexión 3G no confiable (EvDO). Las aplicaciones se ejecutarán continuamente, por lo que la actualización deberá cerrar con gracia el servicio/cerrar las aplicaciones, y luego volver a activarlas después de la actualización.

Antes de dedicar tiempo a rodar mi propia solución, ¿hay soluciones preexistentes para algo similar?

Nota: ClickOnce no funciona aquí debido al Servicio de Windows así como a varias otras razones. Tampoco puedo aprovechar BITS porque estoy corriendo contra Windows Azure, que carece del complemento BITS IIS.

Respuesta

9

¿Por qué no considerar la copia oculta?

Shadow copia permite ensamblados que se utilizan en un dominio de aplicación a ser actualizado sin descargar el dominio aplicación. Esto es especialmente útil para las aplicaciones que deben estar disponibles continuamente, como sitios ASP.NET.

Haga que los programas sean muy simples. Luego pídales que observen (FileWatcher) las actualizaciones de la carpeta desde donde se cargaron (y donde se entregan las actualizaciones). A continuación, vuelva a cargar dinámicamente el AppDomain.

Consulte here y here para obtener más información.

Puede utilizar las propiedades de la clase AppDomainSetup la siguiente manera para configurar un dominio de aplicación para copiar sombra:

Activar copia sombra estableciendo la propiedad ShadowCopyFiles para el valor de cadena "verdadera" . De forma predeterminada, esta configuración hace que todos los ensamblados en la ruta de la aplicación se copien en una caché de descarga antes de que se carguen. Este es el mismo caché mantenida por el tiempo de ejecución de lenguaje común para almacenar los archivos descargados ...

+0

Esto parece muy prometedor. Lo investigaré y te responderé. –

+1

Olvidé agregar que hemos usado esto en el pasado para permitirnos actualizar servicios con nuevos archivos DLL sin tener que cerrarlos. –

Cuestiones relacionadas