実行可能ファイルを実行する前に、.NET 4 を使用して更新をチェックする (かなり) シンプルな C# アプリケーションを作成しています。新しいバージョンの exe がネットワーク共有に存在する場合は、それをローカル フォルダーにコピーして起動します。File.Copy() の制限について読んでいる間を除いて、すべて完全に機能しています。これを行っている間は進行状況バーを表示できないことに気付きました。私はそれをしようとしています。
ここにあるサンプル コードを使用したところ、正常にコンパイルされました (ただし、backgroundworker がどのように機能するのか正確にはまだ少しわかりません)。ただし、実際にアプリケーションを実行しようとすると、CopyFilEx() メソッドは false を返します。エラーは「パラメータが正しくありません」です。
私のコード (関連するセクションのみ、必要に応じて追加します)
関数の呼び出し:
XCopy.Copy(strServerAppPath + strExeName, strLocalAppPath + strExeName, true, true, (o, pce) =>
{
worker.ReportProgress(pce.ProgressPercentage, strServerAppPath + strExeName);
});
(ソース パスは "C:\test.txt" と評価され、宛先パスは "C:\test\test.txt" と評価されます)
上記のリンクのコードでエラーが発生する場所:
bool result = CopyFileEx(Source, Destination, new CopyProgressRoutine(CopyProgressHandler), IntPtr.Zero, ref IsCancelled, copyFileFlags);
if (!result)
throw new Win32Exception(Marshal.GetLastWin32Error());
助けてくれてありがとう、私はこれに数時間苦労してきました...