Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Estamos en un proceso de desarrollo de un sistema realmente complejo que consta de varios servicios WCF, aplicaciones ASP.NET MVC, herramientas de administración (aplicaciones de Windows Forms) ... Algunas de ellas, tendrán instancias que se ejecutarán en varios servidores. Estamos buscando una buena solución de actualización automática para dicho sistema. Lo más probable es que necesitemos una aplicación (servicio) de actualización automática por separado que haga el trabajo, o alguna aplicación de administración centralizada que conozca las versiones de todas las instancias instaladas y haga la actualización de forma remota. ¿Hay algún buen producto / biblioteca, hecho para este propósito, que conozca o tenga experiencia?

¿Fue útil?

Solución

Personalmente, estoy usando una metodología muy simple para cualquier tipo de actualización automática:

  • tener un instalador
  • Verifique la nueva versión (WebClient simple y compare los números con su versión actual de AssemblyVersion)
  • Si la versión es más alta, descargue el instalador más reciente (debe estar sobre SSL por razones de seguridad)
  • Ejecuta el instalador descargado y cierra la aplicación. (en esta etapa, debe tener privilegios de administrador si su instalador requiere que usted sea un administrador)

El instalador debe hacerse cargo del resto. De esta manera, siempre tendrá la última versión y un instalador con la última versión.

Otros consejos

Permítame comenzar diciendo que soy el fundador de la compañía que tiene una solución de actualización completa que incluye:

wyUpdate maneja todos los problemas de UAC de Vista / Windows 7 y todos los problemas de permisos de archivos que inevitablemente aparecen cuando intentas actualizar software complejo.

También ofrecemos licencias gratuitas para wyBuild para proyectos de código abierto , pero si solo está buscando construir su propio actualizador, puede canibalizar nuestro código fuente libremente.

Dicho esto, si desea crear su propio actualizador, aquí hay algunos consejos:

Construyendo tu propio actualizador

Un buen lugar para comenzar es wyUpdate y AutomaticUpdater código fuente que mencioné anteriormente. Puedes canibalizarlo y usarlo para tus propios fines. Algunos de los algoritmos que contiene:

  • Compatibilidad total con Windows Vista / Windows 7 UAC
  • Capacidad para que los usuarios limitados verifiquen y luego actualicen si tienen credenciales
  • Compatibilidad con Internet corporativo wonky. (Si alguna vez ha trabajado con una corporación, este es un problema real).
  • Extracción, aplicación de parches e instalación rápida de archivos.
  • Soporte de registro.
  • Revertir archivos & amp; Registro por error o cancelación por parte del usuario
  • Actualización automática (sin archivos)

También tenemos las especificaciones de archivo aquí .

Actualización automática

Dado que ser automático es un requisito, permítame decirle cómo lo hacemos con nuestro control AutomaticUpdater .

Usamos canalizaciones con nombre para comunicarnos entre el actualizador independiente (wyUpdate) y el control del Actualizador automático que se encuentra en el formulario de su programa. wyUpdate informa del progreso al Actualizador automático, y el Actualizador automático puede indicarle a wyUpdate que cancele el progreso, comience la descarga, comience a extraer, etc.

Esto mantiene al actualizador separado de su aplicación.

De hecho, el código C # de las tuberías con nombre exacto que usamos está incluido en un artículo que escribí hace poco: Aplicación C # de proceso múltiple como Google Chrome .

Aquí hay una solución de código abierto que escribí para abordar las necesidades específicas que teníamos para las aplicaciones WinForms y WPF. La idea general es tener la mayor flexibilidad, con la menor sobrecarga posible.

Por lo tanto, integración es súper fácil, y la biblioteca hace prácticamente todo por ti, incluidas las operaciones de sincronización. También es altamente flexible , y le permite determinar qué tareas ejecutar y en qué condiciones: puede establecer las reglas (o usar algunas que ya existen). Por último, no menos importante es el soporte para cualquier fuente de actualizaciones (web, BitTorrent, etc.) y cualquier formato de fuente ; lo que no esté implementado, puede escribirlo usted mismo.

Las actualizaciones en frío (que requieren un reinicio de la aplicación) también son compatibles, y se realizan automáticamente a menos que " hot-swap " se especifica para la tarea.

Esto se reduce a una DLL, con un tamaño inferior a 70kb.

Más detalles en http: //www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

El código está en http://github.com/synhershko/NAppUpdate (Licenciado bajo el Apache 2.0 licencia)

Planeo extenderlo más cuando tenga más tiempo, pero honestamente, deberías poder mejorarlo tú mismo por lo que actualmente no es compatible.

Los servicios WCF de actualización automática y los sitios web ASP.NET deberían poder hacerlo también con el uso de " hot-swap " de archivos y " iisreset " tarea donde sea necesario.

ClickOnce para tus herramientas de administración.

Investigamos algunas opciones y decidimos usar la biblioteca AppLife Update para Nuestro proyecto empresarial.

La actualización de AppLife puede agregar rápida y fácilmente la funcionalidad de actualización automática para tus aplicaciones .NET, pero también es flexible debido a su API completa.

Vea la lista completa de características y algunos videos de demostración en su sitio web.

Para aplicaciones WPF simples, aquellas que quizás usen la instalación de Xcopy, puede usar este módulo AppUpdater . Es un módulo de origen, solo unas pocas líneas de código, para agregar la capacidad de actualización a una aplicación WPF simple.

Es gratis.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top