winforms - reparar - solucionador de problemas de aplicaciones en windows 10
Actualización automática para la aplicación WinForms (4)
Al crear una característica de actualización automática para una aplicación .NET WinForms, ¿cómo actualiza los archivos DLL y no afecta a la aplicación que se está ejecutando actualmente?
Dado que la aplicación se está ejecutando durante el proceso de actualización, ¿no habrá un bloqueo en los archivos DLL (porque esos archivos DLL deberán sobrescribirse durante la actualización).
Si publica a través de ClickOnce, todo eso tiende a ser manejado por usted. Tiene sus propios pro y contras, pero generalmente es más fácil que tratar de codificarlo todo usted mismo.
Tanto Wikipedia como 15 segundos tienen información decente sobre el uso de ClickOnce, cómo funciona, etc.
Como otros han declarado, ClickOnce no es tan flexible como rodar su propia solución, pero es mucho menos complicado. Al principio tiene una pequeña curva de aprendizaje, pero con casi todo incluido en Visual Studio y el uso de Wizards, por lo general no tarda en tropezar con una solución funcional.
A medida que las implementaciones se vuelven más complejas (es decir, más allá de tener requisitos previos o código de la aplicación que necesita actualización) y necesita realizar muchas tareas posteriores a la instalación o preinstalación, hay cosas como WiX que le dan una solución híbrida entre Windows Installer y ClickOnce, con el costo de la flexibilidad como una curva de aprendizaje mucho más pronunciada.
La única razón por la que trato de evitar los instaladores personalizados es que terminas gastando demasiado tiempo tratando de hacerlo bien para manejar un montón de diferentes escenarios "¿Qué pasaría si ...?"
Tengo una aplicación independiente ''launcher'' que busca actualizaciones a través de un servicio web. Si hay actualizaciones, las descarga y luego ejecuta mi aplicación, que está en un conjunto separado.
Las otras alternativas son usar cosas como ClickOnce, o descargar los archivos a un área separada y reiniciar la aplicación, como alguien mencionó.
Tenga cuidado con ClickOnce, sin embargo, no es tan flexible como parece. Y si se despliega en un sistema que requiere elevar su programa a un nivel de seguridad superior para que se ejecute, puede tener problemas si no tiene un certificado para su aplicación instalada. Me resulta muy difícil obtener respuestas directas en Internet a cosas como la administración de certificados cuando se trata de ClickOnce. Si tiene una aplicación compleja, es posible que desee instalar su propio actualizador, que es lo que terminé teniendo que hacer.
Por lo general, descargaría los archivos nuevos en un área separada. Luego, apague y reinicie, y al inicio busque y use los nuevos archivos si los encuentra. Siempre manteniendo una última versión de trabajo conocida en el lateral para que el usuario pueda volver a utilizar algo que definitivamente funciona si la descarga causa problemas.
ClickOnce es una buena tecnología de Microsoft que hace esto por usted y puede usarlo directamente desde Visual Studio 2008.
Deberá cerrar su aplicación y reiniciarla, como ya han comentado otras personas.
Escribí un código de código abierto para hacer eso en un modo transparente, incluida una aplicación de actualización externa para hacer la actualización en frío real. Ver 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 Apache 2.0)