- Winget 是 Windows 官方的套件管理器,可讓您從命令列安裝、更新和解除安裝應用程式。
- 該工具整合了 Microsoft Store、社群儲存庫和私人來源,並支援多種安裝程式格式。
- 它允許您在企業環境中使用 YAML 設定檔、PowerShell 腳本和群組原則來自動化整個團隊。
- 它包含高級功能,例如無需安裝即可下載、清單驗證、版本 PIN 碼以及豐富的安全性和註冊選項。
如果你每天都使用 Windows 系統,並且花費大量時間安裝、更新或卸載程序,那麼學習如何從終端使用 Winget可以為你節省大量時間。這款微軟官方的軟體套件管理器為 Windows 帶來了與 GNU/Linux 發行版使用 apt 或 dnf 非常相似的工作方式,但無需安裝第三方工具。
使用 Winget,您只需輸入命令即可搜尋、安裝、更新、卸載和配置應用程序,還可以使用腳本或設定檔自動完成 PC 的全部設定。無論您是家庭用戶、開發人員還是系統管理員,我們都將詳細了解它的工作原理、可用命令以及如何充分利用它。
Winget是什麼? Windows套件管理器是如何運作的?
Winget 是Windows 套件管理員的命令列工具。它是一個客戶端,可以連接到各種來源(Microsoft Store、Winget 社群儲存庫和私人儲存庫)來尋找安裝程式、下載安裝程式並執行受控且可重複的安裝。
實際上,winget 由多個元素組成,這些元素共同協作來管理系統上的軟體,因此使用者可見的核心是 winget 命令,但在幕後,有服務和清單來描述每個軟體包。
完整的 Windows 套件管理器解決方案包含三個主要部分,區分這三個部分對於理解整個生態系統至關重要:
- Winget 用戶端:是您在 PowerShell、終端機或命令提示字元中用來啟動類似命令的控制台執行檔。
winget installowinget upgrade. - 包裝和倉儲服務微軟在 GitHub 上維護一個清單社群儲存庫,並與 Microsoft Store 集成,以便在 Windows 電腦上託管和分發應用程式。
- Winget設定檔這些是描述電腦「期望狀態」(應用程式、設定、腳本)的 YAML 文件,允許 使用一條指令配置整個設備.
其理念是,您可以定義所需的軟體和配置,而軟體套件管理器將自動負責安裝、更新和維護所有內容,從而最大限度地減少人為錯誤和機器之間的差異。
在 Windows 10、Windows 11 和 Windows Server 上安裝 Winget
在大多數現代設備上,Winget 可以直接使用,因為它已整合到… 應用程式安裝程式 它透過 Windows 10 和 Windows 11 中的 Microsoft Store 分發,並透過 Windows Server 2025 的更新分發。只需打開終端機並輸入即可。 winget 檢查是否可用。
如果在執行命令時看到選項清單和用戶端版本,則表示您已正確安裝 Windows 套件管理員。否則,您可以前往 Microsoft Store,搜尋“App Installer”,然後更新或安裝該套件。
安裝 winget 預覽版(針對開發者)
如果您想搶先體驗 Winget 的新功能,微軟提供了預覽版。這些預覽版主要針對開發人員和高級用戶,他們不介意偶爾遇到一些 bug。
取得客戶端預覽通常有兩種方式:
- 手動從 GitHub 上的 winget 倉庫下載預覽版軟體包, 安裝此客戶端以暫時取代穩定客戶端。您將不會收到商店後續預覽的自動更新;當有新預覽發佈時,您必須重複此過程。
- 加入 Windows Insider程序 使用 Microsoft 帳戶、工作帳戶、學校帳戶或 Entra ID(以前稱為 AAD)在 Canary 或 Dev 頻道上進行部署。在這些頻道上,建置會自動包含 Winget 更新來自 Microsoft Store 包含最新的實驗性功能。
在 Windows 沙盒(隔離空間)中安裝 Winget
Windows Sandbox 是一個輕量級、一次性的桌面環境,您可以在其中運行應用程序,而無需依賴主系統。關閉沙盒後,您在沙盒中安裝的所有內容都會遺失,因此它非常適合用於測試。
這個環境沒有預先安裝 Microsoft Store 或 Winget,所以你需要自己安裝。 手動安裝客戶端微軟建議使用 PowerShell 模組 Microsoft.WinGet.Client 以及 cmdlet Repair-WinGetPackageManager 在沙盒中「啟動」winget。
在沙盒環境的 PowerShell 控制台中,您可以使用類似這樣的腳本(已進行調整和格式化)將穩定版本部署到環境中的所有使用者:
$progressPreference = 'silentlyContinue'
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-Null
Repair-WinGetPackageManager -AllUsers
如有需要,此模組也可以透過以下方式安裝: 使用者或機器範圍 使用參數 -Scope AllUsers en Install-Module您可以新增 -IncludePrerelease a Repair-WinGetPackageManager 測試預覽版本。
重要的許可和行政注意事項
使用 Winget 進行安裝時,其行為會因您是以管理員權限還是普通使用者身分執行命令而有所不同。如果您管理多台電腦或希望自動化某些流程,這一點至關重要。
如果您在未獲得管理員權限的情況下啟動 Winget,某些應用程式需要管理員權限才能安裝。在這種情況下,Windows 將顯示使用者帳戶控制 (UAC) 提示,要求您確認。如果您拒絕提升權限,則該特定軟體套件的安裝或更新將會失敗。
如果您以管理員身分開啟 PowerShell 或命令提示字元並執行 `winget`,則需要提升權限的安裝程式將不會顯示使用者帳戶控制 (UAC) 提示,因為上下文已提升。這很方便,但也意味著您必須非常謹慎,並且只安裝受信任的軟體,尤其是在企業環境中。
在混合場景(必須在使用者層級執行的程式與必須在機器層級執行的程式)中,通常會以使用者和管理員身分組合執行 winget,或使用群組原則來強制執行某些行為並減少警告。
Winget 的基本用法:必備的初始指令
一旦您的 App Installer 更新到最新版本,使用 winget 就非常簡單了: 開啟 PowerShell、Windows 終端機或 CMD 並寫 winget您將看到已安裝的版本、概述和可用命令清單。
典型的工作流程幾乎總是從搜尋開始,然後安裝你感興趣的應用程式。基本步驟大致如下:
- 搜索應用程序:
winget search <nombre_de_app> - 請核對所需軟體包的名稱、識別碼和來源。
- 安裝:
winget install <nombre_o_id>
在安裝過程中,winget會下載適合您架構和原始程式碼的正確安裝程序,並使用適當的參數啟動它(通常以靜默模式或最小化交互模式運行),並在最後告知您一切是否順利。
如果您想查看系統上已有的應用程序,可以啟動它。 winget list 因此, 已安裝軟體包及其版本列表此命令對於檢查哪些內容可以更新以及 Winget 可以識別哪些內容非常有用,即使這些內容最初並非使用此工具安裝的內容。
完整的主要winget命令列表
客戶端支援一系列特定命令,旨在涵蓋應用程式的整個生命週期和配置。目前,最重要的通用命令包括:
| 命令 | 描述 |
|---|---|
install |
安裝 該應用程式來自已配置的來源。 |
show |
樣例 詳細信息 軟體包的(編輯器、版本、來源等)。 |
source |
它允許 新增、刪除或更新 軟體包倉庫。 |
search |
做一個 搜索 已配置來源中的應用程式。 |
list |
顯示 已安裝軟件包的列表 由winget識別。 |
upgrade |
更新 特定應用程式或所有有新版本的應用程式。 |
uninstall |
卸載數量 一個具體的應用。 |
hash |
計算 SHA256 哈希 來自安裝人員。 |
validate |
檢查 宣言的有效性 在將其發送到社區代碼庫之前。 |
settings |
開啟並允許編輯文件 翼配置. |
features |
它顯示了以下狀態: 實驗功能. |
export |
出口 將已安裝軟體包清單儲存到檔案中。 |
import |
大量安裝 匯出文件中列出的所有軟體包。 |
pin |
它允許 錨版本 對軟體包進行調整,使其不再更新到某個特定版本。 |
configure |
運行檔案 聲明式配置 使系統保持在所需狀態。 |
download |
下載安裝程式 無需運行應用程式即可運行它們。 |
repair |
嘗試 reparar 設施存在問題。 |
dscv3 |
與…相關的命令 PowerShell DSC v3 以及所需的配置資源。 |
全域選項和最常用參數
幾乎所有 Winget 命令都接受全域選項來修改其行為,例如顯示更多資訊、控制代理程式或抑制警告。其中一些最相關的選項包括:
| 選項 | Función |
|---|---|
-v, --version |
顯示 目前版本的winget客戶端. |
--info |
傳回詳細的安裝資訊(許可證、隱私、群組原則等)。 |
-?, --help |
提出了 具體幫助 命令。 |
--wait |
製作小翼 等待鑰匙 退出前,在臨時視窗中執行程式時很有用。 |
--logs, --open-logs |
打開預設資料夾,該資料夾位於 winget日誌. |
--verbose, --verbose-logs |
激活一個 詳細記錄 用於調試。 |
--nowarn, --ignore-warnings |
隱藏 警告信息. |
--disable-interactivity |
嘗試停用 所有互動式請求 用於自動化操作。 |
--proxy |
設置 HTTP/HTTPS代理 將在執行過程中使用。 |
--no-proxy |
強制一翼 請勿使用代理。 即使系統已經配置好了。 |
主要實用功能:搜尋、安裝、清單和更新
在日常使用中,Winget 主要用於一些非常直接的命令,使用戶無需手動操作安裝程序即可管理應用程序,就像在 Linux 中使用軟體包管理器一樣。
為了找到可用的軟體,您可以利用以下資源。 winget search <texto>回傳一個列表 名稱、識別碼、版本和來源 與搜尋條件相符的結果。此清單還可以幫助您確定要安裝的軟體包的確切 ID。
要查看您已安裝的程序,只需運行 winget list該命令會顯示 Winget 識別的所有應用程序,無論它們是否使用該工具安裝,並允許您執行以下操作: 檢測需要更新的舊版本.
標準安裝是透過以下方式完成的: winget install NOMBRE_APP 或者更好的是,使用 包裹 ID例如: winget install Microsoft.VisualStudioCode如果安裝需要互動(接受最終使用者授權協議、選擇選項等),通常會盡可能以簡化或靜默模式進行。
有時,安裝程序會暫停安裝過程,要求您接受許可協議或確認螢幕上的某些內容。為了確保從頭到尾順利完成安裝而無需提示,您可以使用以下參數: --silent y --accept-package-agreements --accept-source-agreements, 以便 您將強制接受協議並移除不必要的視窗。.
為了保持系統最新,winget 提供了多種軟體更新方式。該命令 winget upgrade 無需贅言,它就會顯示 所有應用程式的新版本已發布而 winget upgrade NOMBRE_APP 只會更新特定軟體包。
如果您喜歡一次完成所有操作, winget upgrade --all 它會嘗試更新所有已有更新版本的軟體包。這就涉及到權限問題了:如果您以使用者身分執行它, 對於每項需要吊運的安裝工程,都將發出UAC通知。如果以管理員身分執行此操作,則無需顯示對話方塊即可進行管理。
最後,卸載也非常容易。 winget uninstall NOMBRE_APP而且你甚至可以 在同一命令列中包含多個應用程式 只要 winget 在系統中辨識出它們,它們就會一個接一個地移除。
不太為人所知但非常有用的命令
除了基本命令外,winget 還包含許多快速指南中未提及的幾個功能,這些功能在處理多個軟體包或需要避免識別錯誤時非常實用。
命令 winget show NOMBRE_APP 它用來看 安裝軟體包之前需要了解其所有詳細資訊。:發布者、特定版本、ID、來源、安裝程式類型,有時甚至包括官方連結。您也可以按標識符進行篩選。 winget show --id ID_PAQUETE 選擇穩妥的辦法。
如果您擔心安裝程式會因為等待您接受許可協議而停滯不前,您可以新增以下參數。 --accept-package-agreements y --accept-source-agreements a winget install 這樣 法律條款將自動接受。 沒有對話框。
將這些選項與 --silent例如 winget install NOMBRE_APP --accept-package-agreements --accept-source-agreements --silent你會得到 完全無人看管的設施在部署腳本中非常有用,或者當您想讓電腦在您做其他事情時保持運作。
winget 下載指令:下載安裝程式而無需安裝
在某些情況下,您可能想要下載應用程式安裝程序,但暫時不要執行它們:例如,將它們移至離線電腦、準備本機儲存庫或在安裝之前手動查看內容。
這就是該命令的作用。 winget download其基本用途是 winget download [[-q] <query>] [<options>]它支援按 ID、名稱或別名進行通用查詢和篩選,並下載與您的選擇對應的安裝程式(或多個安裝程式)。
如果軟體包來自 Microsoft Store 且為打包應用程式(MSIX、APPX、捆綁包等),`winget` 指令也可以下載關聯的授權檔案。在這種情況下,該命令需要使用 Entra ID 進行身份驗證,且帳戶必須具有全域管理員、使用者管理員或授權管理員等角色,才能離線產生和檢索該授權檔案。
如果您想避免處理離線許可證,可以使用該參數。 --skip-license o --skip-microsoft-store-package-license所以 winget 只需下載安裝程序,無需嘗試取得許可證文件。.
該命令還允許按平台或架構進行篩選。 --platform 您可以選擇以下值: Windows.Desktop, Windows.Universal o Windows.Holographic 為 限制下載範圍,僅限特定類型的裝置。.
同樣地, --architecture 你可以指出 x86、x64、ARM 或 ARM64 僅選擇適用於目標 CPU 的安裝程式。如果您要將這些檔案移至架構不同的其他計算機,這將特別有用。
最常見的選擇之一是 winget download 脫穎而出:
-d, --download-directory:下載的安裝程式將儲存到的資料夾。-m, --manifest: 指向描述應下載內容的 YAML 清單的路徑。--id,--name,--moniker:篩選器,將結果限制在特定軟體包內。-v, --version:如果您不想下載最新版本,請提供要下載的確切版本。-s, --source:將操作限制在特定來源。--scope,--installer-type,--locale,--skip-dependencies進階選項,可詳細控制下載內容。
一些實際例子如下:
winget download --id Microsoft.PowerToys --version 0.15.2
winget download --id Microsoft.WingetCreate --installer-type msix
winget download --id Microsoft.PowerToys --scope machine --architecture x64 --download-directory C:\Instaladores
與 Winget 相容的安裝程式格式
為了與數千個應用程式保持一致,winget 可以識別許多常見的 Windows 安裝程式類型,包括現代打包安裝程式和經典安裝程式。
目前支援的格式包括:
- 執行檔 EXE 採用靜默安裝參數(無聲 o SilentWithProgress).
- 記錄 ZIP 以便攜模式部署。
- 安裝人員 Inno設置.
- 安裝人員 Nullsoft (NSIS).
- 套餐 MSI y WIX.
- 打包的應用 APPX y 微星.
- 安裝程式類型 燒傷.
- 應用 手提 (無需傳統安裝,直接執行可執行檔)。
由於此,winget 可以管理現代應用商店應用程式和傳統桌面程序,前提是它們的清單在相應的儲存庫中正確定義。
使用 WinGet 和 PowerShell 進行腳本編寫和自動化
如果您喜歡自動化任務或管理多個團隊,可以將 Winget 與 PowerShell 和宣告式腳本為此,微軟正在發布該模組。 Microsoft.WinGet.Client 在 PowerShell Gallery 中,它公開了用於與服務互動的特定 cmdlet。
使用此模組,您可以建立使用純 PowerShell安裝、更新或修復軟體包的腳本,將 winget 整合到 CI/CD 管道中,或將其整合到用於配置新機器的腳本中。
此外,還有與該命令關聯的 YAML 設定檔。 winget configure 允許您在單一文件中描述:
- 前提條件(斷言)最低系統需求為 Windows 版本。
- 資源其中包括要安裝的軟體包、要執行的腳本、系統設定等。
簡化的設定範例可能包含一個斷言部分(用於設定最低 Windows 10 版本需求)和一個資源部分(包含 Visual Studio Code、Google Chrome 和一個用於準備其他模組的 PowerShell 腳本)。有了 YAML 檔案後,只需運行:
winget configure --file ruta\a\winget.yaml
這樣一來,只需一條命令,即可讓電腦每次都保留相同的應用程式和設置,非常適合企業環境、教室、實驗室或格式化後的個人電腦。
新增儲存庫並使用自訂來源
預設情況下,Winget 使用Microsoft Store和 GitHub 上維護的社群儲存庫作為其主要來源。但是,您也可以新增其他儲存庫來擴充目錄或使用您組織的內部軟體包。
許多企業環境會建立自己的 REST 來源,其中包含企業應用程式的清單,以便使用者可以使用 winget 安裝它們,就像安裝公共軟體包一樣,但可以控製版本、授權和分發。
若要新增字體,請以管理員身分開啟 PowerShell,並執行下列命令:
winget source add --name MiRepositorio --arg https://url.de.mi.repo/api
該命令還支援其他選項,例如 --type (來源類型,通常為 REST) --trust-level (例如 信任 o 沒有)和 --accept-source-agreements,適用於 自動接受該儲存庫的協議 無需手動確認。
要驗證來源是否已正確添加,您可以使用 winget source list 並查看已註冊的來源清單。您也可以在不再需要時更新或刪除來源。
Winget 適用於開發者、獨立軟體開發商和企業
雖然任何用戶都可以從 winget 中受益,但它在需要標準化安裝和工作環境的開發人員、軟體製造商和 IT 管理員手中真正發揮了作用。
開發者可以在一個檔案中描述他們的基本工具(編輯器、SDK、編譯器、各種實用程式),然後讓 Windows 套件管理器負責正確安裝所有依賴項,不會遺漏任何依賴項,也不會導致不同機器之間的版本不一致。
軟體供應商(ISV)可以存取 GitHub 上的 Winget 社群程式碼庫,並在其中上傳應用程式清單,以便該工具將其包含在預設來源中。軟體包會自動進行驗證,也可以進行人工審核以確保其品質。
在企業環境中,Winget 簡化了安全性和 IT 團隊的任務,因為它可以與Microsoft Intune 和群組策略結合使用,以強制執行嚴格的策略,控制安裝的內容、來源和條件,從而降低風險並保持一致的更新和強化水平。
安全性、憑證錨定和群組原則
Winget、Microsoft Store 和其他 REST 來源之間的連線受到憑證檢查和安全機制的保護,以防止中間人 (MITM) 攻擊和憑證或資料被盜。
以微軟商店為例,有一項名為…的政策 BypassCertificatePinningForMicrosoftStore 這 檢查 Winget 是否驗證了儲存憑證雜湊值 對照已知證書清單進行驗證。當組織使用具有 SSL 偵測功能的防火牆時,這一點至關重要,因為防火牆可能會幹擾驗證過程。
本保單包含以下選項:
- 無需配置(預設)winget 遵循標準的軟體包管理器設定並檢查應用程式商店憑證。
- 啟用省略了 Microsoft Store 憑證驗證,這在某些 SSL 偵測場景中可能是必要的,但是 中間人攻擊的風險增加。.
- 禁用Winget 必須先驗證憑證是否真的屬於憑證儲存區,然後才能建立連線。
憑證綁定是一層額外的安全措施,可確保 Winget 用戶端和 Microsoft Store 之間的通訊不易被攔截或篡改。從安全角度來看,無故停用憑證綁定並非明智之舉。
除了上述策略之外,每個版本的 Windows 11 都包含用於 Winget 的特定 ADMX/ADML 模板,這些模板擴充了群組原則管理主控台 (GPMC) 中的設定選項。這些範本按類別組織,例如允許的原始程式碼控制、本地開發(實驗性功能、本機清單)以及代理執行和使用策略。
要使用這些模板,您可以從 GitHub 下載檔案。 DesktopAppInstallerPolicies.zip 根據您所需的 Winget 版本,解壓縮並複製文件。 .admx y .adml 到標準路線 C:\Windows\PolicyDefinitions 及其語言子資料夾。之後,新選項將出現在 GPMC 中,您將能夠… 將它們套用至組織單元 (OU)、網站或整個網域.
調試、日誌記錄和發送新包
當出現問題時(下載失敗、安裝未完成、版本衝突),winget 會產生詳細的日誌,這對於尋找問題的根源非常有用。
您可以使用該選項開啟日誌資料夾。 --open-logs 或啟用設定 --verbose-logs 這樣,該工具就能保存更多關於每次操作的資訊。官方儲存庫 winget-cli 它還保持著一個 常見問題清單及推薦解決方案因此,在提出新問題之前,最好先查看一下。
如果目錄中缺少某個程序,您可以隨時建立並向社區倉庫提交清單檔案。這樣,不僅您可以自己使用該程序,其他使用者和組織也可以透過 Winget 輕鬆安裝它。
該工具本身是開源的,位於程式碼倉庫中。 microsoft/winget-cli它使用 C++ 編寫,並設計為使用 Visual Studio 2022 編譯。如果您想貢獻程式碼,您需要… 接受並簽署貢獻者許可協議(CLA) 從微軟倉庫推送更改,並將更改從你的分支推送過來。
最終,了解並掌握 Winget 可以讓您將 Windows PC 視為「伺服器」或嚴肅的開發系統:一切皆可腳本化,一切皆可復現,並且可以精細控制安裝的內容和方式,從而避免不必要的點擊和意外情況,例如版本不匹配或程序不知其來源。