☰
QT 5.15.0在线安装卡在29%?Fiddler镜像改写与分批安装实战
2026/10/27 20:04:58 网站建设 项目流程

简介:这份PDF文档面向需要在Windows平台搭建Qt开发环境的程序员与嵌入式开发者,针对Qt 5.15.0改为在线安装后官方源下载缓慢、安装程序频繁崩溃、常规镜像代理仍因数据量过大而中途失败等痛点,给出经过反复验证的完整解决思路。文档以Fiddler 4代理配合清华、北外、华中科大等国内镜像站点为核心,并采用先装基本模块、再通过控制面板“更改”方式少量多次追加组件的策略,规避大体积下载导致的内存耗尽与中断问题,同时附有关键规则配置与操作截图,便于读者按图复现。资源包仅含1个PDF文件,大小约833KB,轻量易存,适合离线查阅与团队内共享。目前已有12105人学习下载,说明该方案在实际安装场景中具有较高的参考价值,可帮助读者少走弯路,快速完成Qt 5.15.0开发环境的部署。

1. QT 5.15.0 在线安装:为什么 29% 成了很多人的终点

QT 5.15.0 之后官方把安装器改成了在线拉取模式,安装包本身只有几十兆,真正的模块全靠安装时从 download.qt.io 现下。这个改动对网络条件好的环境没什么感觉,但对国内大多数开发机来说,基本等于把「装 QT」变成了一场耐心测试:进度条爬到 29% 左右卡死、安装器无响应、重试三次全崩,是相当常见的结局。我见过不止一个开发者在这步放弃,转去找来路不明的离线包,结果组件版本对不上,编译时又是一堆新坑。

这篇记录解决的就是这个具体场景:用 Fiddler 4 做请求改写,把官方源换成国内镜像,再配合「先装基本模块、后补组件」的分批策略,把 QT 5.15.0 在线安装这件事真正跑通。适合正在装 QT 5.15.0 或相近版本、被在线安装卡住的人,也适合想搞清楚这套代理改写原理、以后自己换镜像的熟手。装之前先把版本和工具列清楚,后面每一步才不会乱。

2. 装前环境与工具版本:先把这几样对齐

2.1 版本对照表与选择理由

这套方案对版本不算苛刻,但几个关键件必须对得上,否则 Fiddler 的规则脚本会不生效,或者安装器根本不走代理。我一般按下表准备,装之前逐项核对一遍。

组件推荐版本说明
QT 在线安装器qt-unified-windows-x86-3.2.3-online.exe原文验证过的安装器版本,3.2.x 系列规则路径匹配稳定
抓包代理工具Fiddler 4需要能执行 OnBeforeRequest 脚本,Classic 版即可
操作系统Windows 10 64 位安装器为 x86 命名,但在 64 位系统上正常运行
镜像源清华 TUNA(主)、北外、华中科大(备)路径前缀各不相同,见 2.3 节
磁盘空间基本模块约 3~5 GB,全量组件 15 GB 以上分批装时预留足够空间,避免中途写满

版本上最容易翻车的是安装器。QT 官方后续更新过 unified 安装器,路径匹配规则和请求结构都有变化,原文这套/online/前缀的改写逻辑是针对 3.2.3 验证的。如果你手上的安装器版本差得远,规则可能匹配不上,表现为 Fiddler 里看不到 download.qt.io 的请求被改写。稳妥做法是先按 3.2.3 走通,再考虑换版本。

2.2 Fiddler 4 的安装与基础配置

Fiddler 4 直接装官方安装包即可,装完先做两件事:开启 HTTPS 解密、确认系统代理被接管。QT 安装器的下载请求走的是 HTTPS,不解密的话 Fiddler 只能看到隧道,改不了 Host 和路径。

