我正在为应用程序实现一个简单的更新机制我正在编写更新过程的最后一部分,包括将当前应用程序可执行文件从myApp.exe重命名为myApp.old.exe,然后重新命名从myApp.new.exe下载并更新的文件到myApp.exe。
我想找到一种方法让这两个操作成为原子,因为如果我的应用程序崩溃(出于任何原因,如小行星落在电源线上)重命名后,在重命名新版本之前,它将停留在无法使用常用快捷方式重新启动的状态,因此无法完成更新。
那么无论如何都要使更新失效?
答案 0 :(得分:2)
2008 / Vista向上是的,虽然没有曝光。此时,NTFS在文件系统/内核级别获得了文件系统事务。
请检查:
http://www.michaelckennedy.net/blog/2007/12/07/SystemTransactionsAndWindowsVistaNTFSUpdated.aspx
http://www.codeguru.com/cpp/misc/misc/fileio/article.php/c9987
http://xavierdecoster.wordpress.com/2009/10/18/transactional-ntfs-txf/
他们有代码示例。