2011-07-18 57 views

答えて

5

user.configデータは%APPDATA%\ProjectNameフォルダに格納されます。

あなたは、あなただけのSystem.IO.Directory.Delete("%APPDATA%\ProjectName");

注意を使用することができますアンインストールするときuser.configデータを削除する場合:あなたは、これは、ユーザーがインストールすることを選択したパスで、次のContext.Parameters["assemblypath"]を使用してインストールパスを取得することができますプロジェクト。

+0

user.configのがこの場所に作成されますのUninstallイベントハンドル:C:\ Users \ユーザー[ユーザー] \のAppDataを\ Local \ [Company] \ [Project Name] .vshos_Url_zw3i045fzlcuakzzn3dtaw3fqgh03sub \ 1.0.0.0;私はその場所と同じではないと思う。 –

+0

@Martin Ongtangco、そうだね。しかし、すべてのuser.config設定を削除する場合は、このフォルダを削除するだけで済みます。 C:\ Users [User] \ AppData \ Local [Company] [プロジェクト名] – Jethro

+0

明らかに、 "Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)、" Company Name ")"は私にユーザーを与えませんしかし、 "すべてのユーザー" –

0

インストールまたはアンインストール中、またはその両方で実行可能ファイルをトリガーするカスタムアクションを作成できます。例えば:user.configフォルダーを削除する.exeを作成してください: このEXEをバイナリテーブルに追加します。バイナリテーブルに名前を付けるための外部キーであるCustomActionテーブルにエントリを追加し、実際のexeファイル名とタイプ= 2のTArgetを追加します。インストールプロセスで.exeをトリガするシーケンス順序でInstallExecuteSequenceにこのアクションを追加します。

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をアンインストールするページを追加したり、すべての設定を削除するかどうかを尋ねるプロンプトを表示して、再インストールするかどうかを選択することができます。

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); 
    } 
関連する問題