让Mac的Windows驱动安装从半小时缩到3分钟:Brigadier实操手册
【免费下载链接】brigadierFetch and install Boot Camp ESDs with ease.项目地址: https://gitcode.com/gh_mirrors/bri/brigadier
一个让我印象深刻的下午
前阵子帮朋友给他的2018款MacBook Pro装Windows双系统,系统装好了,问题才刚开始:键盘没反应、触控板失灵、屏幕分辨率惨不忍睹、连Wi-Fi都连不上。那一刻我意识到,Mac上装Windows从来不是最难的,最难的是把Boot Camp驱动伺候妥当。
以前的做法是打开苹果官网,翻半天支持页,确认自己机型对应的Boot Camp版本,再手动下载、解压、一层一层剥开归档文件,最后还要手动点开安装向导。整个流程下来少说半小时,稍不留神下载错版本就得重来。
后来我找到了一款叫Brigadier的开源工具,它把上述所有步骤压缩成了一行命令。今天就把这套亲测有效的用法完整分享出来。
Brigadier到底是干什么的
简单说,Brigadier是一个跨平台的Python脚本,职责很纯粹:从苹果官方软件更新服务器(或你自建的内部服务器)上,抓取当前这台Mac对应的Boot Camp ESD(电子软件分发包),自动解开里面多层嵌套的归档,把驱动文件提取出来。如果在Windows上运行并加上--install参数,它还会顺手把64位的MSI驱动安装包装上。
它面向的人群很明确:
- 刚给Mac装了Windows、驱动一团乱麻的个人用户;
- 需要给成百上千台Mac批量部署Windows驱动的企业IT管理员;
- 经常做系统镜像、想统一驱动包的技术人员。
它支持Windows 7/10/11的64位版本,以及macOS 10.9及更高版本,几乎覆盖了所有还在服役的Mac。
五分钟跑通第一个流程
在Windows上:一条命令完成安装
先把工具拿到手:
git clone https://gitcode.com/gh_mirrors/bri/brigadier cd brigadier然后运行:
brigadier.exe --install注意,如果你机器上还没有Python环境,可以去Releases区域下载预编译的brigadier.exe,直接双击命令行运行即可,连Python都不用装。
这一条命令背后发生了什么?我拆开看了一遍:
- 通过WMI查询(
wmic)识别当前机器的型号标识符; - 拉取苹果软件更新目录,在众多Boot Camp ESD里找出匹配当前机型的那个;
- 下载后依次解开XAR外包装、GZIP压缩层、CPIO归档,最后从
WindowsSupport.dmg里抽出驱动文件; - 找到
BootCamp.msi或BootCamp64.msi,静默执行安装; - 装完自动清理临时文件。
整个过程中,7-Zip是Windows上负责解压的主力工具。Brigadier会先检查系统里有没有装7-Zip,没有就自动下载安装,用完之后再卸掉,不给你留任何垃圾。
在macOS上:先把驱动包备好
macOS版主要用于下载和准备驱动文件:
chmod +x brigadier ./brigadier --output ~/bootcamp-drivers在Mac上,解压工作靠的是系统自带的hdiutil和pkgutil,不需要额外工具。下载下来的ESD会保留为.dmg格式,方便刻盘或拷贝到Windows环境里用。
核心能力逐个拆解
机型识别:不用再查设备ID了
这是Brigadier最省心的地方。Windows下它用WMI查型号,macOS下用system_profiler读硬件信息,全程自动,你完全不需要知道自己电脑的Model Identifier是什么格式。
当然,想手动指定也完全可以,后面会讲到--model参数。
多层归档:一场解压接力赛
苹果的Boot Camp ESD文件结构相当"套娃":
- 最外层是XAR格式的
BootCampESD.pkg; - 里面压着GZIP过的Payload;
- 解开是CPIO归档;
- 最里面才是装着驱动文件的
WindowsSupport.dmg。
过去Brigadier还要借助dmg2img这个辅助工具来读取DMG,后来新版7-Zip对DMG格式支持已经足够完善,这个依赖在0.2.4版本被彻底移除了,现在全靠7-Zip一条龙搞定。
跨平台:同一套逻辑,两种运行方式
项目本体是Python脚本,Windows和macOS都能直接跑;Windows用户额外有PyInstaller打包的独立exe可选用。仓库里还附赠了一个PowerShell移植版brigadier.ps1,习惯PowerShell的管理员可以用它完成同样的下载、解压、安装动作,比如brigadier.ps1 -Install就能一键装机。
进阶玩法:把Brigadier调教成趁手工具
指定机型下载
给特定型号的Mac准备驱动包时,用--model指定即可:
brigadier --model MacBookPro15,1 --output ./drivers这个参数还支持重复使用,一次命令把多个机型的驱动全部下载下来,适合批量准备。
保留下载文件
默认情况下,--install安装完成后会清理所有临时文件。想留一份备用,加--keep-files:
brigadier.exe --install --keep-files接管苹果的软件更新服务器
企业内网场景下,你可以放一个brigadier.plist到脚本同目录,用一行CatalogURL把更新目录指到内部服务器:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CatalogURL</key> <string>https://internal-sus.company.com/catalogs/others/index.sucatalog</string> </dict> </plist>这样既不用动代码,也能统一内网的下载源。模板可以直接参考仓库里的plist-example/brigadier.plist。
手动指定产品ID
有些机型在目录里可能对应多个ESD包,Brigadier默认挑发布日期最新的那个。如果想要的不是最新版,用-p/--product-id手动指定,比如brigadier -p 031-0787。
给Sysprep镜像用:FirstLogonCommand阶段自动装驱动
这是Brigadier最有价值的企业场景:同一份Windows镜像部署到不同型号的Mac上,在Sysprep的首次登录命令里挂上Brigadier,让它在开机后自动识别机型并装好对应驱动,镜像从此不用分机型维护。
脚本里针对这个场景做了一个贴心的workaround:当检测到当前工作目录是\windows\system32且没有用--output-dir覆盖时,会自动把输出目录切到系统根目录,绕开64位系统上System32与SysWoW64重定向导致MSI找不到安装组件的问题。
构建自己的独立exe
要在没装Python的Windows机器上分发,可以运行仓库自带的构建脚本:
python build_windows_exe.py脚本会自动下载PyInstaller并完成打包,在当前目录生成带版本号的zip压缩包,里面就是可直接分发的brigadier.exe。
在虚拟机里测试Boot Camp安装
苹果的安装包会校验硬件是否为合法的Mac机型,所以虚拟机里直接装会失败。msi-transform目录提供了一条出路:里面附带的WiUseXfm.vbs脚本和set_nocheck.mst变换文件,可以把MSI的NOCHECK调试属性设为1,绕过机型检查,让Boot Camp基础服务在VM里也能装上,适合拿来模拟测试。具体用法见msi-transform/README.md。
常见问题集中解答
Q:Brigadier支持32位Windows吗?A:目前只支持64位Windows。苹果从2012年底发布的Boot Camp ESD开始就基本只提供64位驱动了,想支持32位需要额外的工作量,官方也确认了这一点。
Q:装到一半提示网络驱动缺失怎么办?A:Brigadier全程需要联网下载,所以系统里必须提前有能用的网卡驱动。最简单的办法是在做Sysprep镜像时,把Boot Camp ESD里的网卡驱动放进C:\Windows\INF下的"BootCamp"文件夹——这是Windows默认的设备驱动搜索位置,会自动识别并安装未知硬件的驱动。也可以改DevicePath注册表键指向自定义位置,但用INF文件夹的好处是不用改注册表,直接拷文件就行。
Q:下载下来的文件去哪了?A:不带--install时,解压结果会放在当前目录(或--output-dir指定的目录)下,以产品名命名的文件夹里,类似BootCamp-041-1234。带--install时默认装完即删,想留就加--keep-files。
Q:安装完为什么没有弹出Boot Camp首次运行帮助?A:Brigadier在安装结束后会把HKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support下的FirstTimeRun注册表值设为0,用来关掉那个烦人的首次启动弹窗。目前这个行为没法通过参数关闭,属于写死的行为。
Q:命令行都有哪些参数?A:常用的是这几个:
brigadier [options] -m, --model 指定机型标识,可重复使用 -i, --install 下载后自动安装(仅Windows) -o, --output-dir 指定解压输出目录 -k, --keep-files 安装后保留文件(需配合--install) -p, --product-id 手动指定要下载的产品ID -V, --version 输出版本号版本迭代:这个工具一直在自我修复
当前版本是0.2.6,从CHANGELIST和VERSION文件里能看到它的演进脉络:
- 0.2.6:引入certifi证书捆绑,修复了旧版Windows访问7-Zip官网时因Let's Encrypt证书导致的TLS问题;
- 0.2.5:7-Zip更新到22.01,新增
-V/--version选项,并用最后兼容Python 2.7的PyInstaller 3.6重新打包了exe; - 0.2.4:砍掉dmg2img依赖,完全交给7-Zip处理DMG;
- 0.2.3:把msiexec的静默参数从
/qr换成/qb-,规避安装时的模态弹窗卡死问题; - 0.2.1:
--model支持多次指定批量下载,--leave-files改名--keep-files,并修复了Payload归档命名不统一的兼容问题。
坦白说,作者在README里也诚恳地提醒过:由于Boot Camp 5/6部分版本与某些硬件的组合存在兼容性问题,Brigadier的静默安装并非在所有机型和驱动组合下都完美,个别情况可能需要手动补装某个驱动。所以把它当作"省时利器",而不是"万能钥匙",心态会平和很多。
写在最后
如果你也被Mac装Windows后的驱动问题折磨过,不妨按下面三步走:
- 克隆或下载Brigadier;
- Windows上跑
brigadier.exe --install,macOS上跑./brigadier --output ~/bootcamp-drivers; - 有企业批量部署需求,再研究下Sysprep集成和
brigadier.plist配置。
从手动翻官网、层层解压、逐个装驱动,到一行命令全自动,Brigadier把整个流程从30到60分钟压缩到了几分钟。这个工具既照顾了个人用户的省心诉求,也满足了企业IT批量部署的效率要求,值得放进你的装机工具箱。
【免费下载链接】brigadierFetch and install Boot Camp ESDs with ease.项目地址: https://gitcode.com/gh_mirrors/bri/brigadier
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考