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

2017年10月8日C#,開発

おはようございます。

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

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

一応、前回の記事はこちら。
【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」ボタンをクリックします。

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

タスクスケジューラ―

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

スポンサーリンク


関連するコンテンツ

2017年10月8日C#,開発WPF,プログラミング

Posted by doradora