Я реализую простой механизм обновления для приложения. Я пишу, что последняя часть процесса обновления состоит в переименовании исполняемого файла текущего приложения из чего-то вроде myApp.exe в myApp.old.exe, а затем переименовании свежего загруженный и обновленный файл из myApp.new.exe в myApp.exe.
Я бы хотел найти способ, чтобы эти две операции были атомарными, потому что, если мое приложение рухнуло (по любой причине, например, астероиды падают на линию электропередачи) после того, как оно переименовало себя и перед тем, как переименовало новую версию, он застрянет в состоянии, когда его нельзя будет перезапустить с помощью обычных ярлыков, поэтому он не сможет завершить обновление.
Так есть ли вообще сделать обновление безотказным?