¿Actualizar automáticamente la biblioteca para .NET?

En la Mac hay una biblioteca muy bonita llamada Sparkle que los progtwigs pueden usar para implementar la funcionalidad de comprobación / instalación para actualizaciones automáticas.

¿Hay algo similar para .NET? ¿O solo con Win32?

ClickOnce tiene sus propias limitaciones de seguridad (comprensiblemente). Si desea la potencia y el control completos de una aplicación de Windows, vaya con el componente actualizador de la aplicación .NET . Funciona como un amuleto e incluso ha sido utilizado internamente por Microsoft para su juego basado en .NET (aunque no recuerdo el nombre del juego).

Permítanme comenzar diciendo que ofrecemos una solución de actualización completa que incluye:

  • Un actualizador de código abierto, wyUpdate , escrito en C #
  • El control de AutomaticUpdater gratuito que puede agregar al formulario de su aplicación .NET
  • wyBuild se usa para crear parches y administrar tus versiones

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

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

Creando tu propio actualizador

Un buen lugar para comenzar es el código fuente de wyUpdate C # que mencioné anteriormente. Puede canibalizarlo y usarlo para sus propios fines. Algunos de los algoritmos que contiene:

  • Soporte completo de Windows Vista / Windows 7 UAC
  • Posibilidad de que los usuarios limitados revisen y luego actualicen si tienen credenciales
  • Soporte para inernet corporativo wonky. (Si alguna vez trabajó con una corporación, este es un problema real).
  • Extracción, parchado e instalación rápida de archivos.
  • Soporte de registro
  • Revertir archivos y registro en caso de error o cancelación por parte del usuario
  • Actualización automática (no se han dejado archivos)

También tenemos las especificaciones de archivo aquí .

Actualización automática

Como ser automático es un requisito, déjame decirte cómo lo hacemos con nuestro control AutomaticUpdater .

Utilizamos conductos con nombre para comunicarnos entre el actualizador independiente (wyUpdate) y el control Actualizador automático que se encuentra en el formulario de su progtwig. wyUpdate informa el 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 el actualizador separado de su aplicación.

De hecho, el código exacto de las tuberías con nombre C # que usamos está incluido en un artículo que escribí hace un tiempo atrás: aplicación C-multiprocesador como Google Chrome .

ClickOnce es mi método preferido. Tiene algunas verrugas, pero viene con Visual Studio y funciona bastante bien.

ClickOnce se utiliza mucho, pero puede hacer lo que hice para una aplicación grande y probar estos:

  • Actualización automática de la aplicación en VB.NET

  • Actualización automática de la aplicación revisada

Me adapté un poco a la lógica y construí lo que pensé que era un mejor archivo de actualización XML. Ahora, cuando necesito actualizar los clientes, solo publico los nuevos archivos EXE o DLL y establezco las versiones correctas en el archivo XML público. Mi aplicación detecta las versiones más nuevas si es anterior y se actualiza a sí mismo. Si está haciendo esto en Windows Vista , debe solicitar permisos de administrador para que se puedan escribir archivos de progtwig (si los instala allí).

También puede convertirlo fácilmente a C # utilizando C # / VB.NET Converter .

Acabo de pasar por el proceso de hacer esto y usé NetSparkle .

Funcionó como se anuncia para una aplicación de Windows Forms con un instalador de MSI que sobrescribe la versión anterior. Estoy muy contento de haberlo encontrado también, estaba a punto de hacer mi propio trabajo. ¿Soy el único que hace aplicaciones .NET realmente simples? En general, todo lo que veía parecía una completa exageración.

No probé NetSparkle aún (lo haré más tarde), pero parece que es lo que estás buscando.

NetSparkle es un marco de actualización de software fácil de usar para desarrolladores .NET en Windows, Mac o Linux. Fue inspirado por el proyecto Sparkle para desarrolladores de Cocoa y el proyecto WinSparkle (un puerto Win32 ).

Creo que WyBuild es una buena alternativa para Sparkle)

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, a la menor sobrecarga posible.

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

Las actualizaciones en frío (que requieren el reinicio de una aplicación) también son compatibles y se realizan automáticamente a menos que se especifique “intercambio en caliente” para la tarea.

Esto se reduce a una DLL, menos de 70kb de tamaño.

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 (Licencia bajo la licencia de Apache 2.0)

Planeo extenderlo más cuando tenga algo más de tiempo, pero sinceramente, debes ser capaz de mejorarlo rápidamente por lo que actualmente no es compatible.

Hay una herramienta muy buena llamada Updater . Parece que está escrito en C o C ++ . Pude configurar los archivos XML y cargarlos en el servidor de producción, y luego puedo ejecutar Updater Run y ​​verificar el archivo XML para una versión diferente y descargar un nuevo paquete de instalación de actualización que creé utilizando el sistema de instalación de scripts de Nullsoft. (NSIS).

Investigamos un puñado de opciones y decidimos usar la actualización de AppLife . AppLife Update puede agregar rápida y fácilmente funcionalidad de actualización automática para sus 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.

DotNetAutoUpdate

Implementé una biblioteca para hacer esto llamada DotNetAutoUpdate (nombre original ¿eh?). Su objective es ser:

  • Fácil de usar
  • Simple de instalar
  • Seguro

Para actualizar las aplicaciones cliente de .Net, eche un vistazo a la Actualización de AppLife . Es muy flexible, extensible y personalizable.

Descargo de responsabilidad: estoy asociado con la actualización de AppLife.