新元号対応 Windows、Office、.NET Framework オフラインインストール手順

元号対応用に作成した、Windows、Office、.NET Framework オフラインインストール手順をまとめています。


調査


以下の「.NET、Office、Windows」に関するページから調査


該当ダウンロードファイル調査のヒント



  1. 適用対象となる環境を確認する


    • .NET Frameworkのバージョン(3.5 or 4.5.2 or 4.6以降)

    • Officeのバージョン、サービスパックのバージョン


      • 使用している製品(Wordなど)



    • Windows のバージョン、サービスパックのバージョン、プラットフォーム(x86 or x64)




  2. 以下の順番で対象となるプログラムを確認する


    1. 最新のロールアップ(累積アップデート)


      • 前提となる更新プログラム(KB)があるなら、そちらも確認する


        • 例えば、最新の SSU(サービススタック更新プログラム)、などがある。





    2. 最新のロールアップの後に出ている更新プログラム


      • 前提となる更新プログラム(KB)があるなら、そちらも確認する






媒体作成


ファイルダウンロード


.NET Framework、Windows



  1. Microsoft Update Catalogからダウンロードする


    • 拡張子がmsu

    • KB番号を入力してダウンロード

    • KB番号ごとにフォルダを作成して保存。フォルダ名、ファイル名は後述




Office


  1. 各更新の「更新プログラムのダウンロードおよびインストール方法」のリンクからダウンロード


    • 拡張子が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


ファイルの配置


  1. 以下に従いファイルを配置する

ISO

│copyandupdate.bat
└windows_update_patch
 │installallatonce.vbs
 └bat
  │getwindowsupdatelist.bat
  │install_updates.bat
 └target
  │ダウンロードしたファイル(msu, exe)


インストールテスト


テスト環境の準備


  1. 仮想環境で、調査したOS、Office、.NETで環境を構築する

  2. 事前にスナップショット(Hyper-Vならチェックポイント)を取る


インストール


  1. ISOフォルダを、ネットワーク、または媒体(ISOイメージでもよい)に配置する

  2. 可能なら、IPアドレスを設定する(アップデート後にIPアドレスの設定が消失することがある事象に対する確認のため)

  3. copyandupdate.batを実行する


レジストリの編集


  1. 必要に応じ、レジストリの編集を行う。ただし、令和の追加は、運用環境では動作保証外なので注意。令和の追加、パッチの中で追加されるべきもの。


参考にしたサイト

[tips][Windows] Windows Updateを一括で行う方法

https://casualdevelopers.com/tag/bat/