# Fiddler 4 基础配置检查清单(在 GUI 中逐项确认) # 1. Tools -> Options -> HTTPS # - 勾选 Capture HTTPS CONNECTs # - 勾选 Decrypt HTTPS traffic # - 首次会提示安装根证书,选 Yes # 2. Tools -> Options -> Connections # - Fiddler listens on port: 8888(默认) # - 勾选 Allow remote computers to connect(本机安装可不勾) # 3. 确认系统代理已指向 127.0.0.1:8888

这里的关键是根证书。Fiddler 解密 HTTPS 靠的是自己签发证书,安装器如果不信任这张证书,请求会直接失败而不是被改写。首次启动 Fiddler 时弹出的证书安装提示必须点同意,装完可以在「 certmgr.msc → 受信任的根证书颁发机构」里确认有一条 DO_NOT_TRUST_FiddlerRoot。少了这步,后面规则写得再对也没用,这是很多人第一次尝试失败的真实原因。

2.3 镜像源路径差异:三个源不能照抄

原文给了三个国内镜像,但它们的路径前缀并不一致,直接复制同一段规则会 404。这是这套方案里最容易被忽略的细节,我把它单独拎出来说。

  • 清华 TUNA:download.qt.io/online/替换为mirrors.tuna.tsinghua.edu.cn/qt/online/
  • 北外 BFSU:download.qt.io/online/替换为mirrors.bfsu.edu.cn/qt/online/
  • 华中科大:download.qt.io/online/替换为mirrors.ustc.edu.cn/qtproject/online/

注意华中科大那条多了一层qtproject,路径结构和其他两个不同。规则里如果只改 Host 不改 Path,请求会落到镜像站不存在的目录上,返回 404,安装器表现为「下载失败但不说原因」。所以每条规则必须同时改hostname和PathAndQuery,两者缺一不可。实际使用时建议一次只启用一个源,跑不通再换下一个,别三个规则同时开着互相干扰。

3. 配置 Fiddler 规则:把官方源改写到镜像

3.1 打开 OnBeforeRequest 并写入改写脚本

Fiddler 的请求改写入口在 Rules 菜单下的 Customize Rules,会打开一个 FiddlerScript 编辑器。原文的操作路径是 GO 菜单里的「to OnBeforeRequest」,本质是跳到脚本里处理请求前事件的函数位置。找到OnBeforeRequest函数,把镜像改写逻辑插进去。

// FiddlerScript: 放在 OnBeforeRequest 函数体内 // 作用:把 QT 安装器发往官方源的在线安装请求,改写到清华镜像 if (oSession.HostnameIs("download.qt.io") && oSession.PathAndQuery.StartsWith("/online/")) { // 改目标主机为清华 TUNA 镜像 oSession.hostname = "mirrors.tuna.tsinghua.edu.cn"; // 路径前缀同步替换,/online/ 换成 /qt/online/ oSession.PathAndQuery = oSession.PathAndQuery.Replace("/online/", "/qt/online/"); // 调试用:在 Fiddler 会话列表里打标记,方便确认规则命中 oSession["ui-color"] = "green"; }

逐行说明:HostnameIs精确匹配官方下载域名,避免误伤其他请求;StartsWith("/online/")限定只改写在线安装相关路径,QT 安装器拉组件清单和包体都走这个前缀;hostname赋值改的是 TCP 连接目标,PathAndQuery改的是 HTTP 请求行里的路径,两个都改才算完整重定向。最后那行ui-color是我自己加的调试手段,命中的请求在列表里变绿,一眼能看出规则有没有生效,排查时非常省事。

3.2 规则生效验证与多源切换

规则写完保存,Fiddler 会自动重载脚本。这时启动 QT 安装器,在 Fiddler 会话列表里应该能看到大量绿色标记的请求,Host 显示为 mirrors.tuna.tsinghua.edu.cn。如果一条绿色都没有,说明规则没命中,按下面顺序查:安装器是否真的走了系统代理(Fiddler 状态栏应显示 Capturing)、HTTPS 是否已解密、路径前缀是否和安装器实际请求一致。

