以前、Windows 8 / Windows Server 2012 の展開イメージに .NET Framework 3.5 を含める という投稿をしました。
この投稿は、ゲスト OS として展開するためのイメージをオンラインで編集することを想定していたため、以下のようなシナリオではそのまま使うことができませんでした。
- WDS (Windows 展開サービス) で OS のインストールメディアの install.wim を使用して OS を展開
このシナリオでも利用できるようにしてみたいと思います。
WDS でインストールメディアの install.wim を使用して OS の展開をする場合、OS のカスタマイズをしていない状態の wim ファイルを用いるため、大半のカスタマイズは応答ファイルで実施するかと思います。
役割と機能の追加については、Microsoft-Windows-ServerCore-Features でパッケージを追加することで対応できると思いますが、Install.wim 内の各イメージで .NET Framework 3.5 は機能のイメージが含まれていない状態 (ペイロードの削除によって無効) になっていますので、インストールするためには PrimarySourcePath で代替ソースパスを指定するかインターネットに接続された状態の必要があるかと思います。
# メディアの [sourcessxs] 配下のファイルをローカルまたは共有フォルダにコピーして、[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesServicing] の [LocalSourcePath] に保存場所を指定するという方法もありますね。
WDS での展開は大量の展開を無人で実施することを目的としているため、代替ソースパスとしてインストールメディアのパスを指定してしまうと展開時に OS のインストールメディアをマウントしていることが前提となってしまいます。
# 環境によって DVD ドライブのパスが変わるという可能性もあるかと。
Install.wim 内にソースファイルを含めて、それを代替ソースパスとして指定することもできると思いますがこの場合は、展開用イメージのサイズが大きくなります。
# 応答ファイル内でファイルを削除する処理を入れておけば展開後は消えるはずですが。
インストールメディアの install.wim に .NET Framework 3.5 を追加するには、オフラインのイメージ編集で機能を追加するのが簡単かと思います。
具体的には以下のようなコマンドになります。
Windows Server 2012 のメディアでは、
- Windows Server 2012 Standard Edition Server Core
- Windows Server 2012 Standard Edition
- Windows Server 2012 Datacenter Edition Server Core
- Windows Server 2012 Datacenter Edition
の順番にインデックスが設定されていますので、必要に応じて各インデックスのイメージについて作業をする必要があります。
今回は WIndows Server 2012 Standard Edition (GUI あり) を対象に作業をしています。
mkdir c:mount dism /mount-wim /wimfile:E:Win2012install.wim /index:2 /mountdir:c:mount dism /image:c:mount /enable-feature /featurename:NetFx3 /All /Source:D:sourcessxs /LimitAccess |
DISMはオンライン (/online) だけでなく、WIM ファイルをマウントしてオフラインでも機能の追加をすることができます。この状態で編集をすると .NET Framework 3.5 は [無効の保留中 (Disable Pending)] になります。
保留中になった場合は、イメージを一度展開し、起動する必要があるのですが、インストールメディアの WIM を展開する場合はインストールをするしかないので、保留中はそのままにしておき WDS で展開がされたタイミングで保留中を解除します。
# 保留のための設定は不要で、展開後は保留中が自動で解除されます。
デフォルトでは、ペイロードの削除となっていますが、WIM をオフラインで編集して、.NET Framework 3.5 のコンポーネントのソースファイルを追加し、向こうの状態となっていますので、代替ソースパスの設定やインターネットに接続がされていない状態でも、機能を追加することができます。
DISM でペイロードの削除の状態から、コンポーネントのインストーラーが含まれている状態に一発で持っていけると楽なんですけどね…。