バッチファイルでインストール済みのアプリをチェック

Windowsのバッチファイルでインストール済みのアプリケーションをチェックし、されていない時のみインストーラを実行させたい時のサンプルです。

解説

それではキモの部分のみ解説します。

処理の関数化(10行目)

実際は関数ではないですがラベルを用いてInstallという関数風にしてあります。IfInstalledやRunInstallerも同様です。

Callコマンドでラベルを指定するとそのラベルまで処理が飛びます。そしてEXITコマンドで呼び出し元に戻り、結果を返しています。/Bを付けないとバッチ処理自体が終わってしまうので注意が必要です。

指定した引数(例で言うとアプリケーション名1~3)は%1に入ってきます。

インストール有無のチェック方法(29~35行目)

以下のレジストリに該当のアプリケーション名があるかどうかで判断させています。PCにインストールされている場合と個人環境にインストールされている場合とで違うので両方確認しています。

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

DisplayNameというキーにアプリケーション名が入っているので、そこだけチェックする用にfindコマンドでフィルタをかけています。

インストールの実行(40~47行目)

引数%1でアプリケーション名が受け取れるので、それぞれのアプリケーションに応じたインストールコマンドを実行します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です