pin 命令 (winget)

wingetpin 命令允许你限制 Windows 程序包管理器将包升级到特定范围的版本,它也可以完全阻止升级包。 固定的包仍可自行升级,并且可从Windows 程序包管理器外部进行升级。

固定类型

WinGet 支持三种类型的包固定:

  • 固定:已从 winget upgrade --all 中排除包,但允许 winget upgrade <package>。 可以使用 --include-pinned 参数来允许 winget upgrade --all 包含固定的包。

  • 阻止:已阻止 winget upgrade --allwinget upgrade <package> 包,必须取消固定包才能让 WinGet 执行升级。 --force 选项可用于替代固定的行为。

  • 限制:已将包固定到特定版本或版本范围。 可以指定要将包固定到的确切版本,也可以使用通配符 * 作为最后一个版本部分来指定版本范围。 例如,如果已将包固定到版本 1.2.*,则 1.2.01.2.x 之间的任何版本都被视为有效。 --force 选项可用于替代固定的行为。

使用情况

winget pin <subcommand> <options>

选项

可以使用以下选项。

选项 说明
-?、--help 获取有关此命令的更多帮助。
--wait 提示用户在退出前按任意键。
--logs,--open-logs 打开默认日志位置。
--verbose, --verbose-logs 用于替代日志记录设置并创建详细日志。
--disable-interactivity 禁用交互式提示。

子命令

pin 命令支持以下子命令。

子命令 说明
add 添加新固定。
删除 删除包固定。
list 列出当前固定。
reset 重置固定

add

add 子命令用于添加新固定。 此子命令要求指定要固定的确切包。 如果存在任何不明确性,系统会提示你进一步将 add 子命令筛选到具体应用程序。

用法:

winget pin add [[-q] <query>] [<options>]

参数

Argument 说明
-q、--query 用于搜索应用的查询。

选项

这些选项允许你根据需要自定义添加固定。

选项 说明
--id 将搜索限制为应用程序的 ID。
--name 将搜索限制为应用程序的名称。
--moniker 将搜索限制为针对应用程序列出的名字对象。
--tag 将搜索限制为针对应用程序列出的标记。
--cmd,--command 将搜索限制为应用程序的命令。
-v、--version 让你可以指定要固定的确切版本。 通配符 * 可用作最后一个版本部分。 将固定行为更改为 gating
-s、--source 将搜索限制为所提供的源名称。 必须后跟源名称。
-e、--exact 在查询中使用确切的字符串,包括检查是否区分大小写。 它不会使用子字符串的默认行为。
--force 直接运行命令并继续处理非安全相关问题。
--blocking 阻止升级,直到删除固定,从而防止替代参数。 将固定行为更改为 blocking
--installed 固定特定的已安装版本
--accept-source-agreements 用于接受源许可协议,并避免出现提示。
--header 可选 Windows-Package-Manager REST 源 HTTP 标头。
-?、--help 获取有关此命令的更多帮助。
--wait 提示用户在退出前按任意键
--logs, --open-logs 打开默认日志位置。
--verbose, --verbose-logs 用于替代日志记录设置并创建详细日志。
--disable-interactivity 禁用交互式提示。

示例

以下示例为应用程序添加了固定。 添加此固定将阻止在调用 winget upgrade --all 时升级此包。 将 --include-pinned 参数与 winget upgrade --all 一起使用,以包含任何固定的包。

winget pin add powertoys

以下示例使用应用程序 ID 为应用程序添加了阻止固定。 添加阻止固定将阻止在调用 winget upgrade --allwinget upgrade <package> 时升级此包。 需要取消阻止包才能让 WinGet 执行升级。

winget pin add --id Microsoft.PowerToys --blocking

以下示例使用应用程序 ID 为应用程序添加了限制固定。 添加限制固定将阻止在特定版本或限制通配符范围之外升级包版本。

winget pin add --id Microsoft.PowerToys --version 0.70.*

删除

remove 子命令用于删除固定。 此子命令要求指定要删除的确切包固定。 如果存在任何不明确性,系统会提示你进一步将 remove 子命令筛选到具体应用程序。

用法:

winget pin remove [[-q] <query>] [<options>]

参数

Argument 说明
-q、--query 用于搜索应用的查询。

选项

这些选项允许你根据需要自定义删除固定。

选项 说明
--id 将搜索限制为应用程序的 ID。
--name 将搜索限制为应用程序的名称。
--moniker 将搜索限制为针对应用程序列出的名字对象。
--tag 将搜索限制为针对应用程序列出的标记。
--cmd,--command 将搜索限制为应用程序的命令。
-s、--source 将搜索限制为所提供的源名称。 必须后跟源名称。
-e、--exact 在查询中使用确切的字符串,包括检查是否区分大小写。 它不会使用子字符串的默认行为。
--installed 固定特定的已安装版本
--accept-source-agreements 用于接受源许可协议,并避免出现提示。
--header 可选 Windows-Package-Manager REST 源 HTTP 标头。
-?、--help 获取有关此命令的更多帮助。
--wait 提示用户在退出前按任意键
--logs, --open-logs 打开默认日志位置。
--verbose, --verbose-logs 用于替代日志记录设置并创建详细日志。
--disable-interactivity 禁用交互式提示。

示例

以下示例删除了应用程序的固定。

winget pin remove powertoys

以下示例使用应用程序 ID 删除了应用程序的固定。

winget pin remove --id Microsoft.PowerToys

list

list 子命令用于列出所有当前固定。

用法:

winget pin list [[-q] <query>] [<options>]

参数

Argument 说明
-q、--query 用于搜索应用的查询。

选项

这些选项允许你根据需要自定义列出固定。

选项 说明
--id 将搜索限制为应用程序的 ID。
--name 将搜索限制为应用程序的名称。
--moniker 将搜索限制为针对应用程序列出的名字对象。
--tag 将搜索限制为针对应用程序列出的标记。
--cmd,--command 将搜索限制为应用程序的命令。
-s、--source 将搜索限制为所提供的源名称。 必须后跟源名称。
-e、--exact 在查询中使用确切的字符串,包括检查是否区分大小写。 它不会使用子字符串的默认行为。
--accept-source-agreements 用于接受源许可协议,并避免出现提示。
--header 可选 Windows-Package-Manager REST 源 HTTP 标头。
-?、--help 获取有关此命令的更多帮助。
--wait 提示用户在退出前按任意键
--logs, --open-logs 打开默认日志位置。
--verbose, --verbose-logs 用于替代日志记录设置并创建详细日志。
--disable-interactivity 禁用交互式提示。

示例

以下示例列出了所有当前固定。

winget pin list

以下示例列出了特定的包固定。

winget pin list --id Microsoft.PowerToys

reset

reset 子命令用于重置所有固定。

使用不含 --force 参数的此子命令将显示要删除的固定。

若要重置所有固定,请包含 --force 参数。

用法:

以下示例显示了将重置的所有固定。

winget pin reset

以下示例重置了所有现有固定。

winget pin reset --force