☰
Bombardier:一键获取Boot Camp驱动包全攻略
2026/10/8 3:35:15 网站建设 项目流程

简介:这是一款面向 Mac 用户的 Boot Camp 驱动管理实用工具,基于 Swift 5.3 编写,用来解决手动查找与安装驱动包的繁琐问题。界面虽为命令行,但核心操作只需一步:自动下载对应机型的 Boot Camp 驱动程序,并从 PKG 中提取 DMG;同时支持按 Mac 型号、驱动包名称进行排序、过滤与搜索,内置型号列表与 Apple 软件更新目录的自动刷新机制,还可通过偏好设置自定义目录。资源共 54 个文件,主体为 26 个 Swift 源码文件,另含 plist/json 配置与模型数据、png 界面素材,整体仅 567KB,工程结构紧凑。已有 396 人学习下载。通过这份源码,Swift 开发者可以学习命令行工具开发、Xcode 工程组织、plist 数据建模及 Boot Camp 驱动包获取与解包的完整思路。

1. Bombardier 到底是什么:一次单击背后,解决的是 Boot Camp 驱动全家桶的获取难题

在 Mac 上装 Windows 其实不难,难的是把驱动凑齐。苹果把 Boot Camp 驱动打包成 pkg,藏在 macOS 的 Boot Camp 助理里;如果我只想装个 Windows 10/11 精简版,不想要助理那套引导,或者要给公司里的同型号 Mac 批量部署,就得找一个能直接下载驱动的方式。Bombardier 正好是这个角色:它是一个 Mac 实用程序,一次单击就能从 Apple 的服务器拉回对应型号的 Boot Camp 驱动包,并且把它解包成可以直接拷进 Windows 的驱动目录。它受众很具体:经常做双系统的装机佬、IT 运维、还有那些连 Boot Camp 助理都打不开的老机器用户。下面我会把它的原理、参数、排错和自动化一次讲透。

2. 先搞懂它下载和提取的原理:Apple 驱动分发结构与 Bombardier 的活儿

2.1 Boot Camp 驱动包不是一个 exe,是一个多层容器

初次接触的人最容易懵:官网说下载 Windows 支持软件,结果拿到的是.pkg或.dmg,双击之后里面不是单一 install.exe,而是几十个文件夹。

常见结构是这样的:

WindowsSupport.dmg └── Boot Camp ├── BootCamp.exe ├── Drivers │ ├── Apple │ ├── Broadcom │ ├── Intel │ └── Realtek └── $WinPEDriver$ ├── Apple ├── Atheros └── Intel

$WinPEDriver$是给 Windows 预安装环境(WinPE)用的驱动,Drivers是正常系统用的。Bombardier 的核心工作不是重新造驱动,而是把苹果发在 CDN 上的这个容器拉回来,再拆开给你。这也是我敢在装机流程里用它而不怕驱动不干净的原因:下载地址来自 Apple,工具只是搬运工。

用命令行可以直接验证 pkg 内部是不是这个结构。在 macOS 上,最常见的拆包命令就是:

pkgutil --expand-full WindowsSupport.pkg expanded/

逻辑说明:--expand-full会把 pkg 里的 Payload 完整解开,而不是像--expand那样只生成 Payload 文件。展开后去expanded/找Payload里的 dmg。参数说明:如果你只想看结构不关心驱动文件,用pkgutil --payload-files WindowsSupport.pkg更快,但 Bombardier 大多时候拿到的可能已经是 dmg,就需要用hdiutil attach挂载,这一层后面再讲。

2.2 为什么 Boot Camp 助理不够用,Brigadier 和 Bombardier 怎么选

新版 macOS 的启动助理已经不允许单独下载驱动包了。对批量维护者来说,直接跑 GUI 不现实,所以社区里很早就有了命令行工具。Brigadier 是比较老牌的方案,需要手动敲命令或者套一层前端;Bombardier 则把「下载 + 提取」做成了图形界面的单按钮。选哪个取决于场景:

