2011-07-18 2 views

답변

5

user.config 데이터는 %APPDATA%\ProjectName 폴더에 저장됩니다. 당신은 당신이 당신이 바로 System.IO.Directory.Delete("%APPDATA%\ProjectName");

주를 사용할 수 있습니다 제거 할 때 user.config 데이터를 제거하려면

: 당신은 Context.Parameters["assemblypath"] 다음이 사용자가 설치하도록 선택하는 경로를 사용하여 설치 경로를 얻을 수 있습니다 프로젝트.

+0

user.config의 GET의이 위치에 생성의 Uninstall 이벤트를 처리 \ Local \ [Company] \ [Project Name] .vshos_Url_zw3i045fzlcuakzzn3dtaw3fqgh03sub \ 1.0.0.0; 나는 그 같은 위치를 생각하지 않는다. –

+0

@ Martin Ongtangco, 맞다. 맞다. 그러나 모든 user.config 설정을 제거하려면이 폴더를 삭제하면됩니다. C : \ Users [User] \ AppData \ Local [회사] [프로젝트 이름] – Jethro

+0

분명히 "Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),"회사 이름 ")" 그러나 "모든 사용자" –

0

설치 또는 제거 중 또는 둘 다를 실행하는 동안 실행 파일을 트리거하는 사용자 지정 동작을 작성할 수 있습니다. 예 :: user.config 폴더를 삭제하는 .exe를 만듭니다. 바이너리 테이블에이 exe를 추가하십시오. 바이너리 테이블에 이름을 지정하는 외래 키인 Source와 CustomAction 테이블에 항목을 추가하고 실제 exe 파일 이름 및 유형 = 2 인 TArget을 추가합니다. 이제 InstallExecuteSequence에서이 작업을 설치 과정에서 .exe를 트리거 할 순서 순서와 함께 추가하십시오 .

1

이것은 위의 대답을 기반으로 나를 위해 일했습니다. 내 응용 프로그램의 경우 "모든 사용자"가 아닌 사용자 단위의 설치 만 허용하므로 여러 사용자의 제거 또는 제거를 실행하는 현재 사용자 이외의 사용자에 대해 걱정할 필요가 없습니다. "모든 사용자"설치를 허용하면 해결할 몇 가지 문제가 있습니다. 실제로 거기에 프롬프트를 떠나지 않을거야

public override void Uninstall(System.Collections.IDictionary savedState) 
    { 
     String p = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CompanyName"); 
     string[] ss = Directory.GetDirectories(p, "ProjectName.*"); 
     foreach (string s in ss) 
     { 
      if(MessageBox.Show("Delete " + s + "?","Delete Settings?",MessageBoxButtons.YesNo) == DialogResult.Yes) 
       Directory.Delete(s, true); 
     } 
     base.Uninstall(savedState); 
    } 

, 그건 그냥이 코드는 완벽하게 테스트 할 때까지 .. 내 PC에 잘못된 폴더를 삭제 아니에요 확인하는 테스트입니다. 프로젝트에 맞게 CompanyName과 ProjectName을 변경해야합니다.

UI를 제거하는 페이지를 추가하거나 모든 설정을 삭제할 것인지 묻는 메시지 만 표시하여 다시 설치할 것인지 선택할 수 있습니다. C : 사용자를 \ \ [사용자] \의 AppData

2
var filePath = Environment.ExpandEnvironmentVariables(@"%userprofile%\APPDATA/ProjectName"); 
System.IO.Directory.Delete(filePath); 
0

1) Create a custom action (article includes pictures)

2) 사용자 지정 작업

[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
    public override void Uninstall(IDictionary savedState) 
    { 
     try 
     { 
      string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 
      path = Path.Combine(path, "{Your application folder name}"); 
      Directory.Delete(path, true); 
     } 
     catch(Exception) 
     { 
     } 
     base.Uninstall(savedState); 
    } 
관련 문제