是否有.net应用程序可用的文件系统事务机制?

Mat*_*agé 5 .net filesystems transactions

我正在为应用程序实现一个简单的更新机制我正在编写更新过程的最后一部分,包括将当前应用程序可执行文件从myApp.exe重命名为myApp.old.exe,然后重命名刚刚下载和更新的从myApp.new.exe到myApp.exe的文件.

我想找到一种方法让这两个操作成为原子,因为如果我的应用程序崩溃(出于任何原因,如小行星落在电源线上)重命名自己之后和重命名新版本之前,它将是陷入无法使用常用快捷方式重新启动的状态,因此无法完成更新.

那么无论如何都要使更新失效?

小智 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/

他们有代码示例。