# winget：把 Windows 开发环境变成可重复清单

> 用 winget 搜索、安装、升级和导出 Windows 包，建立可重复清单，并避开供应链陷阱。

**测试环境**

- 版本号: 26300.9457
- 版本: Pro (26H2)
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-28

## 一句话结论

`winget` 是 Windows 包管理器。它从配置的源（通常是 `winget` 和 `msstore`）按包 ID 安装。适合**可重复的开发者工具**，不适合盗版软件或随机脚本。

真正有用的流程：

1. `winget search` 找准确 ID；
2. `winget install --id ... -e` 装指定包；
3. `winget export` 记录现有环境；
4. 新机 `winget import`；
5. 信任旧清单前重新核对 ID/版本。

## 检查

```powershell
winget --version
winget source list
```

没有 `winget` 就从 Microsoft Store 装 **应用安装程序**。Windows Server 上支持更有限，查当前文档。

## 安装与升级

```powershell
winget search powershell
winget install --id Microsoft.PowerShell -e
winget upgrade --id Microsoft.PowerShell -e
winget upgrade --all
```

- `-e` 是精确 ID，避免装到名字相近的包。
- `--scope machine` 在包支持时装给所有用户；否则可能是当前用户。
- `--silent` / `--accept-package-agreements` 方便自动化；看清你接受了什么。
- `winget list` 看已装；`winget upgrade` 看可升级。

## 导出与导入

```powershell
winget export -o C:\dev\packages.json
winget import -i C:\dev\packages.json
```

导出的是包 ID 和源名，不是安装包。新机导入前：

- 先审查 JSON；
- 删掉不再用的包；
- 检查是否需要特定 scope/版本；
- 不要导入不可信仓库的清单。

更复杂的配置用 `winget configure`（DSC）。它很强，也容易过度应用；从小文件开始，应用前读计划。

## 安全规则

- 优先官方 `winget`/`msstore` 源。
- 核对包 ID 和发布者；相似名字可能是另一个产品。
- 不要为了一个应用加随机第三方源。
- 不要用 winget 装破解/盗版软件。
- 导入清单当代码看：它会改你的机器。

> **提示: 关键工具固定版本**
>
> 关键工具即使 winget 会升级，也在自己的笔记里记确切版本。可重复环境要的是已知版本，不是“最新”。

## 来源

- [Microsoft — winget](https://learn.microsoft.com/zh-cn/windows/package-manager/winget/)
- [Microsoft — winget export](https://learn.microsoft.com/zh-cn/windows/package-manager/winget/export)
- [Microsoft — winget import](https://learn.microsoft.com/zh-cn/windows/package-manager/winget/import)

---

来源页面: https://winbook.fyi/zh/windows/dev/winget/
