2013-04-10 24 views
1

這是我的問題,我需要在安裝我的product.msi安裝程序時對文件夾中的現有配置文件進行備份。我嘗試使用(使用自定義操作)Installer Class它的作品,但不是在一個正確的方向。如何備份現有的配置文件?

僅在整個安裝完成後才執行備份。即,安裝後,我用來獲得3個配置文件,這3個文件被作爲文件夾中的備份。

我的安裝類:

[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Install(IDictionary stateSaver) 
     { 
      base.Install(stateSaver); 
     }   

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Commit(IDictionary savedState) 
     { 
      base.Commit(savedState); 

      string directory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
      String folderPath = directory + "\\Myproduct Before " + version; 
      string[] newPath = Directory.GetFiles(directory, "*.config"); 
      int newPathCounter = newPath.Count(); 
      if (newPathCounter != 0) 
      { 
       if (!Directory.Exists(folderPath)) 
       { 
        Directory.CreateDirectory(folderPath); 
       } 

       for (int i = 0; i < newPath.Count(); i++) 
       { 
        string source = newPath[i]; 
        string destination = source.Replace(directory, folderPath); 
        File.Copy(source, destination, true); 
       }     
      } 
      else 
      { 
       MessageBox.Show("No files to copy"); 
      } 
     } 

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Rollback(IDictionary savedState) 
     { 
      base.Rollback(savedState); 
     } 

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Uninstall(IDictionary savedState) 
     { 
      base.Uninstall(savedState); 
     } 

我也試過在OnBeforeInstall給這個代碼,但同樣的事情發生。請對此提出建議。

回答

1

也許你沒有提供正確的配置文件路徑。

以下是管理應用程序配置的可能途徑:

的配置文件安裝到程序文件的應用程序目錄,但任何變化,在運行時配置文件提出他們儘快複製到應用程序數據文件夾。

從如有需要 How do you keep user.config settings across different assembly versions in .net?

已安裝應用程序的新版本每次現有配置

可以升級新安裝的應用程序,它在%應用程序數據\本地創建一個新的文件夾\%\並提出了新的配置文件那裏。現有文件保留在較舊的文件夾中,可隨時複製,但您需要找到正確的路徑或只複製總是以應用程序名稱命名的完整文件夾。

相關問題