このファイルの名前を変更するだけです。これは、その場所に書き込もうとする人のために行われます。
ノート:
1)もちろん、ファイルはまだ物理的に削除されていません。MoveFileEx
仕事を完了するためにここで言及されたトリックをするのはいいことです。
2)ロックされたファイルを削除してその場所にsmth newを書き込む場合(ビルド中など)は、ファイルの名前をGUID名に変更するだけです。フォルダをクリーンにする必要がある場合は、無視された拡張子/非表示属性を使用するか、ファイルの名前を下のパスに変更します%TEMP%
(同じドライブ上にある場合)。
3)すべてのロックされたファイルの名前を変更できるわけではありませんが、90%の実用的なアプリケーションのように機能します。開いている読み取り/書き込み/実行ハンドルに影響を与えることなくファイルを移動できます。移動したファイルは引き続き適切に機能します(もちろん、同じNTFSボリューム内で移動した場合)。
4)これは、Windowsインストーラーが、すぐに再起動するように要求する前に基本的に行うことです。ファイルを目から離し、再起動時に削除されるようにスケジュールします。通常、新しくインストールしたアプリはすぐに使用できます。
実用:
私のお気に入りはMSBuildです。このようなものでタスクをオーバーライドする<Copy/>
と、すべてのビルドがlinux-wayになります。以前のバージョンがまだどこかで実行されているかどうかは気にせず、ビルドして実行できます。古いアプリは古いバージョンのファイルを使い続けます。新しいアプリは、新しく作成されたバージョンをロードします。
同じドライブ上にある場合はに移動する可能性%TEMP%
があります(私の場合はそうではありません)。現在のソース管理クライアントでは無視される拡張子に名前を変更するだけです。