【Windows10】Windows Updateの更新プログラムをオフラインでコマンドから手動でインストールする方法

目次

Windows Updateがエンドレスで終わらない

Windows7のサポート期限が2020/01/14までと迫っているので、社内のパソコンをWindows10 Enterprise 2016 LTSB (ビルド1607)に入れ替えを進めているのですが、OSインストール後のアップデートが全然終わりません。「更新ファイルの確認」や「ダウンロード」、再起動時の「更新ファイルの適用」のどれもがめちゃくちゃ遅いので困っています。 OSインストールからWindows Updateを最新まで更新するのに1台3日とかかかりました。

そこでサクッとコマンドでオフラインインストールするいい方法が見つかったのでメモ。

まずは更新ファイルをダウンロード

下準備として適用させたい更新ファイル(KB*******.msu)をWindows Updateカタログからダウンロードしてきてください。

Windows 10 バージョン 1607の更新ファイルの最新を確認する

ダウンロードすると言ってもどれをダウンロードすればいいかわからない場合、以下のページからとりあえず最新のKB番号の物をダウンロードしてみるといいかもしれません。事前に必要なサービス スタック更新プログラム(SSU)があればそれも合わせてダウンロードしてみてください。

ちなみにWindows 10 Enterprise 2019 LTSCの場合はWindows 10 Version 1809用の更新ファイルを探してください。

WUSAコマンドでインストール

コマンドでインストールする方法はいくつかありますが、一番シンプルなのはWUSA.exeでファイルを指定する方法です。しかし、これがうまくいかないことがありますので、その際は以下のDism.exePkgmgr.exeからインストールする方法を試してください。

wusa "c:\windows10.0-kb4486129-x64.msu" /passive /norestart

/passiveはGUIでインストール状況が見て分かるのですが、/quietに変更して無人応答にするとインストールが終わったのか、まだインストール中なのかわからないので、インストール中なのに終わったと思って再起動をしないように注意してください。/norestartを削除してインストール後に再起動をするようにしておけばインストールが完了したかどうかわかりやすいです。その場合は/quietと合わせて再起動するコマンドスイッチの/warmrestart/promtrestart/forcerestartのいずれかを指定します。

DISMコマンドでインストール実行

例えば、「x64 用 Windows 10 Version 1607 および Server 2016 の、Microsoft .NET Framework 4.8 (KB4486129)」をCドライブ直下windows10.0-kb4486129-x64.msuと保存した場合、インストールするコマンドは以下のようになります。PowerShellまたはコマンドプロンプト(管理者)から実行できます。

dism /online /add-package /PackagePath:"c:\windows10.0-kb4486129-x64.msu" /NoRestart

/NoRestartは再起動を必要とする更新プログラムをインストール際に自動的に再起動させないようにするためのオプションスイッチです。不要な場合は削除してください。

うまくいかないときはEXPANDコマンドで解凍してからインストール

更新プログラムによってはDISMコマンドで.MSUファイルを指定するとエラーになるものがあります。その際はEXAPNDコマンドで.MSUファイルを解凍して出てきたキャビネットファイル(.CAB)を使ってインストールするとうまくいきます。

expand /f:* "c:\windows10.0-kb4486129-x64.msu" "c:\"
dism /online /add-package /PackagePath:"c:\windows10.0-kb4486129-x64.cab" /NoRestart

インストールが終わると再起動するかどうかの確認メッセージが表示をさせたい場合、/NoRestartを削除してください。

pkgmgr.exeを使った方法もある

以下の方法でもインストールできます。Dismと違ってPkgmgrの場合は.XMLファイルを指定します。この.XML ファイルも.CAB同様に.MSUファイルを解凍した中にあります。

expand /f:* "c:\windows10.0-kb4486129-x64.msu" "c:\"
pkgmgr.exe /n:"c:\windows10.0-kb4486129-x64.xml" /quiet /norestart

/norestartがあるとインストールが終わったかわからないので、削除して/quietだけで実行すると再起動が必要な更新プログラムの場合、インストール完了後は自動的に再起動されます。

複数の更新プログラム(.MSU)をまとめてインストールするバッチファイル

メモ帳に貼り付け、All_KB_Install.batなど適当に名前を保存します。このバッチファイル以下の階層に保存したすべての.MSUファイル(サブフォルダも含む)を順番に連続でインストールします。
@echo off

setlocal enabledelayedexpansion

:: 開始確認
set /p YORN="更新ファイルのインストールを開始します。 (y/n):"
if not '%YORN%'=='y' (
	echo "処理を中止します。"
	GOTO END
)

:: Windows Update関連のサービスをSTOP
net stop usosvc
net stop dosvc
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver

if %PROCESSOR_ARCHITECTURE% equ x86 (
	set BIT=x86
) else (
	set BIT=x64
)

:: 解凍先フォルダ作成
set TEMP=%~dp0ExtractKB
md "%TEMP%"

:: .MSUファイルを解凍
for /r "%~dp0" %%i in (*!BIT!.msu) do (
	set KBFILE=%%i
	echo.
	expand /f:* "!KBFILE!" "%TEMP%"
)

:: .CABファイルからインストール
for /r "%~dp0" %%j in (*!BIT!.cab) do (
	set CABFILE=%%j
	echo.	
	dism /online /add-package /PackagePath:"!CABFILE!" /NoRestart
)

:: 解凍先フォルダ削除
rd /s /q "%TEMP%"

:: Windows Update関連のサービスをSTART
net start msiserver
net start bits
net start cryptSvc
net start wuauserv
net start dosvc
net start usosvc

echo.
echo インストール終了しました。10秒後に再起動します。
echo.

shutdown.exe /r /t 10

:END
exit

その他参考サイト

Windows10の「Windows Updateが遅い・終わらない」問題で、今回のDISMコマンドを使用する参考例や、それ以外の方法の参考ページをメモ。

前へ

Windows10に.NET Framework 3.5をオフラインでサクッとインストール(有効化)する方法

次へ

Windows 10 Enterprise 2016 LTSB インストール直後に入れる更新プログラムの候補