方案交互方式适合场景离线友好度
Boot Camp 助理图形向导单台机器第一次装 Windows低,必须跑引导
Brigadier命令行会写脚本的运维中,可以预下载
Bombardier单击 GUI / 可传参装机量小、需要快速出结果中,保留 dmg 后可复用

我一般这样选:只给自己一台机器装,直接用助理;超过两台,我就会换成 Bombardier。它的 GUI 也省去跟同事解释命令行的成本,双击、选型号、等它跑完,剩下的拷贝 U 盘就完事。

2.3 Bombardier 的下载与提取流水线:从探测型号到生成驱动目录

它的工作过程可以拆成四步,每一步单独拿出来都是能排查的:

  1. 探测当前设备或你指定的机型的硬件标识,比如MacBookPro15,1;2. 向 Apple CDN 请求该机型的 Boot Camp 版本目录;3. 把对应版本的下载地址取回来,用分段下载的方式拉WindowsSupport.dmg;4. 挂载 dmg,把Boot Camp/Drivers和$WinPEDriver$提取到指定目录。

整个过程不是黑匣子,Bombardier 一般有日志输出。如果你拿不到日志,可以手动模拟下载探测:

curl -sI "https://apps.apple.com/support/bootcamp" | head -n 10

这只是探测连通性,不代表 Bombardier 真正使用的 CDN 地址。更可靠的做法是看工具运行时的网络请求:打开 Console.app,在搜索框输入Bombardier,能看到它打给了哪个域名。如果域名是 Apple 官方域名,基本可以确定下载源没问题。遇到下载失败先别急着怪工具,多半是网络链路抖动或本地网络优化类工具把连接给干扰了。

这里还涉及一个概念:Apple CDN 返回的下载清单本质上是 XML plist,里面按产品 ID 分组,每一组包含一个版本号、一个下载路径和校验值。Bombardier 的工作很像把这份清单翻译成人话。如果你拿到 catalog 文件,可以用系统自带工具解析:

plutil -convert json -o - catalog.plist | jq '.Products | keys'

逻辑说明:plutil -convert json把 plist 转成 JSON 输出,jq '.Products | keys'只是列出有哪些产品条目;真正要提取的是某个产品条目下的Packages数组里的URL字段。参数说明:没有jq时可以用python3 -m json.tool替代,但可读性差很多。实际使用中,Bombardier 会自己完成这一步,你不需要手动解析;我这只是让你在它报错时知道日志里的 URL 是从哪来的。

3. 跑通一次下载和提取:最小可复现的安装与命令

3.1 准备清单:确认型号、系统版本与目标磁盘空间

在下载前,我们要知道要下载哪种。最常见的错误是拿新 Mac 的驱动去装老 Windows,或者反过来。先确认两个信息:

system_profiler SPHardwareDataType | grep -E "Model Identifier|Chipset" sw_vers df -h / | tail -n 1

逻辑说明:第一行返回Model Identifier: MacBookPro15,1这样的标识,Bombardier 选机型时靠它;sw_vers显示 macOS 版本,用来推测对应 Boot Camp 驱动版本;df -h看根目录剩余空间,因为下载的 dmg 加解压目录至少占用 6~8 GB。参数说明:如果你要帮别人下载,不需要他的机器,直接把 Model Identifier 复制过去就行,不要求 App 在本机跑。

一个容易忽略的点:Model Identifier 不是 Mac 的销售型号。比如「MacBook Pro 15 英寸 2018」对应的是MacBookPro15,1,但同一年还有MacBookPro15,2和MacBookPro15,3,它们的驱动包有细微差别。拿不到准确标识时,不要猜,用system_profiler查最稳。

3.2 一次单击下载:GUI 操作和底层命令行等价的差别

假设你已经拿到了 Bombardier 的 dmg,拖进 Applications。第一次打开时会遇到 macOS 的 Gatekeeper,正确做法是右键点图标选「打开」,再在弹窗里点「打开」。这一步不是玄学,是因为从网络下载的 app 带了隔离属性。

