Windows

Windows 多言語カスタムイメージ作成手順

More than 1 year has passed since last update.

この記事は、以下の要件を満たすWindowsのインストーラーを作成する手順のメモです。


  • セットアップ中にインストールする言語を選択できる (多言語の Windows イメージ)

  • 最新のWindows Updateが適用されている

  • そのほか必要なアプリのインストールや設定が済んでいる

PCを使っていると定期的に大掃除(クリーンインストール)をしたくなるものです。

必要なツールとパッチが全部入った最強のインストーラーを作成し、Windowsのインストールを効率化しましょう!!


はじめに

MicrosoftはPCメーカーや大規模展開するユーザーのために、環境を複製する手順を公開しています。

DISM1.png


  1. マスターインストール

    Windowsの(A)オリジナルインストールディスクを使用して(B)マスターマシンをセットアップします。

  2. Windows Update・アプリのインストール

    Windows Update、必要なアプリのインストール、初期設定を行います。

  3. Windowsイメージのキャプチャー

    (B)マスターマシンの環境を(C)マスターWindowsイメージファイルに保存します。

  4. ディスクイメージ作成

    (C)マスターWindowsイメージファイルを含んだ (D)カスタムインストールディスクのイメージ(ISOファイル)を作成します。

  5. インストールメディア作成

    (D)カスタムインストールディスクの内容をUSBストレージにコピーして(E)カスタムインストールメディアを作成します。

  6. 展開

    (E)カスタムインストールメディアからWindowsをインストールし、(B)マスターマシンのクローンである(F)複製マシンを作成します。

展開方法として、このほかにWindowsイメージから直接展開する方法、ネットワークから展開する方法などがありますが、この記事では扱いません。


参考リンク


用語


  • OOBE(Out-Of-Box-Experience)

    PCを開封して初めて起動したときに起動するセットアップウィザード。

    oobe.png

  • 特殊化 (Specialize)

    マシン固有の設定を行う段階。

    specialize.png

  • 一般化 (Generalize)

    特殊化で行った設定をリセットすること。

  • Sysprep (SYStem PREPare)

    OOBEで行った設定をリセットするツール(一般化もできる)。

  • 監査モード (Audit mode)

    OOBE中にCtrl+Shift+F3を押すか、Sysprepのオプションで入ることができる特殊なモード。監査モード中はAdministratorで自動ログインするので、余計なユーザーを作らなくて済む。

  • DISM (Deployment Image Servicing and Management)

    Windowsイメージを操作するコマンドラインツール




準備

後で必要となるWindows ADKをインストールしておきます。

ADKはWindowsのバージョンごとに分かれています。インストーラーを作りたいWindows用のADKをすべてインストールする必要があります。

また、インストーラーを作るWindowsの、元となるインストーラー(DVDまたはisoイメージファイル)が必要です。


マスターイメージの準備


マスターマシンのセットアップ

マスターマシンは物理マシンでも仮想マシンでも構いませんが、やり直しになると非常に時間がかかるので、Hyper-V仮想マシンでチェックポイントを付けながら作業するのがおすすめです。

手順


  1. Windowsインストール

    OOBEが始まったらCtrl+Shift+F3で監査モードへ。
    監査モードを使わないなら、ダミーユーザーでセットアップしてからAdministratorを有効にして作業すると良い。

  2. .Net Framework 3.5の有効化 (Windows 8 以降) (省略可)

    (注)言語パックを追加していると失敗することがある

  3. 言語パックインストール

    [コントロール パネル]-[時計、言語、および地域]-[言語]-[言語の追加]

    追加した言語の[言語のオプション]から[言語パックをダウンロードしてインストールします]をクリック

  4. Windows Update

    (注)言語パックをインストールする前にアップデートしても、一部のパッチはやり直しになる

  5. プリインストールするアプリのインストール

  6. デスクトップ等の初期設定


基本的に監査モードで準備すれば問題ないはずですが、Windows 8.1 With Updateで試すとなぜかWindows Updateが終わりませんでした。


Windows 7の言語パックについて

Windows 7はライセンス上、言語パックをインストールできるのはUltimateとEnterpriseのみです。他のエディションではコントロールパネルから言語を追加できません。

マスターマシンの作成用途では、DISMコマンドを使うことで制約を無視して言語パックを追加できます。詳しくは以下のページを参照してください。

Windows 7の言語パックはMSDNで配信されています。


自動応答ファイルの作成

自動応答ファイルとは、Windowsのセットアップ(主にOOBE)で設定する値を書いたXMLファイルです。Sysprep実行時に渡すことでインストールを自動化できる。


ライセンス認証猶予期間

