创建包含自定义驱动的Windows安装介质:MediaCreationTool.bat与$OEM$文件夹完全指南
引言:告别驱动缺失的安装噩梦
你是否曾经历过Windows安装完成后却发现关键硬件无法工作的窘境?根据微软官方文档统计,约34%的系统部署失败源于驱动程序问题。对于企业IT管理员、系统集成商或技术爱好者而言,每次手动安装驱动不仅耗时(平均需30-60分钟/设备),还可能因驱动版本不匹配导致兼容性问题。本文将详细介绍如何利用MediaCreationTool.bat与$OEM$文件夹技术,构建集成自定义驱动的Windows安装介质,实现"插入即安装,重启即使用"的无缝体验。
读完本文后,你将掌握:
- $OEM$文件夹的文件结构与工作原理
- MediaCreationTool.bat的高级配置技巧
- 驱动集成的完整步骤(含单驱动与驱动包处理)
- 自动化安装配置(AutoUnattend.xml)
- 多版本Windows驱动分离方案
- 常见问题排查与验证方法
技术背景:Windows部署自动化的核心组件
MediaCreationTool.bat概述
MediaCreationTool.bat是一款功能强大的Windows安装介质创建脚本,支持从Windows 10 1507到Windows 11 23H2的所有版本。与微软官方工具相比,它提供了更多高级功能:
:: 核心功能示例(来自MediaCreationTool.bat源码)
set OPTIONS=%OPTIONS% /Compat IgnoreWarning /MigrateDrivers All
set OPTIONS=%OPTIONS% /ResizeRecoveryPartition Disable /ShowOOBE None
该脚本通过修改Windows安装程序(setup.exe)的参数,实现了驱动自动迁移、恢复分区调整等高级功能。特别值得注意的是,它原生支持$ISO$目录内容的自动集成,这为驱动打包提供了关键入口。
$OEM$文件夹技术原理
$OEM$文件夹是Windows部署工具包(Windows ADK)中定义的标准化结构,允许在安装过程中自动复制文件到目标系统。其核心工作流程如下:
准备工作:环境与工具要求
硬件与软件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 7 SP1及以上 | Windows 10/11专业版 |
| 内存 | 4GB | 8GB及以上 |
| 存储空间 | 至少16GB可用空间 | 32GB SSD |
| 工具 | 7-Zip、记事本++ | ADK 10.1.22621.1 |
| 网络 | 互联网连接 | 稳定宽带连接 |
必备工具下载
-
MediaCreationTool.bat
git clone https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat -
Windows ADK(仅需要"部署工具"组件)
- 下载地址:https://learn.microsoft.com/zh-cn/windows-hardware/get-started/adk-install
-
驱动收集工具
- Double Driver(免费版)
- DriverMax(个人版)
实战指南:构建包含自定义驱动的安装介质
步骤1:创建标准$OEM$文件夹结构
首先在工作目录创建以下目录结构(严格区分大小写):
$ISO$
└── sources
└── $OEM$
├── $$
│ ├── Drivers # 系统级驱动存放位置
│ │ ├── Audio # 音频驱动
│ │ ├── Chipset # 芯片组驱动
│ │ ├── Network # 网络驱动
│ │ └── Video # 显卡驱动
│ └── Setup
│ └── Scripts
│ └── setupcomplete.cmd # 安装后执行脚本
└── OneDrive
└── Setup.exe # 可选:OneDrive企业版安装程序
创建命令:
mkdir -p $ISO$/sources/$OEM$/$$/Drivers/{Audio,Chipset,Network,Video}
mkdir -p $ISO$/sources/$OEM$/$$/Setup/Scripts
touch $ISO$/sources/$OEM$/$$/Setup/Scripts/setupcomplete.cmd
步骤2:收集与整理驱动程序
方法A:从现有系统提取驱动
使用Double Driver收集驱动:
- 启动软件后点击"Backup"
- 选择"Scan Current System"
- 勾选需要备份的驱动类别(建议全选)
- 设置输出路径为
$ISO$/sources/$OEM$/$$/Drivers - 选择"Structured Folder"格式导出
方法B:手动下载厂商驱动
对于戴尔、惠普等品牌机,建议直接从官方网站下载驱动包:
# 示例:戴尔Latitude 7420驱动下载(PowerShell)
$model = "Latitude 7420"
$os = "Windows 11"
Start-Process "https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/XXX/drivers"
步骤3:配置MediaCreationTool.bat
MediaCreationTool.bat提供了多种参数用于定制安装介质。为确保$OEM$文件夹被正确集成,需要修改以下配置:
- 打开MediaCreationTool.bat,找到并确保以下行未被注释:
::# uncomment to not add EI.cfg PID.txt auto.cmd $ISO$ dir content - or rename script: "def MediaCreationTool.bat"
::rem set /a DEF=1
关键说明:
DEF参数控制是否禁用自定义文件集成,必须确保其处于注释状态(即保留默认行为)
- 设置Windows版本和架构:
::# uncomment to skip GUI dialog for MCT choice: 1507 to 11 23H2 - or rename script: "23H2 MediaCreationTool.bat"
set MCT=11_23H2
::# uncomment and change autodetected MediaArch - or rename script: "x64 iso 1909 Education MediaCreationTool.bat"
set ARCH=x64
步骤4:生成集成驱动的ISO文件
执行以下命令创建包含自定义驱动的Windows安装ISO:
.\MediaCreationTool.bat iso
脚本将自动完成以下操作:
- 下载指定版本的Windows安装文件
- 集成$ISO$文件夹中的自定义内容(包括驱动)
- 创建可启动ISO文件(保存在当前目录)
过程日志示例:
Downloading Windows 11 23H2...
Validating download... OK
Integrating $ISO$ content...
- Added 15 driver packages
- Added setupcomplete.cmd
Creating ISO image...
Media created successfully: Win11_23H2_Chinese(Simplified)_x64.iso
步骤5:验证驱动集成
创建完成后,建议通过以下方法验证驱动是否已正确集成:
- 使用7-Zip打开生成的ISO文件
- 导航至
sources\$OEM$\$$\Drivers - 确认驱动文件数量与大小是否匹配预期
高级配置:自动化与定制化
setupcomplete.cmd脚本编写
setupcomplete.cmd将在Windows安装完成后自动执行,可用于驱动安装后的额外配置:
@echo off
:: 安装特定驱动(如有需要)
pnputil /add-driver "%windir%\Drivers\Chipset\*.inf" /install
:: 禁用自动驱动更新
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installation" /v "DisableAutomaticDriverDownload" /t REG_DWORD /d 1 /f
:: 注册系统恢复点
wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "Driver Integration", 100, 7
:: 清理临时文件
rmdir /s /q "%windir%\Drivers\Temp"
AutoUnattend.xml驱动配置
结合AutoUnattend.xml可以实现更精细的驱动安装控制:
<settings pass="offlineServicing">
<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DriverPaths>
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Path>%windir%\Drivers</Path>
</PathAndCredentials>
</DriverPaths>
</component>
</settings>
多版本驱动分离方案
对于需要支持多种硬件配置的场景,可使用以下目录结构实现驱动分离:
Drivers
├── Intel
│ ├── 10thGen
│ └── 12thGen
├── AMD
│ ├── Ryzen5000
│ └── Ryzen7000
└── Common
├── Network
└── Audio
配合setupcomplete.cmd中的硬件检测逻辑:
:: 检测CPU型号并安装对应驱动
for /f "tokens=3 delims= " %%a in ('reg query "HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0" /v "ProcessorNameString" ^| findstr /i "ProcessorNameString"') do (
set "cpu=%%a"
)
if "%cpu%"=="Intel(R)" (
if exist "%windir%\Drivers\Intel\12thGen" (
pnputil /add-driver "%windir%\Drivers\Intel\12thGen\*.inf" /install
)
)
故障排除:常见问题与解决方案
驱动未被自动安装
| 可能原因 | 解决方案 |
|---|---|
| 驱动文件不完整 | 检查.inf文件是否存在,确保驱动包完整 |
| 驱动与Windows版本不匹配 | 在$OEM$文件夹中按系统版本组织驱动(如Drivers\Win11) |
| 数字签名问题 | 使用DSEO工具为驱动签名,或在BIOS中禁用Secure Boot |
| 硬件ID不匹配 | 用Device Manager查看硬件ID,与.inf文件比对 |
MediaCreationTool.bat运行错误
若遇到"无法找到$ISO$目录"错误:
-
确认当前工作目录正确:
echo %CD% :: 应显示MediaCreationTool.bat所在目录 -
验证文件夹名称拼写:
dir /ad | findstr /i "$ISO$" :: 应显示$ISO$目录
安装介质无法启动
-
检查ISO文件完整性:
certutil -hashfile Win11_23H2.iso SHA256 :: 与官方提供的哈希值比对 -
验证USB设备:
diskpart list disk select disk X (X为USB设备编号) clean create partition primary format fs=fat32 quick active exit
企业级应用:大规模部署优化
驱动存储优化
对于企业环境,可采用WIM文件压缩驱动以减少存储空间占用:
:: 将驱动文件夹捕获为WIM文件
dism /Capture-Image /ImageFile:Drivers.wim /CaptureDir:$ISO$/sources/$OEM$/$$/Drivers /Name:"Custom Drivers" /Compress:max
:: 应用WIM文件到目标位置
dism /Apply-Image /ImageFile:Drivers.wim /Index:1 /ApplyDir:$ISO$/sources/$OEM$/$$/Drivers
网络驱动优先加载
为确保部署后系统能立即连接网络,可在AutoUnattend.xml中配置网络驱动优先安装:
<settings pass="windowsPE">
<component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<DriverPaths>
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Path>%windir%\Drivers\Network</Path>
</PathAndCredentials>
</DriverPaths>
</component>
</settings>
总结与展望
通过MediaCreationTool.bat与$OEM$文件夹的组合,我们实现了Windows安装介质的高度定制化,解决了传统部署中驱动缺失的痛点。这种方法不仅适用于个人用户,经过适当扩展后也可满足企业级部署需求。
随着Windows 12的即将发布,建议关注以下发展方向:
- MSIX打包驱动的支持情况
- 云驱动部署技术的应用
- AI驱动的硬件检测与驱动匹配
扩展资源
官方文档
-
Microsoft Docs: $OEM$文件夹参考 https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/oem-deployment-of-windows-desktop-editions
-
MediaCreationTool.bat官方指南 https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat
工具下载
- Windows ADK: https://learn.microsoft.com/zh-cn/windows-hardware/get-started/adk-install
- Double Driver: https://www.doubledriver.com/
- Rufus(USB启动盘制作): https://rufus.ie/zh/
社区支持
- 微软TechNet论坛: https://social.technet.microsoft.com/Forums/zh-CN/home
- MSDN驱动开发社区: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/home?forum=wdk
希望本文能帮助你构建高效、可靠的Windows安装介质。如果觉得本指南有用,请点赞、收藏并关注作者,获取更多系统部署技巧!
下一篇预告:《使用MDT实现基于网络的大规模驱动部署》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



