C ++ se actualiza automáticamente a la nueva versión

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.

  1. Cambie el nombre del progtwig actualmente en ejecución a Application_old.exe mientras se está ejecutando
  2. Escriba el progtwig descargado en Application.exe
  3. Ejecute el nuevo Application.exe
  4. Cierre el anterior.
  5. Elimine la versión anterior utilizando el nuevo progtwig ejecutado.

De esta manera, tendrá un reinicio automático después de la actualización. Yo hago esto yo mismo todo el time.