將PowerShell從版本5.1升級到7,以解決谷歌gclient下載CIPD client時報錯的問題


用源碼編譯Chromium或者PDFium時,需要下載谷歌depot_tools,然后運行gclient。

國內用gclient在下載CIPD client時很容易連不上服務器,錯誤如下:

Downloading CIPD client for windows-amd64 from https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:8e9b0c80860d00dfe951f7ea37d74e210d376c13...
Failed to download the file, check your network connection, 使用“2”個參數調用“DownloadFile”時發生異常:“無法連接到遠程服
務器”

錯誤原因眾所周知。需要設置代理。老的帖子一般是介紹用netsh命令設置winhttp proxy,或者設置http_proxy、https_proxy環境變量,還有直接修改depot_tools\.cipd_impl.ps1中的PowerShell腳本,增加調用WebClient庫時先設置代理的代碼。

我在Win11上設置了winhttp proxy,也設置了http_proxy、https_proxy環境變量,依舊不靈光。研究了一下,發現Win11自帶的PowerShell版本是5.1,而根據微軟的文檔,PowerShell 7對http_proxy、https_proxy環境變量的支持是沒問題的,那就把Windows自帶的PowerShell 5.1升級到7好了。

在微軟官網下載PowerShell 7的msi安裝包,裝好后,設置PATH=C:\Program Files\PowerShell\7;%PATH%。

PowerShell 5.1的主程序是powershell.exe,而PowerShell 7的主程序是pwsh.exe。所以需要修改一下腳本depot_tools\cipd.bat的內容,把其中調用powershell的地方(就一處),改為調用pwsh。

然后設置http_proxy、https_proxy環境變量:

set HTTP_PROXY=http://127.0.0.1:8118
set HTTPS_PROXY=http://127.0.0.1:8118

之后再執行gclient,就沒問題了。

 

參考:

微軟關於PowerShell的各個版本對HTTP_PROXY、HTTPS_PROXY環境變量的支持的說明:

https://docs.microsoft.com/en-us/powershell/azure/az-powershell-proxy?view=azps-7.3.2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM