software programa obligatoria nod32 net hacer desactivar crear componentes como aplicaciones aplicacion actualizar actualizador actualizaciones actualizacion c# .net auto-update

programa - ¿Solución gratuita para actualizaciones automáticas con una aplicación.NET/C#?



crear un actualizador en c# (6)

Desde la búsqueda puedo ver que esto se ha preguntado una y otra vez, pero no lo suficiente, así que aquí va. Soy un desarrollador aficionado sin presupuesto. Un programa que he estado desarrollando necesita correcciones de errores regulares, y los usuarios y yo nos estamos cansando de tener que actualizar manualmente.

Yo, porque mi solución actual es actualizar un archivo de texto a través de FTP y mis enlaces de descarga en el sitio web, y luego espero que los usuarios vean el mensaje "hay un mensaje de actualización" y finalmente se molesten en descargar manualmente la actualización. Francamente, es abismal.

Usuarios, porque, bueno, "¿Alguna vez va a implementar la actualización automática?" "¿Habrá alguna vez una característica de actualización automática?" Y si llego a arruinar el proceso de actualización, las horcas comienzan a llegar.

Sobre el pasado he investigado:

  • WinSparkle - No hay actualizaciones en la aplicación, y el DLL es de 500 KB. Mi solución actual es de unos pocos KBs en el ejecutable y no tiene actualizaciones en la aplicación.
  • Componente de actualización de la aplicación .NET - Desafortunadamente no puedo comprender la documentación.
  • AutoUpdate de Eduardo Olivera : esto no parece ser compatible con nada más que trabajar con archivos que no están en uso.
  • wyUpdate : wyBuild no es gratis, y aunque la especificación de wyUpdate está disponible, es simplemente demasiado complejo y requiere mucho tiempo para hacerlo.
  • Actualización de AppLife - Igual que la última oración.
  • ClickOnce : las soluciones para la implementación del lanzamiento en el inicio son enormes, terribles y no valen la pena por una característica tan simple. Publicar es un dolor; Se requiere FTP manual y reemplazo de todos los archivos para servidores sin Extensiones de FrontPage.

Es bastante decepcionante que la situación en Windows sea así cuando tienes implementaciones realmente buenas y sencillas para Mac OS X como Sparkle .


¡Ponlo en práctica! Será divertido. Cree una aplicación separada que solo contenga la lógica de actualización, es decir, obtenga los archivos en línea, descárguelos, reemplace los archivos locales y muéstrelos visualmente al usuario.

Por lo tanto, su aplicación principal puede buscar actualizaciones y, si existen, le indicará al usuario la posibilidad de actualizar. Si el usuario lo desea, ejecutará el programa de actualización, se cerrará solo (para que la actualización pueda ocurrir) y listo.

Las únicas cosas que necesita están fácilmente disponibles en C #, FTP y IO.

Edit: Sé que no es algo terriblemente fácil, pero es una oportunidad perfecta para aprender:

  • Cómo descargar (correctamente) los archivos, de una manera abstracta que puede extenderse a ftp, http, etc.
  • Cómo (apropiadamente) hacer una tarea simple sobre muchos archivos: copiarlos o sobrescribirlos (esto implica un manejo de errores).
  • Practica (porque no hay una forma "adecuada") de colocar y encapsular una pieza de software.
  • Cómo lidiar con el SO / otro software (antivirus / firewall / etc) que no coopera.

Todas estas son cosas que todos necesitamos saber bien: si se necesitan algunas semanas para codificar un actualizador, significa que necesitabas algunas semanas de aprendizaje. Si no necesitas aprender, ¡es hora de afinar tus habilidades! ¡Si no sabes si necesitas, tiempo para averiguarlo! :)

Nota: Sé que necesito aprender mejor la E / S de archivos y redes


Debería haber actualizado hace años, oops!

Pero de todos modos, he estado usando SparkleDotNET por un tiempo y ha estado funcionando de una manera absolutamente maravillosa. Hay algunos pequeños bichos aquí y allá, pero ya he ayudado a aplastarlos, y espero poder deshacerme de los demás también :)

Para aquellos que tienen el tiempo para ejecutar la funcionalidad de publicación de Visual Studio, y cuya aplicación es relativamente autónoma, y ​​no requiere nada como el inicio en el inicio, recomiendo ClickOnce con seguridad. MetroTwit usa y tiene una buena interfaz de actualización en la aplicación, por lo que parece flexible (al menos hasta cierto punto). Para el lanzamiento en el inicio, es posible hacerlo, pero los métodos para hacerlo son bastante complicados y no funcionan tan bien.


Puede probar Autoupdater.NET desde codeplex Lo desarrollé por mi cuenta y funciona muy bien en mis aplicaciones. Solo tienes que agregar una línea en tu código y listo. También es de código abierto para que pueda modificarlo y usarlo como desee.


También hay una actualización de DDay que es de código abierto y es utilizada por uno de mis clientes. A nosotros / ellos nos interesa principalmente en el contexto de un servicio de Windows, ya que funciona razonablemente bien para eso.


Todos los hombres tienen razón, especialmente miren la respuesta del abatishchev. Pero creo que otra cosa que otra persona necesita es que el hombre lo olvidó. intente desarrollar su proyecto "modular". Póngales su código en la biblioteca de clases como pueda. Por lo tanto, durante la operación de reparación, reemplace uno de ellos. Piense en una base de datos de combate. Cuando necesite agregar una columna a su tabla de base de datos haces para estos casos?

He desarrollado un proyecto de actualización. En eso tengo tres tipos de correcciones. 1- Error en la operación del programa y la necesidad de reemplazar un archivo DDL 2- Error en el programa y la necesidad de actualizar el archivo ejecutivo del programa actual 3- error o cambiar la base de datos y la necesidad de ejecutar una consulta de servidor SQL

En una tabla en el host web, coloco el historial de versiones y cada vez que mi aplicación comienza a buscar la nueva versión. Si existe alguna actualización, verifique su tipo y descárguela y realice la acción adecuada dependiendo del tipo de actualización y los parámetros.

buena suerte amigo


Incluso no puede desarrollar una aplicación externa, sino implementarla como módulo de su aplicación, por ejemplo, en namespace Update , y usar el generador de ensamblaje dinámico para generar un archivo ejecutable, iniciarlo y salir de la aplicación principal, volver a iniciarlo cuando finalice la actualización.

Un poco más de info .