2

それをインストールするプロジェクトとデプロイメントプロジェクトがあります。インストールされたソフトウェアは、ターゲットPC上にいくつかのファイルを生成します(ユーザーが使用している間)。アンインストール時にこれらのファイルを削除するようにDeploymentProjectに指示する方法があるかどうか疑問に思いました。

すべてのファイルは、ユーザーのアプリケーションデータフォルダーにあります。フォルダー(アプリケーションデータ内)とその中のすべてのファイルを(再帰的に)削除するようにアンインストーラーに指示できますか?

4

1 に答える 1

3

カスタム アクションを使用して、アンインストール中にファイルを削除できます。これを設定する最も簡単な方法の 1 つは、インストーラー クラスを使用することです。

Arnaldo Sandoval によるこの記事は少し古くなっていますが、それでもインストーラー クラスを使用してカスタム アクションを実装する方法の概要を説明しています。アンインストール時のファイルのクリーンアップに関するセクションも含まれています。

ただし、Installer クラスのメソッドをオーバーライドする代わりに、イベント リスナーを追加することをお勧めします。「保存された状態」を取得する場所も少し異なります。たとえば、この記事では、Install メソッドをオーバーライドして TargetDir をキャプチャする方法について説明しています。

public override void Install(System.Collections.IDictionary stateSaver) 
{ 
   base.Install(stateSaver); 
   stateSaver.Add("TargetDir", Context.Parameters["DP_TargetDir"].ToString()); 
}

次のようなメソッドを作成します。

private void onBeforeInstall(object sender, InstallEventArgs args) 
{ 
   // The saved state dictionary is a property on the event args
   args.SavedState.Add("TargetDir", Context.Parameters["DP_TargetDir"].ToString()); 
}

そして、コンストラクターに登録します。

public InstallerClass() : base()
{
   this.BeforeInstall += new InstallEventHandler(onBeforeInstall);
}

必要に応じて、Visual Studio プロパティ エディターを使用してイベントを登録することもできます。

この記事の残りの部分、特にさまざまなインストール イベントの文書化されていないすべての「機能」について説明しているセクションは優れています。

于 2010-07-30T16:20:21.900 に答える