アプリケーションに手動でパッチを適用しようとしています。アプリケーションは、アプリケーション dll の上書きを試みる前に必ず停止してアンインストールするサービスを利用します。
問題は、アプリケーションのコアである一部の dll ファイルを上書きしたり削除したりできないことです。これらの dll ファイルは、最初にアンインストールしたサービスによって使用されます。
アプリケーションのルート ディレクトリ内にある古い DLL を置き換えるために、次のメソッドを使用して新しいファイル パスを渡します。C:\Program Files\AppName\
public static bool CopyFile(string newFile, string oldFile) {
var newfile = new FileInfo(newFile); var oldfile = new FileInfo(oldFile); var f2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, oldFile); f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, newFile); try { f2.Demand(); } catch (SecurityException s) { Console.WriteLine(s.Message); } for (int x = 0; x < 100; x++) { try { File.Delete(oldfile.FullName); newfile.CopyTo(oldfile.FullName, true); return true; } catch { Thread.Sleep(200); } } return false; }
新しいファイルを提供し、古いファイルを削除し、置き換え、上書きしたいだけです... アプリケーション
注: パッチを適用するために実行するアプリケーションは、管理者として実行されます。
何か案が?