2019-07-05に投稿

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

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

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

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

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

タスクスケジューラー

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

何かのお役に立てれば。

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント