2011-07-18 70 views

回答

5

user.config數據存儲在%APPDATA%\ProjectName文件夾中。

如果你想,當你卸載,那麼你可以只使用System.IO.Directory.Delete("%APPDATA%\ProjectName");

請注意清除user.config數據:您可以通過以下Context.Parameters["assemblypath"]這是用戶選擇安裝路徑獲取安裝的路徑該項目。

+0

的user.config獲取在這個位置創建的Uninstall事件:C:\用戶\ [用戶] \應用程序數據\ Local \ [Company] \ [Project Name] .vshos_Url_zw3i045fzlcuakzzn3dtaw3fqgh03sub \ 1.0.0.0;我不認爲它在同一個位置 –

+0

@Martin Ongtangco,是的,這是正確的。但是如果你想刪除所有的user.config設置,你可以刪除這個文件夾。 C:\ Users [User] \ AppData \ Local [Company] [Project Name] – Jethro

+0

顯然,「Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),」Company Name「)」不會給我用戶但「所有用戶」 –

0

您可以編寫自定義操作以在安裝或卸載或兩者同時觸發可執行文件。 例如:創建一個.exe,它將刪除user.config文件夾。在二進制表中添加此exe文件。在CustomAction表中添加一個條目,其中Source是要在Binary表中命名的外鍵,並且TArget是實際的exe文件名和type = 2。現在,在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); 
    } 

我不是真的要離開提示在那裏,這只是用於測試,以確保我不會刪除我的電腦上的文件夾,錯誤..直到這個代碼已經全面測試。公司名稱和項目名稱需要更改以符合您的項目。

我可能會添加一個頁面來卸載用戶界面,或者只是一個提示,詢問他們是否要刪除所有設置(以便他們可以不選擇是否要重新安裝)。

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); 
    }