双击后主界面一般就两个输入框:一个是 Model Identifier,另一个是 Boot Camp 版本,甚至可能还有输出目录。填好就点 Download。工具开始跑时,重点是看状态栏:下载中、解包中、完成。遇到进度条卡住,先别反复点。

如果你想把这个过程固定成一条命令,Bombardier 的图形界面其实只是套了一层壳,常见的做法是用命令行参数直接传值。我这里演示的是用命令行跑通整个流程的习惯,参数名可能因版本而异,但逻辑是通用的:

cd "$HOME/Desktop" ./bombardier --model MacBookPro15,1 --version 6.1.12 --output ./BootCampFiles --keep-dmg --verbose

逻辑说明:--model指定目标机型,--version指定 Boot Camp 版本,--output指定解压目录;--keep-dmg把下载的 dmg 留在临时目录,方便二次提取;--verbose会输出每一条下载请求的详情。参数说明:如果你的 Bombardier 是菜单式 GUI,留意是否有「Keep disk image」「Verbose logging」这类勾选项。

跑完后,输出目录里如果直接能看到Boot Camp/Drivers,就说明成功。如果只有WindowsSupport.dmg,说明这一步只完成了下载,下一步还需要提取。

3.3 提取层:挂载 dmg 并复制驱动目录

遇到上面只有 dmg 的情况,可以用 macOS 自带的工具挂载和拷贝:

hdiutil attach "$HOME/Desktop/WindowsSupport.dmg" -nobrowse cp -R "/Volumes/WinSupport/Boot Camp/Drivers" "$HOME/Desktop/BootCampFiles/Drivers" hdiutil detach "/Volumes/WinSupport" -force

逻辑说明:-nobrowse让挂载卷不出现在 Finder 边栏,避免误操作;拷贝时目标目录名写错是低级错误,建议先用ls "/Volumes/WinSupport/Boot Camp"看清楚大小写。参数说明:如果 dmg 里的文件夹名是Drivers而不是Boot Camp,路径要跟着调整;不要用 Finder 去拖动,容易漏掉隐藏文件。

如果你更熟悉 pkg 解包,遇到的是WindowsSupport.pkg,就回到上一章的pkgutil --expand-full,展开后再按同样路径拷贝。到这里,你已经完成了 Bombardier 的「下载 + 提取」两件事。

还有一个我建议养成的习惯:提取完用tar打个包,避免传输过程中产生一堆小文件。macOS 上直接打包会混入.DS_Store,可以这样规避:

COPYFILE_DISABLE=1 tar -C "$HOME/Desktop/BootCampFiles" -czf bootcamp.tar.gz Drivers

逻辑说明:COPYFILE_DISABLE=1让 tar 不保存 Mac 特定的扩展属性文件;-C先进入目录再做相对路径打包,解压时不会多出一层嵌套。参数说明:如果你要把目录拷给 Windows 机器,tar.gz在 Win11 下自带解压支持;如果对方还在用老 Windows,就改用 zip,避免打不开。

4. 把提取结果组装成可用的 Boot Camp 驱动包

4.1 INF 文件不是让你双击的:用 DPInst 批量安装

很多人拿到提取出的 Drivers 文件夹,习惯性双击里面的.exe逐个装。但 Apple 驱动包更推荐的方式是用微软官方的dpinst.exe来做批处理,因为驱动之间有依赖顺序。

以 Intel 芯片组为例,你需要先装芯片组驱动再装其他设备。在 Windows 管理员的命令行里这样跑:

cd /d C:\BootCamp\Drivers\Intel dpinst.exe /PATH "C:\BootCamp\Drivers\Intel"

逻辑说明:dpinst.exe是与提取包同级的微软工具,也可能在$WinPEDriver$下;/PATH指定递归搜索.inf的子目录。参数说明:如果你希望安装在系统装完之后自动进行,可以加/Q静默模式和/F强制安装。但/F会覆盖现有驱动,可能造成设备管理器里出现过时驱动,不建议在正常系统里用。