切换镜像源时,把当前规则整段注释掉,换成另一段即可。原文里北外和华中科大两段是注释状态,就是为了方便切换。我一般会把三段规则都写好,用注释控制启用哪一段,改完保存立刻生效,不用重启 Fiddler。这里有个小坑:FiddlerScript 是大小写敏感的,PathAndQuery写成pathandquery会直接报脚本错误,整个规则失效,保存时留意编辑器下方的错误提示。

3.3 为什么单靠镜像还不够:数据量问题

镜像解决了「连不上官方源」的问题,但没解决「一次拉太多」的问题。原文明确提到,即便走镜像,按正常方式全量安装依然会失败,因为数据量太大,Fiddler 4 会把内存耗尽,通常在 29% 左右崩掉。这不是镜像的锅,是安装器一次性请求的组件清单和包体总量超出了代理进程能扛的范围。

所以这套方案的核心其实是两步:镜像改写负责「连得上、下得快」,分批安装负责「别一次压垮」。只做前者,大概率还是卡在 29%;只做后者不走镜像,慢到没法用。两步配合,才是原文说的「完美解决」。下一章就讲分批策略具体怎么落地。

4. 分批安装:先装基本模块再补组件

4.1 第一轮只装最小集合

启动安装器后,登录 QT 账号(在线安装器要求),到组件选择页时,只勾选最基本的一组:对应版本的 Desktop 编译套件,加上安装器默认带的基础工具。不要在这一步勾选 Android、iOS、WebAssembly、源码包、示例这些大块头。目标是让第一轮下载量控制在代理能承受的范围内,先把安装器跑完、目录结构建起来。

# 第一轮安装的组件选择原则(在安装器 GUI 中操作) # 必选: # Qt 5.15.0 -> MinGW 64-bit(或 MSVC 2019 64-bit,按你的编译器选一个) # Developer and Designer Tools -> MinGW / Qt Creator(默认勾选保留) # 暂不勾选: # Android / iOS / WebAssembly 套件 # Sources(源码包,体积大) # Examples(示例,可后补) # Qt Charts / Qt Data Visualization 等附加模块

第一轮跑通的意义不只是装上了东西,更是验证了「Fiddler 规则 + 镜像 + 安装器」这条链路是通的。如果第一轮都过不去,别急着加组件,先回到第 3 章查规则。第一轮成功后,QT 的主目录、维护工具 MaintenanceTool 都已经就位,后面补组件靠的就是它。

4.2 用控制面板「更改」逐批追加

第一轮装完,补组件不走重新运行在线安装器,而是走系统「控制面板 → 程序和功能 → 找到 QT → 更改」。这会拉起 MaintenanceTool,进入组件增删界面,已经装好的组件显示为选中状态,你只需要勾选新的一批,点下一步,它只下载新增部分。

分批的粒度我一般这样切:第二批加编译套件的另一套(比如先装了 MinGW,这轮加 MSVC),第三批加常用附加模块(Charts、Network 相关扩展),第四批才碰 Android 或 WebAssembly 这种大套件。每批之间确认上一批装完、目录完整,再开下一批。原文说的「少量多次」,落到操作上就是这个节奏,每批控制在几个 GB 以内,Fiddler 内存压力就下来了。

4.3 每批之后的检查点

每批装完别急着开下一批,花两分钟做三个检查:QT 安装目录下对应版本文件夹是否出现新组件目录、MaintenanceTool 里该组件是否显示为已安装、Fiddler 会话列表里这批请求是否全部返回 200。任何一项不对,说明这批没装干净,重跑这一批比继续往下加更省事。我吃过亏:一批没装完就加下一批,结果组件依赖错乱,最后只能整个卸载重来,前面几批的时间全白费。

5. 避坑与排查:五条踩过的真实记录

5.1 现象:Fiddler 里看不到任何 QT 请求

原因通常是安装器没走系统代理,或者 Fiddler 没处于 Capturing 状态。QT 在线安装器有的版本会读系统代理设置,有的走自己的网络栈。解决:先确认 Fiddler 左下角显示 Capturing,再在安装器启动前把系统代理明确设为 127.0.0.1:8888;如果安装器仍不走代理,检查它是否有独立的代理配置项,或改用全局代理模式让流量强制经过 Fiddler。

