QT使用代理在线安装的方法

发布于 · 最后修改时间

QT 离线安装包对于把 Android 编译和 MSVC 编译混在一起搞,非常麻烦。而官方给的 MaintenanceTool.exe 有问题,没法用来增加额外的安装包,所以就必须使用在线安装。

而关于在线安装。官方给出的一个完整的包地址,里头的 URL 竟然是绝对路径而且还带 SHA1 校验了。

所以如果你用第三方镜像,会导致解析下载下来的 XML 文件后最后还是由于绝对路径跑到官方的站点下下载,而如果你自己篡改 XML 文件转发到镜像站点,就会发现各种莫名奇妙的问题,什么插件、依赖找不到之类的。

解决办法:

1. 修改系统 host 文件:

127.0.0.1 download.qt.io

download.qt.io这个域名不能在 XML 文件改变,那就把这个域名的控制器拿到手

2. 然后使用 nginx,加入配置:


    server{
        listen      80;
        server_name download.qt.io;
        location / {
            proxy_pass http://mirror.bit.edu.cn/qtproject/;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Cookie $http_cookie;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header X-Remote-IP $remote_addr;
        }
    }

转发download.qt.io到所需的镜像站点。

3. 打开 QT 在线安装程序,自定义库地址:http://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/
官方的默认的是https协议,所以用http还是不同的,程序接受。

补充:在检索阶段,把 host 文件的 download.qt.io 给注释掉,否则可能会检索不通过,等检索通过后,开始进入下载页面了,再把 host 文件的 download.qt.io 的转发给开启起来。如果已经开始在下载了,那么那几个文件的数据包会因为走 qt 官方的镜像而速度很慢,不要慌,把网络关掉,qt 下载器会报错说连接断开,这时候再把网络连接上去,点击下载器的 retry 按钮,这时候重新解析 dns,就会开始走国内镜像的渠道了。