(私はあなたのInstallShieldのようないくつかの専門的なインストーラを使用していると仮定):
- セットアッププロジェクト
- に新しいライブラリ(「CustomActions」)を追加=を追加します>新しい項目=>インストーラクラス
- 切り替えコードビューへとアンインストールの方法をオーバーライドし
コード:
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);
- セットアッププロジェクトにCustomActionsプロジェクトのプロジェクト出力(プライマリ出力)を追加します。 。 CustomActionsの
- は右あなたのセットアッププロジェクトを右クリックし、表示=>カスタムアクション
- を右クリックし、アンインストールをクリック=>追加カスタムアクション=>アプリケーションフォルダ=>プライマリ出力
注:この偉大な例です位置はhereです。彼らはこの例をより詳細に説明します。最初にこの回答で明らかにならなかったことは、アプリケーションのセットアッププロジェクトではなく、アプリケーションのプロジェクト内にインストーラクラステンプレートを追加しなければならないという事実でした。基本的にセットアッププロジェクトは、セットアッププロジェクトのカスタムアクションに追加されたアプリケーションからprocs Install()とUninstall()を呼び出します。考え方は、あなたの入札を行うコードを注入するためにこれらの2つのprocsをオーバーライドすることです...
savedState []コレクションから元のインストールディレクトリを取得することは可能ですか?私は自分のアプリにパスをハードコードしたくないので、オリジナルのインストールディレクトリを削除しようと思います。現在のディレクトリをチェックしようとすると、 'C:\ Windows \ SysWOW64'ディレクトリに終了します。 :/ –