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

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でアプリケーション名が受け取れるので、それぞれのアプリケーションに応じたインストールコマンドを実行します。

2 COMMENTS

葵太郎

設定をした後、本当にインストールができているのか、設定後にログに出すバッチを作ってます。特定アプリがインストールされたかうまくできなかったのですが、こちらは参考になりそうです。

インストールができていたら、「○○アプリはインストールできています」とログ出力したのですが、どの辺をさわったらいいでしょうか。

返信する
管理者

試してないけど16行目の0を1にして19行目をログ出力するように修正すれば出来るんじゃないかなと思います。

返信する

コメントを残す

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