Windows オフラインアップデート for ローカル仮想マシーン

各種作業環境として立ち上げているローカルPC上の仮想マシン（VM）をインターネットに接続せずに、Windows Updateを行いたく調べたら、WSUS Offline Updateというものがあったので、利用時の**メモ**です。
「★ここがポイント★」以外は特に悩むところは無いです。

# 取得/インストール
* http://download.wsusoffline.net/
* Most recent version の Version 00.0 をクリック
* wsusoffline000.zip を解凍し、任意の場所（ここでは、C:\）へ移動  
   ※ C:\Program Files (x86) へ展開すると実行時にエラーとなる 
* C:\wsusoffline\UpdateGenerator.exe  
   を実行
* Proxy を設定（社内利用時など）
* 日本語をサポート対象に追加    **★ここがポイント★**
 * コマンドプロンプトで以下を実行
 
    ```Console
>cd C:\wsusoffline\cmd
>AddCustomLanguageSupport jpn
Adding support for jpn to .NET custom URL files...
Adding support for jpn to IEx custom URL files...
Adding support for jpn to MSSE custom URL files...
```

# 更新ファイル取得
* C:\wsusoffline\UpdateGenerator.exe  
  を実行
* 対象OS：Windows7 32/64bit、Windows8.1 64bit  
  セキュリティソフト：（Windows7）Microsoft Security Essentials  
  　　　　　　　　　　（Windows8.1）Windows Defender  
  のため、以下の設定
 * Windows タブ
     * Windows 7 / Server 2008 …  
       ☑ x86 Global (multilingual updates)　　　　☑ x64 Global (multilingual updates)  
     * Windows 8.1 / Server 2012 R2 …  
       ☐ x86 Global (multilingual updates)　　　　☑ x64 Global (multilingual updates)
 * Options  
   ☑ Verify …　　　　　　　　　　　　　　　☑ Include Service Packs  
   ☑ Include C++ Runtime Libraries and .NET Frameworks　　☐ Use 'security only …  
   ☑ Include Microsoft Security Essentials　　☑ Include Microsoft Defender …  
 * Create ISO image(s)  
   ☐ per selected product and language 　　　☐  per selected language, 'x86…'(desktop only)
* Start　⇒コマンドプロンプト起動  
※ WSUSOfflineUpdate自体に更新があればここで更新を促される
* コマンドプロンプトを閉じると、以下を表示するか聞かれる  
  C:\wsusoffline\log\download.log
* Exit

※ wsusoffline の容量が10GB超えます！

# 仮想マシンでのWindows Update
* VMWare Workstation 14 Player の場合
    * Player->管理->仮想マシンの設定
    * オプション->共有フォルダ
    * ◎常に有効  
      　または  
      ◎次回のパワーオフまたはサスペンドまで有効  
      ☑ Windows ゲストのネットワーク …  
    * 追加
    * ホストパス：C:\wsusoffline\client  
      名前：wsusoffline
    * 属性  
      ☑ この共有を有効化  
      ☑ 読取り専用
* Z:\wsusoffline\UpdateInstaller.exe　　※ドライブは環境によって変わります  
  を実行
* （Windows7の場合）  
 　以下が表示される    ⇒ OK  
 　<font color="gray">On this system, the most reent version of Internet Explorer(IE11) will be automatically installed, when you start the updating process.   
 　このシステムでは、アップデートプロセスを開始すると、Internet Explorer（IE11）の最新バージョンが自動的にインストールされます。</font>
* Updating<br>
    * Installationを環境に合わせて設定する<br>
☐ Update C++ Runtime Libraries　　　☐ install Microsoft Silverlight<br>
☐ install .NET Framework 3.5  　　　　☐ install PowerShell 2.0<br>
☐ install .NET Framework 4.7.2   　　　☐ install Management Framework 5.1 <br>
☐ install Microsoft Security Essentials　☐ Update Remote Desktop Clinet<br> 
    * Control<br>
☑ Verify installation packages　　　　　☐ Automatic reboot and recall<br>
☐ Shut down on completion　　　　　　☑ Show log file
* （MSSEをチェックした場合）<br>
  以下が表示される    ⇒ はい<br>
  <font color="gray">The installation of Microsoft Security Essentials performs amandatory 'Windows Genuine Advantage' (WGA) check. Do you wish to proceed?<br>
  Microsoft Security Essentialsのインストールでは、Windows Genuine Advantage（WGA）チェックが実行されます。 続行しますか？<br>
  ⇒ Windowsが海賊版ではないかをチェックするという意味。</font>
* （Automatic reboot and recallをチェックした場合）<br>
   以下が表示される    ⇒ はい<br>
<font color="gray">The option 'Automatic reboot and recall' temporarily disables the User Account Control (UAC), if required. Do you wish to proceed?<br>
[自動再起動と再呼び出し]オプションは、必要に応じて一時的にユーザーアカウント制御（UAC）を無効にします。 続行しますか？</font>
* Start
* （Installation successful. Please reboot your system now.　と表示されている場合）
     * コマンドプロンプトで Exit
     * 再起動
* （Installation successful. Please reboot your system now and recall Update afterwards.　と表示されている場合）
     * コマンドプロンプトで Exit
     * 再起動
     * UpdateInstaller.exe を再実行（先頭へ戻る）
