元号対応用に作成した、Windows、Office、.NET Framework オフラインインストール手順をまとめています。
調査
以下の「.NET、Office、Windows」に関するページから調査
該当ダウンロードファイル調査のヒント
-
適用対象となる環境を確認する
- .NET Frameworkのバージョン(3.5 or 4.5.2 or 4.6以降)
- Officeのバージョン、サービスパックのバージョン
- 使用している製品(Wordなど)
- Windows のバージョン、サービスパックのバージョン、プラットフォーム(x86 or x64)
-
以下の順番で対象となるプログラムを確認する
- 最新のロールアップ(累積アップデート)
- 前提となる更新プログラム(KB)があるなら、そちらも確認する
- 例えば、最新の SSU(サービススタック更新プログラム)、などがある。
- 前提となる更新プログラム(KB)があるなら、そちらも確認する
- 最新のロールアップの後に出ている更新プログラム
- 前提となる更新プログラム(KB)があるなら、そちらも確認する
- 最新のロールアップ(累積アップデート)
媒体作成
ファイルダウンロード
.NET Framework、Windows
-
Microsoft Update Catalogからダウンロードする
- 拡張子がmsu
- KB番号を入力してダウンロード
- KB番号ごとにフォルダを作成して保存。フォルダ名、ファイル名は後述
Office
- 各更新の「更新プログラムのダウンロードおよびインストール方法」のリンクからダウンロード
- 拡張子がexe
- KB番号ごとにフォルダを作成して保存。フォルダ名、ファイル名は後述
保存(フォルダ分け)
フォルダ書式
<<NET or Office or Windows>>_<<西暦下2桁+月>>_<<KB番号>>
フォルダ例
NET_1903_kb4488669
ファイル書式
<<NET or Office or Windows>>_<<西暦下2桁+月>>_<<元のファイル名>>
ファイル例
NET_1903_ndp45-kb4488669-x86_7e600795492a759f2ad7889765690746e027b806.exe
スクリプトの作成
オフラインインストール用スクリプト
copyandupdate.bat
@echo off
cls
pause
xcopy "%~dp0\windows_update_patch" "c:\windows_update_patch" /s /e /i
cscript "c:\windows_update_patch\installallatonce.vbs
installallatonce.vbs
Set objShell=CreateObject("Shell.Application")
objShell.ShellExecute "cmd.exe", _
"""" & "/k c:\windows_update_patch\bat\install_updates.bat" & """", _
"", _
"runas", _
1
getwindowsupdatelist.bat
@echo off
rem ソフトウェア名をファイルに出力(DisplayNameで開始している行のみ、セキュリティの更新ソフトのみ
for /F "delims=" %%A IN ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") DO (
for /F "tokens=2,*" %%I in ('reg query %%A /s ^| findstr "\<DisplayName" ^| findstr "(KB"') do (
echo %%J
)
)
rem ソフトウェア名をファイルに出力(DisplayNameで開始している行のみ、セキュリティの更新ソフトのみ
for /F "delims=" %%A IN ("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall") DO (
for /F "tokens=2,*" %%I in ('reg query %%A /s ^| findstr "\<DisplayName" ^| findstr "(KB"') do (
echo %%J
)
)
install_updates.bat
@echo off
REM "install_updates.bat"
REM Note: Don't use a space in the following paths.
REM Note: If the other machine's OS is 32-bit, you must set "OS=86".
set PATCH_HOME=C:\windows_update_patch\
set PATCH_DIR=target\
set BAT_DIR=bat\
set MSU_KEYWORD=Windows6.1
set EXE_KEYWORD=
REM set OS=64
set OS=86
set INFO_LOG1=install_pc_info_pre.txt
set INFO_LOG2=install_pc_info_after.txt
set MSU_LOG=installed_msu_list.txt
set EXE_LOG=installed_exe_list.txt
set OTHER_LOG=installed_other_list.txt
set EVENT_LOG=installed_log.evtx
cd %PATCH_HOME%%PATCH_DIR%
echo Windows Updates are starting...
pause
echo %date% %time% > %PATCH_HOME%%INFO_LOG1%
echo インストール前 >> %PATCH_HOME%%INFO_LOG1%
systeminfo >> %PATCH_HOME%%INFO_LOG1%
call %PATCH_HOME%%BAT_DIR%getwindowsupdatelist.bat >> %PATCH_HOME%%INFO_LOG1%
echo %date% %time% >> %PATCH_HOME%%INFO_LOG1%
REM msu
echo %date% %time% > %PATCH_HOME%%MSU_LOG%
for /f "usebackq" %%I in (`dir /b /a-d /s *%MSU_KEYWORD%*-x%OS%*.msu`) do (
echo Installing "%%I".
echo %%I >> %PATCH_HOME%%MSU_LOG%
wusa %%I /quiet /norestart /log:%PATCH_HOME%%EVENT_LOG%
)
echo %date% %time% >> %PATCH_HOME%%MSU_LOG%
REM exe
echo %date% %time% > %PATCH_HOME%%EXE_LOG%
for /f "usebackq" %%I in (`dir /b /a-d /s *%EXE_KEYWORD%*-x%OS%*.exe`) do (
echo Installing "%%I".
echo %%I >> %PATCH_HOME%%EXE_LOG%
%%I /quiet /norestart /log:%PATCH_HOME%%EVENT_LOG%
)
echo %date% %time% >> %PATCH_HOME%%EXE_LOG%
del /f %PATCH_HOME%%EVENT_LOG%.dpx
echo %date% %time% > %PATCH_HOME%%INFO_LOG2%
echo インストール後 >> %PATCH_HOME%%INFO_LOG2%
systeminfo >> %PATCH_HOME%%INFO_LOG2%
call %PATCH_HOME%%BAT_DIR%getwindowsupdatelist.bat >> %PATCH_HOME%%INFO_LOG2%
echo %date% %time% >> %PATCH_HOME%%INFO_LOG2%
echo Windows Updates are done.
echo Reboot now!
shutdown /r /t 0
OSに合わせて、以下の部分を編集する
install_updates.bat
set MSU_KEYWORD=Windows6.1
set OS=86
ファイルの配置
- 以下に従いファイルを配置する
ISO
│copyandupdate.bat
└windows_update_patch
│installallatonce.vbs
└bat
│getwindowsupdatelist.bat
│install_updates.bat
└target
│ダウンロードしたファイル(msu, exe)
インストールテスト
テスト環境の準備
- 仮想環境で、調査したOS、Office、.NETで環境を構築する
- 事前にスナップショット(Hyper-Vならチェックポイント)を取る
インストール
- ISOフォルダを、ネットワーク、または媒体(ISOイメージでもよい)に配置する
- 可能なら、IPアドレスを設定する(アップデート後にIPアドレスの設定が消失することがある事象に対する確認のため)
- copyandupdate.batを実行する
レジストリの編集
- 必要に応じ、レジストリの編集を行う。ただし、令和の追加は、運用環境では動作保証外なので注意。令和の追加、パッチの中で追加されるべきもの。
参考にしたサイト
[tips][Windows] Windows Updateを一括で行う方法
https://casualdevelopers.com/tag/bat/