VS 2010 で Setup プロジェクトを使用してセットアップを作成しました。これにより、アプリケーションがプログラム ファイル フォルダー (たとえば XXX) にインストールされます。私のアプリケーションはさらに、いくつかのファイルとフォルダーを XXX フォルダーに作成します。アンインストール時に、アプリケーションによって作成されたファイルとフォルダーがXXXに残っている間、セットアップによって作成されたものはすべて削除されます。
インストーラークラスを使用してフォルダー (XXX) を削除するカスタム コードを作成しましたが、ユーザーがコントロール パネルからアンインストールすると実行されず、自分で作成したセットアップからアンインストールすると正常に実行されます。
4 に答える
最初のステップは、アプリケーション フォルダーではなく、ユーザーごとの場所にデータを書き込むようにアプリケーションを変更することです。たとえば、現在のユーザーの AppData ディレクトリにあるカスタム フォルダーを使用できます。このようにして、許可関連の問題を回避します。
このフォルダーを削除するには、実際にカスタム アクションを使用できます。セットアップ プロジェクトの [アンインストール] の下に追加されている場合は、コントロール パネルとパッケージの両方のアンインストールに対して実行する必要があります。
詳細なアンインストール ログを作成し、カスタム アクション名を検索して何が起こるかを確認してください。
そのためのカスタムコードを作成する必要はないと思います。すべてのファイルが一時的で永続的ではないとマークされている場合、これはMSIエンジンによって直接処理されます。
フォルダ、ファイル、およびセットアッププロジェクト自体の構成とプロパティを試してみると、コードを記述せずに必要なものを入手できます。
ファイルを削除するためのカスタム アクションは、UI セクションでスケジュールされていると思います。コントロール パネルからアンインストールを開始すると、最小限の UI モードで実行され、すべてのダイアログがスキップされます。
カスタム アクションはInstallExecute
テーブルでスケジュールする必要があります。(UAC と互換性を持たせるには、 noimpersonateで延期する
必要があります。ただし、アプリケーション自体は UAC と互換性がないため、それほど重要ではありません。)