从零开始
目录

02 · 操作系统 · Windows

用 winget 安装软件

本篇你将学到

  • winget 是什么,电脑上有没有
  • 五个常用动作:搜索、查看、安装、升级、卸载
  • 为什么要用 --id 和 -e
  • 软件从哪来(winget 源和 msstore 源),怎么装得放心

winget 是什么:装软件的“外卖平台”

平时装软件要自己找官网、找下载按钮、一路点“下一步”,还容易点进山寨下载站。winget(全称 Windows 程序包管理器,Windows Package Manager)换了个办法:你在命令行里说出软件的名字,它去软件目录里查,再帮你下载、安装、升级、卸载[1]。

就像点外卖:不用自己跑去每家店,在一个平台上搜、下单,送上门。这类工具统称包管理器。Mac 上的 Homebrew、Linux 上的 apt 也是同一个思路,要在命令行里用(命令行的基础见 02-06)。

电脑上有没有

winget 是“应用安装程序”(App Installer)的一部分。Windows 11、较新的 Windows 10 都自带它,由 Microsoft Store 负责送达和更新[1]。Windows 10 要 1809 版(内部版本 17763)或更新的版本才支持[1]。

检查方法:打开 PowerShell 或 Windows 终端,输入:

winget --version

显示版本号就说明能用。几点要知道:

  • 新电脑第一次登录后,Windows 要在后台花点时间注册 winget,刚登录时可能暂时用不了[1],等一会儿再试。
  • 提示找不到 winget,可能是“应用安装程序”没装,去 Microsoft Store 搜索“应用安装程序”安装或更新[1]。
  • 不用管理员模式也能用。有的软件安装时需要管理员权限,Windows 会弹窗请你确认;点“否”的话这个软件就装不上[1]。在管理员窗口里运行 winget 就不会弹窗,所以更要当心,只装你信任的软件[1]。

五个常用动作

想做什么 命令 说明
找软件 winget search 关键词 在名称、ID、描述、简称、标签里找[2]
看详情 winget show --id 软件ID 显示版本、发布者、来源等[3]
安装 winget install --id 软件ID -e 下载并运行安装程序[4]
看装了什么 winget list 不是用 winget 装的软件也会列出来[5]
升级 winget upgrade / winget upgrade --all 先看有什么可升级,再全部升级[6]
卸载 winget uninstall --id 软件ID -e 卸载指定软件[7]

一个典型流程,以压缩软件 7-Zip 为例:

winget search 7zip                    # 1. 搜,记下表里的 ID
winget show --id 7zip.7zip -e         # 2. 核对发布者、主页
winget install --id 7zip.7zip -e      # 3. 安装

–id 和 -e:说清楚要哪一个

winget install 后面直接写名字也行,但 winget 默认做的是模糊匹配:不分大小写,名称、ID、简称里包含这几个字就算匹配,也不支持 * 这种通配符[4]。比如 winget install firefox 会同时匹配到普通版、延长支持版、开发者版……匹配到不止一个时,winget 会让你把条件写得更具体[4],不会替你猜。

所以推荐的写法是:

  • --id 软件ID:只按 ID 找[4]。ID 一般是“发布者.软件名”,比如 Mozilla.Firefox;
  • -e(--exact):精确匹配,一个字母都不能差,并且区分大小写[4]。

先用 search 查到 ID,再用 --id ID -e 安装、卸载,就不会装错。

软件从哪来:winget 源和 msstore 源

winget 去哪里查软件,由源(source)决定。默认有三个,用 winget source list 可以看到[8]:

  • winget:社区软件仓库,大部分常见软件都在这里;
  • msstore:Microsoft Store 应用商店;
  • winget-font:字体专用的社区仓库[8]。

同一个软件可能两个源里都有,ID 写法不一样。想只从某个源装,加 --source(简写 -s),比如 winget install --id 7zip.7zip -e --source winget[4]。用 winget 卸载时有时会弹出 Microsoft Store 的协议提示,加上 --source winget 可以避开[7]。

怎么装得放心

  • 只用官方的源。往 winget 社区仓库提交的软件,会先经过自动检查,确认符合政策、没有已知的恶意内容,必要时还会人工审核[9]。网上教程让你 winget source add 一个不认识的源,先别加。
  • 装之前看一眼发布者。winget show 会显示发布者和主页[3]。名字很像、发布者却对不上的,别装。
  • 用 --id … -e,不靠模糊的名字。
  • 少用管理员窗口:装软件时 Windows 弹窗问“是否允许更改设备”,看清是不是你要装的软件再点“是”[1]。

一次把软件都升级

winget upgrade          # 只列出有新版本的软件,不会真的升级
winget upgrade --all    # 把能升级的全部升级

微软建议先运行不带参数的 winget upgrade,看看哪些会被升级,再用 --all[6]。有些软件不提供版本号,winget 不知道它有没有新版,就没法帮它升级[6]。

可选:换电脑时一键装回

  • winget export -o apps.json:把装过的软件清单导出成一个 JSON 文件[10];
  • winget import -i apps.json:在新电脑上照着清单批量安装[11]。

在源里找不到对应项的软件导不出来,导出时 winget 会给出警告[10]。

动手模拟

在模拟的 PowerShell 里走一遍:搜索 → 看详情 → 安装 → 升级 → 卸载。软件列表、版本号都是练习用的;其中“7-Zip Plus”是虚构的,用来练习核对发布者。

模拟实操 · 用 winget 装软件纯模拟,命令不会真的执行

    可以直接打字,也可以点上面的命令按钮把命令填进去,再按回车(或点“运行”)。↑ 键翻出上一条命令。输入 help 看看支持哪些命令。

    小结

    • winget 是 Windows 自带的包管理器,在“应用安装程序”里,用 winget --version 检查。
    • 流程:search 找 ID → show 核对发布者 → install --id ID -e。
    • winget upgrade 先看,winget upgrade --all 全部升级;uninstall 卸载。
    • 只用官方源,不认识的源和软件不装。

    下一篇讲环境变量与 PATH:为什么有时候明明装了程序,命令行却说“找不到”。

    参考资料

    1. [1]Use WinGet to install and manage applications · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/
    2. [2]search command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/search
    3. [3]show command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/show
    4. [4]install command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/install
    5. [5]list command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/list
    6. [6]upgrade command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/upgrade
    7. [7]uninstall command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/uninstall
    8. [8]source command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/source
    9. [9]Submit your manifest to the repository · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/package/repository
    10. [10]export command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/export
    11. [11]import command (winget) · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/package-manager/winget/import