He estado buscando una buena solución durante 3 días, pero hasta ahora no he podido encontrarla. Mi situación es:
Un cliente tiene una aplicación instalada (C ++, aplicación de console). La aplicación en la puesta en marcha comprobará su número de versión con el server y volverá o está actualizado o que debería download una nueva versión.
Si tiene que download la nueva versión, me gustaría download la nueva secuencia de commands con Curl al nombre decir: Application2.exe
Sin embargo, quiero que reemplace el antiguo Application.exe que desencadenó la descarga de la nueva versión.
Mi solución fue: Application.exe descarga Application2.exe . Cuando se descarga, debería desencadenar Updater.exe, que duerme, digamos 5 segundos. Dentro de estos 5 segundos (o el intervalo de time que mejor se adapte a las suites). Dentro de estos 5 segundos, Application.exe tiene time para apagar y después de 5 segundos, Updater.exe reemplaza Application.exe con Application2.exe .
Ahora la actualización ha finalizado y el cliente tiene instalada la última versión.
¿Es posible esta solución con respecto a los files de locking del sistema, etc.?
Buenas noticias, puede cambiar el nombre de los files que están abiertos en Windows (ejecutables y DLL). El locking evita que elimines files, sin renombrarlos.
Application_old.exe
mientras se está ejecutando Application.exe
Application.exe
De esta manera, tendrá un reinicio automático después de la actualización. Yo hago esto yo mismo todo el time.