Pregunta

¿Cuál es la mejor manera de finalizar un programa y luego ejecutar código adicional del programa que se está finalizando?Por ejemplo, ¿cuál sería la mejor manera para que un programa se actualice automáticamente?

¿Fue útil?

Solución

Usted tiene un par de opciones:

Podrías usar otra aplicación .exe para realizar la actualización automática.Este es probablemente el mejor método.

También puedes cambiar el nombre del exe de un programa mientras se está ejecutando.Por lo tanto, le permite obtener el archivo de algún servidor de actualización y reemplazarlo.En el próximo inicio del programa, utilizará el nuevo .exe.Luego puede eliminar el archivo renombrado al inicio.

Otros consejos

Sería en realidad Es útil saber de qué idioma estamos hablando aquí.Estoy seguro de que podría darte algunos consejos realmente geniales para hacer esto en PowerBuilder o Cobol, ¡pero puede que eso no sea lo que buscas!Sin embargo, si estás hablando de Java, entonces podrías usar un gancho de apagado; funciona muy bien para mí.

Otra cosa a considerar es que en la mayoría de las aplicaciones "principales" que he estado usando (FileZilla, Paint.NET, etc.), los actualizadores desinstalan la versión anterior de la aplicación y luego realizan una instalación nueva de la nueva versión. de la aplicación.

Entiendo que esto no funcionará para aplicaciones realmente grandes, pero parece ser un proceso "preferido" para aplicaciones de tamaño pequeño y mediano.

No conozco una manera de hacerlo sin un segundo programa que el programa principal inicie antes de cerrar.El programa 2 descarga e instala los cambios y luego reinicia el programa principal.

Hicimos algo como esto en nuestra aplicación anterior.Capturamos la finalización del programa (en .NET 2.0) desde la X o el botón de cerrar y luego iniciamos un proceso de actualización en segundo plano que el usuario no vio.Verificaría el servidor (aplicación cliente-servidor) en busca de una actualización y, si hubiera una disponible, la descargaría en segundo plano usando BITS.Luego, la próxima vez que se abrió la aplicación, se daría cuenta de que había una nueva versión (establecimos una bandera) y aparecía un mensaje alertando al usuario sobre la nueva versión, y un botón para hacer clic si deseaba ver las nuevas funciones agregadas. a esta versión.

Es más fácil si tienes una aplicación secundaria que se ejecuta para realizar las actualizaciones.Ejecutaría la aplicación "actualizadora" y luego, dentro de ella, esperaría a que salga el otro proceso.Si necesita acceso a las DLL de aplicaciones normales y demás, pero también necesitan actualizarse, puede ejecutar el actualizador desde una ubicación secundaria con las DLL ya actualizadas para que no estén en uso en la ubicación original.

Si está escribiendo una aplicación .NET, podría considerar usar ClickOnce.Si necesita un poco de personalización, puede buscar en otra parte.

Contamos con un proceso externo que realiza la actualización por nosotros.Cuando encuentra una actualización, la descarga a una carpeta secundaria y luego espera a que salga la aplicación principal.Al salir, reemplaza todos los archivos actuales.El proceso primario simplemente inicia el proceso de actualización cada 4 horas.Debido a que el proceso de actualización esperará a que salga la aplicación principal, la aplicación principal no tiene que realizar ningún procesamiento especial aparte de iniciar la aplicación de actualización.

Este es un problema secundario, pero si está considerando escribir su propio proceso de actualización, le recomiendo que considere usar algún tipo de compresión para (1) guardar en la descarga y (2) proporcionar un archivo para extraer de un servidor de actualización. .

¡Espero que tenga sentido!

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