2012-04-03 4 views
0

.net 응용 프로그램을 설치하는 MSI 설치 관리자 패키지가 있습니다. 또한 msiexec/x 옵션을 통해 제거를 수행하는 Uninstall.bat 파일도 설치합니다. 그러나 로컬 설정 \ 응용 프로그램 데이터 폴더 \ 회사 이름 \ 제품 폴더에서 user.config 파일을 삭제하지 않습니다.msiexec/x 명령 줄 옵션을 통해 제거시 user.config 삭제

설치 프로그램 자체에서 옵션을 찾을 수 없어서 어떻게해야할지 모르겠습니다.

작업을 수행 할 수있는 다른 배치 파일을 만들 수 있지만 올바른 방법인지는 확실하지 않습니다. 또한 일괄 처리 파일로 작업을 시도하면 현재 사용자가 올바른 폴더에 도달하는 방법을 어떻게 알 수 있습니까? 나는 너무 복잡하게 만들고 싶지 않다. 그것을 할 수있는 쉬운 방법이 있습니까?

좋습니다.

답변

0

나는 그것을 작동시켰다. 솔루션에 새로운 콘솔 프로젝트 'UninstallHelper'을 만들었습니다. 설치자 클래스UninstallHelper 프로젝트에 추가했습니다. 나는 OnBeforeUninstall 메서드를 재정의하고 있습니다 :

protected override void OnBeforeUninstall(IDictionary savedState) 
    { 
     base.OnBeforeUninstall(savedState); 
     try 
     { 
      List<string> appFolders = new List<string>(); 
      string userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 
      string userDataFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 


      userFolderPath = userFolderPath + @"\CompanyName"; 
      userDataFolderPath = userDataFolderPath + @"\CompanyName"; 


      appFolders.Add(userFolderPath); 
      appFolders.Add(userDataFolderPath); 


      foreach (string folderPath in appFolders) 
      { 
       List<string> umDirs = new List<string>(); 
       DirectoryInfo targetDir = new DirectoryInfo(folderPath); 

       foreach (DirectoryInfo dir in targetDir.GetDirectories()) 
       { 
        if (dir.Name.StartsWith("ProductName")) 
         umDirs.Add(dir.FullName); 
       } 

       foreach (string dirName in umDirs) 
       { 
        DirectoryInfo subDir = new DirectoryInfo(dirName); 
        foreach (FileInfo file in subDir.GetFiles()) 
        { 
         if (file.Exists) 
          file.Delete(); 
        } 

        foreach (DirectoryInfo dir in subDir.GetDirectories()) 
        { 
         if (dir.Exists) 
          dir.Delete(true); 
        } 

        subDir.Delete(); 
       } 
      } 
     } 
     catch(Exception ex) 
     { 
      //Console.WriteLine(ex.Message); 
      //Console.ReadKey(); 
     } 

는 지금은 설치 프로그램에이 프로젝트의 기본 출력을 추가 할 수 있습니다. 그리고 마지막으로, 나는 사용자 정의 작업을을 기본 출력으로 추가 UninstallHelper 프로젝트에서 추가합니다.

이것은 나를위한 속임수였습니다.