Estoy implementando un mecanismo de actualización simple para una aplicación que estoy escribiendo. La última parte del proceso de actualización consiste en cambiar el nombre del archivo ejecutable de la aplicación actual de algo así como myApp.exe a myApp.old.exe y luego cambiar el nombre del recién descargado y archivo actualizado de myApp.new.exe a myApp.exe.¿Hay algún tipo de mecanismo de transacción del sistema de archivos disponible para la aplicación .net?
Me gustaría encontrar una forma de que estas dos operaciones sean atómicas, porque si la aplicación falla (por cualquier razón, como un asteroide que cae en una línea eléctrica) después de que se renombró y antes cambió la nueva versión , estará atascado en un estado en el que no se puede reiniciar utilizando los accesos directos habituales, por lo que no podrá finalizar su actualización.
¿Hay alguna forma de que la actualización sea a prueba de fallas?