制作 Windows 应答文件
2024-05-26 08:57:23

在 Windows 安装过程中,有很多设置页面需要人工输入,为了实现自动化安装,微软提供了 应答文件 机制。有了应答文件就可以全程无人值守安装。


本篇教程以 cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso 为样本,并以无人值守安装为目的制作最小的应答文件。

安装 Windows ADK

制作应答文件需要用到 Windows ADK 工具包中的 Windows 系统映像管理器(SIM) 。
直链:Windows ADK 10.1.25398.1


仅安装部署工具即可,其中包含了Windows 系统映像管理器。软件操作很简单,这里不展开说了,网上有很多教程。

配置阶段

Windows 在整个安装过程中分为不同的阶段,依次为:

  1. windowsPE
  2. offlineServicing
  3. generalize
  4. specialize
  5. auditSystem
  6. auditUser
  7. oobeSystem


绝大多数时候也就只用到windowsPEspecializeoobeSystem这三个配置阶段。

windowsPE

这是 Windows 安装过程的第一个阶段。主要用于启动安装程序,对硬盘格式化等操作。

跳过语言设置

为了跳过这个页面,我们在该阶段添加 Microsoft-Windows-International-Core-WinPE 组件。
设置 InputLocaleSystemLocaleUILanguageUserLocale 这四个值为zh-CN,表示用简体中文。

跳过许可条款

接着便是软件许可条款页面。

为了跳过这个页面,我们在该阶段添加 Microsoft-Windows-Setup 组件。
UserData/AcceptEula 设置为true

选择系统

如果镜像文件中包含多个系统版本的话就会弹出这个页面。

为了跳过这个页面,我们在该阶段添加 Microsoft-Windows-Setup 组件。
ImageInstall/OSImage/InstallFrom/MetaData 键值设置为/IMAGE/INDEX1
其中1表示安装列表中第一个操作系统,在这里也就是Windows 7 简易版

安装位置

选择系统安装在哪个硬盘的哪个分区上。
考虑到每个用户的硬件环境不同,需求不同,建议交给用户自己选择。否则容易对硬盘格式化造成硬盘数据丢失。

硬盘的无人值守设置参考 InstallTo 配置。


至此 windowsPE 阶段就算配置完成了,系统开始安装:

安装完成后会自动重启电脑,进入下一个阶段。

oobeSystem

重启后来到的第一个设置页面,要求我们创建用户。


输入产品密钥

更新设置

时间设置

网络设置

以上这些设置可以统一用 SkipMachineOOBE 属性跳过
添加 Microsoft-Windows-Shell-Setup 组件,将 OOBE/SkipMachineOOBE 设置为true

注意,微软并不推荐使用SkipMachineOOBE,但是不用的话则会强制要求用户创建一个新用户才能进行下一步。
不过对于用户来说可以绕过:Windows系统安装后,跳过创建用户的向导,直接使用administrator账户


事情还没完,因为前面跳过了创建用户的操作,Windows 内置用户Administrator又默认是禁用的,导致无法顺利进入桌面。

所以要在应答文件中设置启用Administrator用户并自动登录。
添加 Microsoft-Windows-Shell-Setup 组件。
AutoLogon/Enabled 设置为true

AutoLogon/Username 设置为Administrator

使用应答文件

经过上面的分析,最终得到一个最小的应答文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>zh-CN</InputLocale>
<SystemLocale>zh-CN</SystemLocale>
<UILanguage>zh-CN</UILanguage>
<UserLocale>zh-CN</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserData>
<AcceptEula>true</AcceptEula>
</UserData>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<SkipMachineOOBE>true</SkipMachineOOBE>
</OOBE>
<AutoLogon>
<Enabled>true</Enabled>
<Username>Administrator</Username>
</AutoLogon>
</component>
</settings>
</unattend>

使用这个应答文件仅会出现两次交互,选择系统版本安装磁盘位置
最后将这个 xml 文件命名为autounattend.xml,放到 ISO 根目录下即可。

从第三方 WinPE 安装

实际上,如今用微软官方 ISO 去安装的方式已经不多见了。主流的方式是用第三方 PE 系统,因为有桌面,有丰富的工具,比如 微PE工具箱 之类的系统。
从第三方 PE 去安装意味着应答文件中 windowsPE 阶段的设置都是无意义的。
所以从第三方 PE 安装的话,则最小应答文件是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<SkipMachineOOBE>true</SkipMachineOOBE>
</OOBE>
<AutoLogon>
<Enabled>true</Enabled>
<Username>Administrator</Username>
</AutoLogon>
</component>
</settings>
</unattend>

注意这里在 specialize 阶段添加了 Microsoft-Windows-Security-SPP-UX 组件。
属性 SkipAutoActivation 值设置为true,表示跳过激活,否则安装会失败。


使用方法:将应答文件放在 C:\Windows\Panther\unattend.xml即可。
或者用 WinNTSetup 之类的工具安装,可以指定应答文件。

其他

应答文件与系统版本是有关的,如果应答文件中存在不支持的参数,映像管理工具会警告:

如果试图用错误的应答文件安装会导致失败:

相关阅读

使用Windows Sysprep来封装系统
Windows7 无人值守技术
应答文件概述
自动化 Windows 安装
有关创建应答文件的最佳做法
应答文件搜索顺序