0

アプリケーションに手動でパッチを適用しようとしています。アプリケーションは、アプリケーション 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;
}

新しいファイルを提供し、古いファイルを削除し、置き換え、上書きしたいだけです... アプリケーション

注: パッチを適用するために実行するアプリケーションは、管理者として実行されます。

何か案が?

4

1 に答える 1