2009-07-13 26 views
2

"XYZ"という名前のウィンドウ.netアプリケーションがあり、インストール後にアプリケーションを使用しているときに "ABC"という名前のカスタムフォルダを作成しました(フォルダはアプリケーションパス以外の場所にある可能性があります)。C#.NETアプリケーションのアンインストール時にフォルダを削除するには?

アプリケーションをアンインストールすると、すべてのフォルダは削除されますが、「ABC」フォルダはそこに残ります。

アプリケーションパス以外の「ABC」フォルダを削除するにはどうすればよいですか? 、私の知識を1として

答えて

9

(私はあなたのInstallShieldのようないくつかの専門的なインストーラを使用していると仮定):

  1. セットアッププロジェクト
  2. に新しいライブラリ(「CustomActions」)を追加=を追加します>新しい項目=>インストーラクラス
  3. 切り替えコードビューへとアンインストールの方法をオーバーライドし

コード:

public override void Uninstall(IDictionary savedState) 
{ 
    base.Uninstall(savedState); 

    // Delete folder here. 
} 

独自のDeleteFolderメソッドは、Microsoft.VisualBasicへの参照を追加書きしたくない場合は、次の

Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents); 
  1. セットアッププロジェクトにCustomActionsプロジェクトのプロジェクト出力(プライマリ出力)を追加します。 。 CustomActionsの
  2. は右あなたのセットアッププロジェクトを右クリックし、表示=>カスタムアクション
  3. を右クリックし、アンインストールをクリック=>追加カスタムアクション=>アプリケーションフォルダ=>プライマリ出力

注:この偉大な例です位置はhereです。彼らはこの例をより詳細に説明します。最初にこの回答で明らかにならなかったことは、アプリケーションのセットアッププロジェクトではなく、アプリケーションのプロジェクト内にインストーラクラステンプレートを追加しなければならないという事実でした。基本的にセットアッププロジェクトは、セットアッププロジェクトのカスタムアクションに追加されたアプリケーションからprocs Install()とUninstall()を呼び出します。考え方は、あなたの入札を行うコードを注入するためにこれらの2つのprocsをオーバーライドすることです...

+0

savedState []コレクションから元のインストールディレクトリを取得することは可能ですか?私は自分のアプリにパスをハードコードしたくないので、オリジナルのインストールディレクトリを削除しようと思います。現在のディレクトリをチェックしようとすると、 'C:\ Windows \ SysWOW64'ディレクトリに終了します。 :/ –

0

は、あなたがより多くのdetailesここ EDIT 、サンプルはVB.NETであるが、理解することは難しいことではありませんlink優れているため、ここで読むことができ、カスタムインストーラを作成します&のアプリをインストールするためにインストーラを使用している場合、そのフォルダはインストーラではなく&のアプリで作成され、削除されません。

代わりに、アンインストール時に実行されるカスタムアクションを使用して削除する必要があります。または、アンインストールが進行中で、フォルダを削除するカスタムC#アプリを作成します。あなたはそのためにカスタムアクションを使用する必要が

0

);

関連する問題