對 WinGet 工具的問題進行偵錯和疑難排解
如果 WinGet 似乎未正確安裝,請遵循 PowerShell 命令提示字元中的下列步驟:
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-Null
Repair-WinGetPackageManager -Force -Latest
當 WinGet 命令失敗時,有時必須查看記錄檔,以進一步了解行為。
WinGet 記錄
Windows 封裝管理員預設會在執行命令時建立記錄檔。 這些記錄包含有助於偵錯 WinGet 問題的資訊。 記錄檔沒有大小上限。 它們的大小通常只有幾 KB。 當目錄中的記錄檔數目超過 100 時,系統會開始刪除最舊的記錄檔。 沒有以時間為基礎的記錄移除,所以無法設定這些設定。 如果您已達到 100 個檔案記錄容量,只要將您想要保留的任何 WinGet 記錄移至不同的目錄即可。
使用命令 winget --info
來尋找 WinGet 記錄檔的目錄路徑。 WinGet 記錄檔的預設路徑為:
%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
您可以將 --logs 或 --open-logs 選項包含在任何命令中,以在命令完成之後開啟記錄目錄。 以下是使用 --logs 選項的一些範例:
> winget list --logs
> winget source update --open-logs
--verbose-logs
如果您需要更完整的記錄檔,以提供與 CDN 和來源的完整通訊,請同時在命令列中包含 --verbose 或 --verbose-logs。 以下是使用 --verbose-logs 選項的一些範例:
> winget install vscode --verbose-logs
> winget search -n visual --verbose-logs
> winget source add -n mysource -t Microsoft.REST -a https://www.contoso.org --verbose
已知問題
在 Windows 封裝管理員用戶端存放庫中,來源和行為的已知問題清單會保持在最新狀態。 如果您在使用 WinGet 工具時遇到問題,請前往這裡進行疑難排解。
結束代碼
WinGet 工具會傳回結束代碼,指出命令是成功或失敗。 在 Windows 封裝管理員用戶端存放庫的「傳回碼」檔案中尋找結束代碼及其意義的表格。
特定使用者與整部電腦的範圍
並非所有安裝程式都支援在「使用者」範圍與「電腦」範圍中進行一致地安裝。
- MSIX 型封裝:可靠的 WinGet 行為。
- MSI 型封裝通常支援可靠的 WinGet 設定,但在某些情況下,會巢狀在 .exe 型的安裝程式內,因此可能會有更多的變化。
- EXE 型安裝程式的行為在範圍方面不一定是確定性的。 在某些情況下,用來指定範圍的引數會無法使用,在其他情況下,安裝程式可能會根據使用者是否為本機系統管理員群組的成員來進行判斷。 安裝在使用者範圍中的封裝可能仍然需要系統管理員的 UAC (使用者帳戶控制) 授權。
如需詳細資訊,請參閱 GitHub 上 WinGet 產品存放庫中的範圍相關問題。
403 禁止錯誤
嘗試使用 WinGet 工具下載套件時,可能會發生 403 禁止錯誤。 如果獨立軟體廠商 (ISV) 選擇沒有 WinGet 等套件管理員服務所散發的產品,就可能發生此問題。
伺服器負責起始下載通常會檢查下載要求隨附的使用者代理程式字串,以識別裝置或用戶端(例如瀏覽器、WinGet)。 如果您可以使用瀏覽器下載安裝程式,但遇到 WinGet 的問題,ISV 可能會封鎖 WinGet 使用者代理程式字串。
WinGet 的使用者代理程式字串具有下列格式:
winget-cli WindowsPackageManager/{Client Version} DesktopAppInstaller/Microsoft.DesktopAppInstaller {AppInstaller Version}
範例:
winget-cli WindowsPackageManager/1.9.25200 DesktopAppInstaller/Microsoft.DesktopAppInstaller v1.24.25200.0