一般化するとライセンス認証猶予期間がリセットされますが、これには回数の上限があります。

Microsoft-Windows-Security-SPPSkipRearm1 にすることでリセットしないで一般化ができます。

こうして作成したインストーラーを使用すると、インストール直後に「このWindowsのコピーは正規品ではありません」と表示されますが、落ち着いてプロダクトキーを入れ直せば問題ありません。

Windows 7はリセット回数の上限が4なので、イメージを更新していく予定なら設定したほうがいいでしょう。

Windows 8以降は1000回なので設定しなくても問題ありません。


よく使う設定

パス
コンポーネント
キー

説明

generalize
Microsoft-Windows-Security-SPP
SkipRearm
1
ライセンス認証猶予期間をリセットしない

specialize
Microsoft-Windows-Shell-Setup
ProductKey
(プロダクトキー)
プロダクトキー

specialize
Microsoft-Windows-Shell-Setup
CopyProfile
true
Administratorのユーザー設定をデフォルトの設定とする

specialize
Microsoft-Windows-Shell-Setup
TimeZone
Tokyo Standard Time
タイムゾーンを日本にする

oobeSystem
Microsoft-Windows-International-Core
InputLocale
0411:E0010411
入力ロケールを日本語/MS-IMEにする

oobeSystem
Microsoft-Windows-International-Core
SystemLocale
ja-JP
システムロケールを日本語にする

oobeSystem
Microsoft-Windows-International-Core
UILanguage
ja-JP
UI言語を日本語にする

oobeSystem
Microsoft-Windows-International-Core
UserLocale
ja-JP
ユーザーロケールを日本語にする

oobeSystem
Microsoft-Windows-Shell-Setup
OOBE/HideEULAPage
true
利用規約のページをスキップする

oobeSystem
Microsoft-Windows-Shell-Setup
OOBE/HideWirelessSetupInOOBE
true
Wi-fi設定のページをスキップする

oobeSystem
Microsoft-Windows-Shell-Setup
OOBE/HideOnlineAccountScreens
true
Microsoft アカウント設定のページをスキップする

oobeSystem
Microsoft-Windows-Shell-Setup
OOBE/NetworkLocation
Home/Work/Other
ネットワークロケーションの設定(ホーム/社内/パブリック)

oobeSystem
Microsoft-Windows-Shell-Setup
OOBE/ProtectYourPC
1
自動更新を推奨設定にする


  • 多言語インストーラーではMicrosoft-Windows-International-Coreの設定をしない(言語が選べなくなるので)


一般化

Sysprep(C:\Windows\System32\Sysprep\sysprep.exe)を実行して一般化します。

image


Windows 10 の注意点

Windows 10 (version 1511)以降、ストアアプリが原因でSysprepが失敗するようになっています。


Windows 10 バージョン 1511 から、Microsoft コンシューマー エクスペリエンスという機能が追加されました。

この機能は、ユーザーに Windows ストア経由 (インターネット接続が必要) にて、おすすめのアプリがいくつか自動でインストールされる機能です。

これらアプリが自動インストールされた状態で Sysprep を実行した場合、Sysprep の処理が失敗いたします。

これは Windows 10 の環境において、プロビジョニングされていないアプリがユーザーにインストールされている場合、Sysprep の実施が失敗するという制限事項に起因しています。


上記の回答ではポリシーの設定によりインストール自体を止める方法が紹介されていますが、入ってしまった場合はPowerShellで原因となるアプリを個別に削除するとSysprepできることを確認しています。


UWPの削除

Get-AppxPackage | Where PackageFullName -match "MicrosoftSolitaireCollection" | Remove-AppxPackage


原因となるアプリはその時々で違うと思われるので、Sysprepのエラーログ(C:\Windows\System32\Sysprep\Panther\setuperr.log)を見ながら成功するまで削除を繰り返します。


ストアアプリ一般の注意点

上記以外のWindows 8、8.1、10でも、プリインストールされているストアアプリを更新するとWindows 10と同様の問題が起きることを確認しています。

対処方法は同じです。


テスト

Unattend.xmlに間違いがあるとセットアップできず、初めからやり直しになります。

仮想マシンで作業している場合はテストしましょう。


  • sysprep前後にスナップショットを取ります

  • sysprep後に起動してOOBEを最後まで実行できるか試します


    • 成功したらsysprep後に戻します

    • 失敗したらsysprep前に戻してUnattend.xmlを修正します



sysprep後に起動すると特殊化されるので起動してはいけません。もし起動してしまったら、セットアップが終わるのを待ってもう一度sysprepを実行します。


イメージのキャプチャー

DISMを使用してイメージをキャプチャーします。仮想HDDはマウントしておきます。