5.2 现象:规则命中但下载 404

这是路径前缀没对上。三个镜像的路径结构不同,清华是/qt/online/,华中科大是/qtproject/online/,只改 Host 不改 Path 就会 404。解决:对照 2.3 节的路径表,确认PathAndQuery的 Replace 参数和当前启用的镜像一致;在 Fiddler 里点开一条 404 请求,看实际请求的完整 URL,和镜像站目录结构比对,差哪层补哪层。

5.3 现象:进度到 29% 左右安装器崩溃

原文点名的经典问题,根因是单次请求数据量过大,Fiddler 内存耗尽。解决:严格执行分批策略,第一轮只装最小集合,后续用控制面板「更改」逐批追加;同时关掉 Fiddler 里不必要的会话记录(清空会话列表、限制会话数量),减少内存占用。分批是主手段,清会话是辅助。

5.4 现象:HTTPS 请求显示为隧道,改不了

Fiddler 没解密 HTTPS。解决:Tools → Options → HTTPS 里勾选 Decrypt HTTPS traffic,首次会提示安装根证书,必须同意;装完在证书管理器里确认 Fiddler 根证书在受信任列表。如果之前误点过「不再提示」,需要手动在 Fiddler 里重置证书(Actions → Reset All Certificates)再重装。

5.5 现象:某批组件装到一半失败,重试仍失败

多半是镜像站该时段不稳定或本地缓存了半截文件。解决:先换另一个镜像源(改规则里的 Host 和 Path),再重试这一批;如果还不行,清掉 QT 安装目录下对应组件的临时下载缓存,重新走 MaintenanceTool。别在同一个源上反复硬试,换源往往一次就过。

6. 装完怎么验证:三步确认这套环境真的能跑

装完不等于装对,我一般用三步验证,从「装上了」到「能编译」逐层确认。第一步看目录和组件清单:打开 QT 安装目录,确认5.15.0下有你选的编译套件文件夹(如mingw81_64或msvc2019_64),Tools下有对应的编译器和 Qt Creator。第二步用 MaintenanceTool 核对:启动它进入组件管理,已装组件应全部显示选中,没有「部分安装」的异常状态。

第三步是真正跑一次编译,这是最硬的验证。新建一个最小 Qt Widgets 工程,用 Qt Creator 打开,选对 Kit,直接构建运行。

# 命令行验证:用 qmake + make 编译一个最小工程(MinGW 环境示例) # 1. 把 QT 的 bin 目录加入当前终端 PATH set PATH=C:\Qt\5.15.0\mingw81_64\bin;C:\Qt\Tools\mingw810_64\bin;%PATH% # 2. 确认 qmake 版本,应输出 5.15.0 qmake -v # 3. 在工程目录下生成 Makefile 并编译 qmake hello.pro mingw32-make -j4 # 4. 运行产物,能弹出窗口即链路完整 release\hello.exe

qmake -v输出里版本号必须是 5.15.0,如果显示别的版本,说明 PATH 里混进了旧 QT,这是多版本共存机器上的高频问题。mingw32-make -j4的-j4是并行编译数,按 CPU 核数调,编译报错时先降到-j1看完整错误。最后能弹出窗口,说明编译器、QT 库、运行库三者都对上了,这套安装才算真正跑通。

从那以后我每次装 QT,不管在线还是离线,都强制走一遍「qmake -v + 最小工程编译」这两步,绝不靠安装器显示「完成」就下结论。安装器说完成但 Kit 配错、编译器缺失的情况我遇到过不止一次,早验证早发现,比写完一屏代码再回头查环境省太多时间。这套 Fiddler 改写加分批安装的路子,核心就一句话:连得上靠镜像,装得完靠分批,装得对靠编译验证。希望帮到你。

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

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

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

立即咨询