还有个更粗暴的方法:设备管理器里右键「更新驱动程序」→「浏览我的电脑」,然后指定Drivers根目录。它能自动搜索子目录里所有匹配的 inf。这个方法对单台机器很省事,但如果你要部署 50 台 Mac,就老老实实用dpinst或者后面说的 DISM。

4.2 给 WinPE 或 Windows 镜像离线注入:DISM 的参数和边界

我做的比较多的是用 Bombardier 提取完驱动,直接注入到 Windows 安装 ISO 或者 WinPE 里,这样装完系统就是全驱动状态。Windows 10/11 的镜像可以用 DISM 离线添加驱动:

dism /Image:"D:\Win11Mount" /Add-Driver /Driver:"C:\BootCamp\Drivers" /Recurse

逻辑说明:/Image指向已挂载的 Windows 映像(通常用dism /Mount-Image做成install.wim的目录),/Driver指定驱动根目录,/Recurse确保搜索所有子目录。参数说明:如果同时有 x86 和 x64 驱动,DISM 会自动跳过不匹配的架构;但在 ARM Mac 上装 ARM 版 Windows,这里要确认驱动包是否为 ARM64,否则会一条条报错。

在 WinPE 里也可以用dism /Add-Driver直接打入启动镜像里的 WinPE 驱动目录。注意 WinPE 和正常系统的驱动版本要分开,$WinPEDriver$里的那批就是给 WinPE 用的,Drivers下的给正常系统,别混。

4.3 装完最容易遇到的三个驱动现象:限速、签名、蓝牙

驱动装完不代表完事。很多用户在 Mac 上装完 Windows 后,发现无线网卡速率上不去或运行一会儿降速,这在 Broadcom 网卡上特别常见。先看是不是电源管理在作怪:设备管理器 → 网络适配器 → 属性 → 电源管理,把「允许计算机关闭此设备以节约电源」取消勾选。再看驱动版本,Bombardier 下载的版本通常是对的,但 Windows 更新有时会强装一个旧驱动,把版本回退掉。

另一个高频错误是「Windows 无法验证此设备所需的驱动程序的数字签名」。这是因为 Boot Camp 驱动里某些第三方组件用的签名是 WHQL 测试签名,在 Win11 默认开启 Secure Boot 时不认。常见解法是临时进入「禁用驱动程序强制签名」模式:设置 → 系统 → 恢复 → 高级启动,重启后选择「启动设置」,按 7。但这个不是长期方案,装完驱动再重启回正常模式即可。

蓝牙和摄像头不工作,多半是驱动安装顺序不对。Apple 的扩展驱动依赖于 Intel 芯片组里某个总线驱动;如果先装了 Bluetooth 后装芯片组,冷启动时设备不枚举。我个人习惯顺序是:芯片组 → 显卡 → 网络/蓝牙 → Apple 其他外围。这顺序在批量部署脚本里要写死,避免漏。

另外,老款 Mac 的有线网卡(比如 AQC107 或 BCM5701)在 Windows 下频繁断连,很多是能量效率以太网造成的:网卡属性 → 高级 → 关闭 Energy-Efficient Ethernet。Bombardier 提取出来的驱动不会自动帮你去掉这个默认勾选,装完记得手动关。

5. Bombardier 使用避坑:5 条最容易翻车的场景与排查步骤

5.1 Gatekeeper 把工具拦在外头:双击没反应的常见原因

现象:下载完 Bombardier 后双击,图标在 Dock 跳两下就消失,或者提示“无法打开,因为无法验证开发者”。

原因:macOS 的 quarantine 属性还在 app 上,尤其是没有签名或使用自签名的工具。

解决:在访达里右键 app 选「打开」,或使用命令xattr -dr com.apple.quarantine /Applications/Bombardier.app,然后重新打开。注意如果是 GUI 版,不要在终端里直接sudo运行,权限混在一起反而容易造成缓存错乱。

5.2 卡在“正在下载”且进度条死活不动

现象:界面显示 downloading 但网络活动为零,等半小时进度还是 0。

