【WPF】カスタム動作を利用してアンインストール時にタスクを削除する
おはようございます。
昨日に引き続きですが、
アプリでタスク登録した場合はアンインストール時に削除しないと
存在しないバッチなんかを永遠に実行することになりかねないですよね。
ということで、アプリをアンインストールした際にタスクを削除してみます。
一応、前回の記事はこちら。
【WPF】Windowsのタスクスケジューラにタスクを登録する
スポンサーリンク
削除用スクリプトの作成
下記、2つのファイルをプロジェクトのフォルダに配置します。
(カスタム動作からバッチファイルを直接呼び出すことができないため、
バッチを呼び出すVBScriptも作成します。)
taskDel.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 | @echo off SETLOGF=taskDelete.log echo [%DATE% %TIME%] タスクスケジュール設定を削除します。 > %LOGF% echo. >> %LOGF% echo %CD% >> %LOGF% schtasks/delete/TNDORADORA\WpfApp1(自動実行タスク)/F>>%LOGF% echo. >> %LOGF% echo [%DATE% %TIME%] タスクスケジュール設定を削除しました。 >> %LOGF% exit |
taskDel.vbs
1 2 3 4 5 6 7 | OptionExplicit DimintReturn Dimws Setws=CreateObject("Wscript.Shell") intReturn=ws.run("cmd /c "&Property("CustomActionData")&"taskDel.bat",0) |
セットアッププロジェクトの設定
バッチ、スクリプトの配置

パッケージ・エクスプローラーからセットアッププロジェクトを右クリックし、
「View」>「ファイル システム」を選択します。

「Application Folder」を右クリックし、「Add」>「ファイル」を選択します。

プロジェクトに追加した、「taskDel.bat」、「taskDel.vbs」を選択して「開く」ボタンをクリックします。
カスタム動作の設定

パッケージ・エクスプローラーからセットアッププロジェクトを右クリックし、
「View」>「カスタム動作」を選択します。

「Uninstall」を右クリックし、「カスタム動作の追加」を選択します。

項目選択ダイアログが表示されるので
「Application Folder」から、「taskDel.vbs」を選択して「OK」ボタンをクリックします。

追加した「taskDel.vbs」のプロパティを開き、
「CustomActionData」に、「 [TARGETDIR] 」を入力します。
以上でカスタム動作の設定は完了です。
カスタム動作の種類
種類 | 説明 |
---|---|
Install(インストール) | 全てのファイルがインストールされた後に実行されます。 |
Commit(確定) | インストールが問題なく終了した後に実行されます。 |
Rollback(ロールバック) | インストール中にエラーが発生し、ロールバックされた後に実行されます。 |
Uninstall(アンインストール) | アンインストールされた後に実行されます。 |
インストール
セットアッププロジェクトをビルドし、
作成されたモジュールからアプリケーションをインストールし、一度起動します。
(タスク登録処理が実行される)
アンインストール

「コントロールパネル」>「すべてのコントロールパネル項目」>「プログラムと機能」を開き、
インストールされている「WpfApp1」を右クリックし、「アンインストール」を選択します。

アンインストール確認ダイアログが表示される場合は「OK」ボタンをクリックします。
アンインストールが完了したら、
タスクスケジューラを起動してタスクの確認をします。

無事にタスクが削除されていることが確認できました。
ディスカッション
コメント一覧
まだ、コメントがありません