* （Listing ids of missing updates (please be patient, this will take a while)...<br>
　あるいは、Installing ..\xxxxx…　と表示されて10分以上変化がない場合）    **★ここがポイント★**
     * Ctrl+C<br>
       ※これで処理が進む場合もある
     * バッチ ジョブを終了しますか (Y/N)? n
* Windows Update -> インストールされた更新プログラムを表示 でUpdateが追加されていることを確認
* ※以下にログが追納されている。<br>
　C:\Windows\wsusofflineupdate.txt


# 参考
1. [Windows Update をオフラインで実行](http://mahoro-ba.net/e1971.html)
2. [WSUS Offline Updateを使ったWindows7の更新](https://blog.goo.ne.jp/psyna_hone/e/f5da928d769272d75dd18b09b2805edb)  
  日本語 Internet Explorer 11 について
3. [forums.wsusoffline.net："File hash does not match stored value"](http://forums.wsusoffline.net/viewtopic.php?f=2&t=3025)
4. [forums.wsusoffline.net：Can't install IE11 on Win 7](http://forums.wsusoffline.net/viewtopic.php?f=6&t=5513)


# 備考（闘いの記録）
* 参考1.を見て、実施（当初は.isoを作ってた）。  
  ⇒ 以下のメッセージが出て、IE11がインストールされていないことに気付く。  
  　　「Warning: File ..\w61-x64\glb\IE11-Windows6.1-x64-ja-jp*.exe not found.」
* 参考2.を見て、実施。  
  <font color="gray">IE11がインストールされたと思い込んでいたが、実はインストールされておらず。</font>
* MSSEをインストール対象にしたかったが以下のメッセージが出て、インストールされない。  
  「Warning: Microsoft Security Essentials installation file (..\msse\x64-glb\MSEInstall-x64-jpn.exe) not found.」  
  （警告：Microsoft Security Essentialsのインストールファイル（...\msse\x64-glb\MSEInstall-x64-jpn.exe）が見つかりません。）  
* 参考2.のIE11の追加をまねて、MSSEを追加。  
    * 日本語 Microsoft Security Essentialsのダウンロード
        * https://www.microsoft.com/ja-jp/download/details.aspx?id=5201
        * 32bit
            * ファイル名変更（MSEInstall.exe　→　MSEInstall-x86-jpn.exe）
            * 格納先：C:\wsusoffline\client\msse\x86-glb
        * 64bit
            * ファイル名変更（MSEInstall.exe　→　MSEInstall-x64-jpn.exe）
            * 格納先：C:\wsusoffline\client\msse\x64-glb

    ⇒ .iso作成が中断され、以下のメッセージが表示されるようになった。  

```Console
Verifying integrity of Microsoft Security Essentials files...
..\msse\x64-glb\MSEInstall-x64-jpn.exe: No match
..\msse\x86-glb\MSEInstall-x86-jpn.exe: No match
hashdeep64.exe: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 8
Files partially matched: 0
            Files moved: 0
        New files found: 2
  Known files not found: 0

ERROR: File integrity verification failure.
```

* .isoの作成を取りやめ(結果的にCドライブの容量圧迫も改善)、仮想マシンにて C:\wsusoffline\client を共有する方式に変更  
  ⇒ Windows Updateで以下のメッセージが出るようになった。  
  　 （C:\wsusoffline\client\md\hashes-w61-x64-glb.txt のHash値をチェックしている模様）

```Console
Installing Internet Explorer 11...
Verifying integrity of ..\w61-x64\glb\IE11-Windows6.1-x64-ja-jp.exe...
hashdeep64.exe: Unable to load any matching files.
Try `hashdeep64.exe -h` for more information.
ERROR: File hash does not match stored value (..\w61-x64\glb\IE11-Windows6.1-x64-ja-jp.exe).
```

* 参考3.を見たところ、C:\wsusoffline\client\md\に、Hash値を格納している模様。hashファイルの更新を実施。  
  ⇒ MSSEはインストールされるようになった。
    * hashファイルの更新
        * オリジナルファイルのバックアップ（更新日時付与）
            * C:\wsusoffline\client\md
            * hashes-msse.txt　→　hashes-msse_org-yyyymmdd.txt
            * hashes-w61-glb.txt　→　hashes-w61-glb_org-yyyymmdd.txt
            * hashes-w61-x64-glb.txt　→　hashes-w61-x64-glb_org-yyyymmdd.txt
        * 以下をコマンドプロンプトで実行  

```Console
>cd C:\wsusoffline\client\md
>..\bin\hashdeep64.exe -c md5,sha1,sha256 -l -r ..\msse > hashes-msse.txt
>..\bin\hashdeep64.exe -c md5,sha1,sha256 -l -r ..\w61\glb > hashes-w61-glb.txt
>..\bin\hashdeep64.exe -c md5,sha1,sha256 -l -r ..\w61-x64\glb > hashes-w61-x64-glb.txt
```

 　⇒ MSSEはインストールされるようになった。
 　　 しかし、IE11は以下のメッセージが出てインストールされない。

```Console
Info: Skipping update kb2841134 (Internet Explorer 11) due to matching black list entry
```

* 参考4.を見ると、  
    * .\client\exclude の配下がblack listの模様。除外すればインストール可能と思われる。
    * さらに、日本語がダウンロード対象外になる対策としては、  
      　...\cmd\AddCustomLanguageSupport 国コード（例：ita=イタリア語、ens=スペイン語、jpn=日本）   
      を実行すると対象になる模様。<br>
      ⇒ こちらを実施すれば、black listから除外しなくてもインストールされた。