actualizar automáticamente la aplicación de escritorio

Tenemos una aplicación web y una aplicación WPF para Windows de escritorio. La aplicación de Windows envía datos a la aplicación web (alojada en azul)

Los usuarios descargan la aplicación del website. Ocasionalmente, hay nuevas versiones de aplicaciones de escritorio disponibles.

¿Cuál es la forma más eficiente de configurar actualizaciones automáticas para la aplicación de escritorio? Estamos usando github.

Encontré "lanzamientos" en github, pero no estoy seguro de cómo notificar a la aplicación de escritorio y cómo crear un actualizador. (Supongo que tenemos que search versiones de Github cada vez que se inicia la aplicación. ¿Debo usar Github api para esto?)

¿Cuál es la mejor estructura de repository para lanzamientos?

Estoy buscando las mejores prácticas sobre cómo realizar actualizaciones sin inconvenientes a las aplicaciones de escritorio. (En cuanto a la configuration del repository, ¿podría ser útil crear una API web para extraer información de la versión?)

Puede implementar sus aplicaciones de escritorio utilizando el mecanismo de ClickOnce Deployment . Esto se encargará de actualizar el software. Sus usuarios descargan el software desde un sitio de Internet de acceso público. Siempre que tenga una nueva versión disponible, puede simplemente implementar los últimos files de implementación en el enlace de descarga. La aplicación implementada ClickOnce comtesting automáticamente si hay alguna versión actualizada en ese enlace y solicita al usuario que descargue e instale la última versión.

Desde el mismo enlace de MSDN, uno de los problemas resueltos por la implementación de ClickOnce es facilitar las actualizaciones automáticas:

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 de 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 lado a lado.

Estaba buscando lograr las mismas necesidades y encontré esta biblioteca que puede hacer lo que está pidiendo; https://github.com/Squirrel/Squirrel.Windows

Hay mucha configuration, pero lo que estás pidiendo no es trivial, pero tal vez puedas get algunas ideas.

Para nuestras necesidades; vamos a hacer que nuestro server de compilation (teamcity) cree un MSI usando un proyecto Wix, luego la aplicación downloadá y ejecutará el MSI. Una vez que vayamos a la producción, trasladaremos el hosting de MSI a una configuration de tipo CDN empresarial.