【Bat】複数のmsuをインストールするバッチの作り方

Bat

今回はWindowsの更新プログラムによくある、.msuの拡張子ファイルをインストールするバッチを作ってみたいと思います。
それだけでは芸がないので、フォルダに一か所に集めた複数のmsuファイルを一括でインストールしてみるところまでやってみたいと思います。

基本的な情報とインストールコマンド

まず、msuファイルのダウンロードですが、Windows Update カタログからダウンロードできます。よくある、特定のKBが入っているとアプリケーション動かないなどの要因で自動更新をOFFにしている環境では、こちらから自分で更新プログラムを選んでダウンロードするケースは多いですね。

Microsoft®Update カタログ

https://www.catalog.update.microsoft.com/Home.aspx

ダウンロードしたmsuファイルについてはMicrosoftの下記ドキュメントの通り、ダブルクリックで手動インストールするか、コマンドラインから実行することでインストールできます。

Windows の Windows Update スタンドアロン インストーラーについて

https://support.microsoft.com/ja-jp/help/934307/description-of-the-windows-update-standalone-installer-in-windows

ですが、このままだとインストーラーが起動し、ある程度マウス操作が必要になってしまいます。
1台くらいであればそれほどでもありませんが、何台も設定する際などは億劫なものです。
なので、まずは操作の必要のないサイレントインストールにしてみたいと思います。

サンプルコマンド

%USERPROFILE%\Desktop\Windows6.0-KB934307-x86.msu -quiet -norestart

今回は実行するユーザーのデスクトップに配置したという前提でやってみます。

このように、オプションとして[-quiet]と[-norestart]を付けます。
[-quiet] は文字通り静かにインストールします。ダイヤログなどを一切表示せず、ユーザー側での操作なしにインストールが完了します。ただし、前提KBがある場合など前提条件がそろっていない場合は失敗します。

[-norestart] は 再起動を抑制します。
[-quiet]を指定していると再起動が必要なインストールの場合、勝手に再起動が始まってしまいます。いくつもの更新があった場合や、作業中で保存していないファイルがある場合などで有効です。作業が終わった時には手動で再起動する必要があります。

これによって一切表示せず、操作もなくインストールが可能です。

※msuファイルはデフォルトでWusa.exeに関連付けされているので、そのまま直実行させても動作しますので省略しました。

一括で複数のmsuファイルをインストールする

上記のコマンドと「For」と「Dir」コマンドを組み合わせて、バッチファイルと同じフォルダ内のすべてのmsuファイルを一気にインストールしてみましょう。

@echo off
cd /d %~dp0

for /f %%a in ('dir /b *.msu') do (
echo %%a インストール中
call %%a /quiet /norestart
)

pause
exit

ここでは詳しく解説しませんが、「dir /b *.msu」 で全てのmsuを拡張子にしているファイルを読み込んでいます。

その後、 「for /f %%a in ('dir /b *.msu') 」とすることで、forがDirの結果を一行ずつ読み込み、doの()内を実行するといった内容です。

この場合ですと、「dir」で読み込んだmsuファイルのリストを「for」が一個ずつインストールしていきます。

※「cd /d %~dp0」はバッチファイルの置き場所と同じパスへ移動するという意味です。(カレントフォルダの移動)

今回のケースですと、バッチファイルと同じフォルダにあるmsuファイルを全てインストールする形になります。

おまけ

以上で、msuファイルを一括でインストールするところまでになります。
この方法であれば、必要な更新プログラムを一つのフォルダにまとめてから、上記のバッチファイルを同じフォルダに放り込んで実行すれば、あとは待つだけで終わりになります。

小技として、Dirは英数字の若い順でリスト化します。
そのため、実行したい番号をmsuファイルにつけることで、インストール順序をコントロールできます。 前提KBがある場合等にリネームにて対応するとよいでしょう。

例)

Windows6.0-KB934307-x86.msu → 1.Windows6.0-KB934307-x86.msu

また、同じような更新ファイルで、Office用のKBにexeファイルで配布されるものがあります。
こちらも同様に*.msuの部分を*.exeに書き換えれば同様に動作させることができます。

例)

for /f %%a in ('dir /b *.msu') do (
echo %%a インストール中
call %%a /quiet /norestart
)

   ↓

for /f %%a in ('dir /b *.exe') do (
echo %%a インストール中
call %%a /quiet /norestart
)

自分はよくクリーンインストールをするのですが、この2パターンのKBインストールが面倒だと感じているのでこのバッチをよく使います。

なにかのお役に立てれば幸いです。

コメント

  1. […] 【Bat】複数のmsuをインストールするバッチの作り方今回はWindowsの更新プロ… […]

Translate »
タイトルとURLをコピーしました