BETA

【WPF】カスタム動作を利用してアンインストール時にタスクを削除する

投稿日:2019-07-05
最終更新:2019-07-05
※この記事は外部サイト(https://www.doraxdora.com/blog/2017/10/08/...)からのクロス投稿です

昨日に引き続きですが、
アプリでタスク登録した場合はアンインストール時に削除しないと
存在しないバッチなんかを永遠に実行することになりかねないですよね。

ということで、アプリをアンインストールした際にタスクを削除してみます。

一応、前回の記事はこちら。
【WPF】Windowsのタスクスケジューラにタスクを登録する

削除用スクリプトの作成

下記、2つのファイルをプロジェクトのフォルダに配置します。

(カスタム動作からバッチファイルを直接呼び出すことができないため、
バッチを呼び出すVBScriptも作成します。)

taskDel.bat

    @echo off  

    SET LOGF=taskDelete.log  
    echo [%DATE% %TIME%] タスクスケジュール設定を削除します。 > %LOGF%  
    echo. >> %LOGF%  
    echo %CD% >> %LOGF%  

    schtasks /delete /TN DORADORA\WpfApp1(自動実行タスク) /F >> %LOGF%  

    echo. >> %LOGF%  
    echo [%DATE% %TIME%] タスクスケジュール設定を削除しました。 >> %LOGF%  

    exit  

taskDel.vbs

Option Explicit  

Dim intReturn  
Dim ws  
Set ws = 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」ボタンをクリックします。

アンインストールが完了したら、
タスクスケジューラを起動してタスクの確認をします。

無事にタスクが削除されていることが確認できました。

何かのお役に立てれば。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@doraxdoraの技術ブログ 主に Java, C#, Python, Javascript の記事を載せていく予定。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!