2017-10-17 16 views
1

C#.NET WinFormsアプリケーションを作成していますが、インストーラをVisual Studioセットアッププロジェクトとして作成しています。Visual Studioセットアッププロジェクト - 実行時に作成されたファイルは、アンインストール時に削除されません。

Windows 10では、コントロールパネルにインストールされているファイルを削除できます。しかし、実行時にアプリケーションがログファイルを含むフォルダを作成し、このフォルダとログファイルは、アプリケーションのアンインストール時に削除されません。

これらのファイルをプログラムのアンインストール時に削除するにはどうすればよいですか?

+0

アプリケーションを公開するには、ClickOnceを使用していますか? – ZerosAndOnes

+0

ClickOnceとは何かわかりません。Visual Studioでインストーラをビルドしています – shadowsora

+0

[clickonceアプリケーションをアンインストールした後に余分なファイルを削除する]の可能性があります(https://stackoverflow.com/questions/7829151/removing-extra-files-after -uninstalling-a-clickonce-application) – user12345

答えて

3

カスタムインストーラアクションを使用して、アプリケーションのインストールまたはアンインストール中にカスタムアクションを実行できます。これを行うには、CustomActionから派生するクラスを含む新しいクラスライブラリを追加する必要があります。

は、手順は次のとおりです。

  1. は、新しいセットアッププロジェクトを追加します。 (プロジェクトテンプレートをお持ちでない場合は、ここからVS2013VS2015またはVS2017をダウンロードしてインストールしてください)
  2. メインプロジェクトのプライマリ出力をセットアッププロジェクトに追加します。
  3. 新しいクラスライブラリプロジェクトを追加します。
  4. 新しいインストーラアクションをクラスライブラリプロジェクトに追加し、これらの手順の最後にコードを使用します。
  5. 右、ソリューションエクスプローラで、ビューメニューでセットアッププロジェクトをクリックしカスタムアクションを選択し、セットアッププロジェクト
  6. にクラスライブラリの主な出力を追加します。
  7. カスタムアクチンエディタで、アンインストールを右クリックし、カスタムアクションの追加...を選択し、クラスライブラリのプライマリ出力を選択します。
  8. アクション名を、ファイル名をに変更し、プロパティーをCustomActionDataに正確に設定すると、正確には/path="[TARGETDIR]\"になります。
  9. ソリューションとセットアッププロジェクトを再構築します。
  10. プロジェクトをインストールします。

カスタムアクションのコード

System.Configuration.Installアセンブリへの参照を追加して、次の内容を持つプロジェクトにクラスを追加します。あなたはここに必要なロジックを簡単に持つことができます。

using System.Collections; 
using System.ComponentModel; 
using System.Configuration.Install; 

namespace InstallerActions 
{ 
    [RunInstaller(true)] 
    public partial class RemoveFiles : Installer 
    { 
     protected override void OnAfterUninstall(IDictionary savedState) 
     { 
      var path = System.IO.Path.Combine(Context.Parameters["path"], "log"); 
      System.IO.Directory.Delete(path, true); 
     } 
    } 
} 
+0

まさに私が探していたもの!ちょうど、特定のターゲットディレクトリを使用するのではなく、とにかく私はインストールディレクトリをつかむことができますか? AppDomain.CurrentDomain.BaseDirectory(私がメインアプリケーションで使っているもの)はこれを達成しませんでした。 – shadowsora

+1

'Context.Parameters [" path "]'はインストールディレクトリです。 –

関連する問題