チェックポイントを残したままマウントすると仮想HDDが壊れるので注意してください。

# Mドライブにマウントし、`D:\install.wim`にキャプチャーする場合

New-WindowsImage -CapturePath "M:\" -ImagePath "D:\install.wim" -Name "Windows 8.1 Pro (x64) (ja-JP)" -Description "Windows 8.1 Pro"

Descriptionの値は以下のものを使用します。


  • デスクトップOS


    • Windows 7 PROFESSIONAL

    • Windows 8.1 Pro

    • Windows 10 Pro



  • サーバーOS


    • Windows Longhorn SERVERSTANDARD

    • Windows Server 2008 R2 SERVERSTANDARD

    • Windows Server 2012 SERVERSTANDARD

    • Windows Server 2012 R2 SERVERSTANDARD




インストーラーの作成


インストーラーのコピー

元となるWindowsインストーラー(DVD)の中身をすべてコピーします。

以下、コピー先をD:\distとします。


マスターイメージのコピー

DISMでキャプチャーしたイメージをD:\dist\sources\install.wimへ上書きします。


32ビット/64ビットの混在

複数のイメージをinstall.wim内に格納すると、その中から1つ選んでインストールすることができます。


  • 32ビット/64ビットの混在が可能です(32ビット版のインストーラーを使用する必要があります)。

  • インストーラーと異なるバージョンのWindowsは、格納しても選べません。

複数イメージを格納するには、Export-WindowsImageコマンドレットでイメージを追加します。

Export-WindowsImage -SourceImagePath Windows8.1_x86.wim -SourceIndex 1 -DestinationImagePath Windows8.1.wim

複数イメージが格納されたwimファイルを使用する場合、Descriptionが正しく設定されている必要があります。


Windows PE言語パックインストール

Windows PE上で動作するインストーラーで言語を選択するには、Windows PEにマスターイメージと同じ言語を追加しておく必要があります。

Windows PEの言語パックはWindows ADKに付属しています。

作成したマスターイメージとWindows PEのイメージ(boot.wimのインデックス2)をそれぞれマウントします。マウント先をD:\mount\bootD:\mount\windowsとします。

Mount-WindowsImage -ImagePath "D:\dist\sources\boot.wim" -Path "D:\mount\boot" -Index 2

Mount-WindowsImage -ImagePath "D:\dist\sources\install.wim" -Path "D:\mount\windows" -Index 1

Add-WindowsPackageコマンドレットで言語パックを追加します1

Add-WindowsPackage -Path "D:\mount\boot" -PackagePath "C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\lp.cab"

Add-WindowsPackage -Path "D:\mount\boot" -PackagePath "C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Setup_en-us.cab"

lang.iniを生成し、Windows PE イメージにコピーします。

dism /image:"D:\mount\windows" /Gen-Langini /distribution:"D:\dist"

cp "D:\dist\sources\lang.ini" "D:\mount\boot\sources\lang.ini"

マウント解除します。

Dismount-WindowsImage -Path "D:\mount\boot" -Save

Dismount-WindowsImage -Path "D:\mount\windows" -Discard


ISOイメージ作成

コマンドラインツールoscdimg.exeを使います。実行ファイルは C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimgにあります1 (パスは通っていません)。

oscdimg.exe -u1 -m -o -bD:\dist\boot\etfsboot.com -lWIN8MULTI D:\dist D:\iso\win8multi.iso

-lはボリュームラベルです。


ブータブルUSBメモリの作成

おそらくDVDには収まらないので、インストールにはUSBメモリを使用します。

作成には何を使っても構いませんが、Rufusが使いやすかったです。

USBメモリの代わりに、ZALMAN ZM-VE350等の仮想ドライブ機能を持つHDDを使用することもできます。


イメージの更新

1年ほど経つとWindowsや各種ソフトのアップデートが溜まってメリットが薄れてくるので、イメージを更新します。


  1. 作成したインストーラーでインストール

  2. Windows Updateを最新になるまで適用

  3. Sysprepを実行

    前回実行時のUnattend.xmlが残っているので、そのまま使います

  4. イメージをキャプチャーしてinstall.wimを差し替え

  5. ISOイメージ、ブータブルUSBメモリ作成


Windows 7の注意点

言語を追加できないエディションでは、多言語のインストーラーを使用しても、監査モードにしない限りインストール時に選んだ言語以外は削除されます。

OOBEを完全に自動化するとOOBEから監査モードに入れません。

その場合はインストール後すぐにSysprepを実行して監査モードに移行してください。





  1. Windows 8.1以外のイメージを作成しているときは8.1を適宜読み替えてください