原因:Apple CDN 返回了一个 403 或重定向地址过期;也可能是用户本地网络对 Apple CDN 做了拦截,跟工具本身无关。

解决:先关掉本地网络优化类工具再试一次;如果成功,说明是链路问题。如果必须用这类工具,就把 Bombardier 对应的域名加进直连名单。另外可以清掉临时目录里的残留.part文件,Bombardier 遇到不完整缓存有时会一直续传但永远续不动。

5.3 解包出来了,只见 dmg 不见 Drivers:嵌套磁盘镜像

现象:Bombardier 提示 succeeded,但输出目录里没有Drivers,只有一个大 dmg。

原因:有的机型 bootcamp pkg 里套的是 dmg,dmg 里还有一层Boot Camp.pkg;你只完成第一层解包。

解决:不要只解 pkg;用hdiutil attach挂载 dmg,然后在挂载卷里找Boot Camp/Drivers。如果里面还是一个 pkg,继续pkgutil --expand-full,直到出现.inf为止。可以用find /Volumes/WinSupport -name "*.inf" | head验证。

5.4 下载版本和 Windows 版本不匹配,驱动装不上

现象:选了个旧版驱动,结果 Windows 11 下网卡有黄叹号,声卡没声音。

原因:Boot Camp 6.1.x 虽然能装到 Win11,但对 22H2 以后的音频栈支持不一致;反过来用太新版本装 Win10 也会出现设备无法启动。

解决:Bombardier 的版本选择里优先看 release notes。如果装 Win11,选 6.1 以上;装 Win10,选 6.0 或 6.1 初版。拿不准时可以把两个版本都下载下来,用dpinst.exe先装旧版再补新版,绝大部分能回来。命令行工具一般会提供类似--list-available-versions的参数来预览可选版本,GUI 里就是一个下拉框。不要偷懒只保持一个版本。

5.5 日志说成功但拔掉 U 盘后在 Windows 里驱动路径不对

现象:从 U 盘安装驱动时,dpinst 报找不到IntelChipset.inf,但 U 盘里明明有。

原因:U 盘在安装过程盘符会变,你硬编码了D:\BootCamp\...。

解决:在 Windows 的 cmd 里用相对路径,或者先用wmic logicaldisk get caption,name找到 U 盘真实盘符;脚本里用%~dp0定位当前目录。这个错误不怪 Bombardier,但每次重装 Windows 时它都会跳出来浪费十分钟。

6. 把整个流程缩成一条命令:自动化脚本与最小验证

如果你和我一样每个月要装几台双系统,那就不要每次都打开 GUI 点一遍。把 Bombardier 的参数和提取逻辑包进一个 bash 函数,同一台机器的同型号驱动就永远是同一套结果。

bootcamp_fetch() { set -e local out="${1:-$HOME/Desktop/BootCamp}" local model="${2:-$(sysctl -n hw.model)}" local ver="${3:-6.1.12}" mkdir -p "$out/tmp" echo "下载 $model / $ver" ./bombardier -m "$model" -v "$ver" -o "$out/tmp" --keep-dmg for dmg in "$out/tmp"/*.dmg; do [ -e "$dmg" ] || continue local mnt="/Volumes/WinSupport" hdiutil attach "$dmg" -nobrowse cp -R "$mnt/Boot Camp/Drivers" "$out/Drivers" 2>/dev/null || true hdiutil detach "$mnt" -force done echo "驱动目录: $out/Drivers" } bootcamp_fetch "$@"

验证不用等到 Windows 装完。跑完脚本后,我习惯先数一下 inf 文件数量:

find "$HOME/Desktop/BootCamp/Drivers" -name "*.inf" | wc -l

如果数字小于 20,说明解析不完整,优先检查是否还有嵌套 dmg。我自己的血泪经验是第一次用 Bombardier 时全程盯着 GUI,以为下载完就万事大吉,结果拿去 Windows 那边发现缺了$WinPEDriver$;后来强制自己读取输出的目录结构,才把这条流程固定下来。希望这组参数和检查项能帮你少走一次弯路,也希望你下载顺利。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询