logoDocs

在 Windows winget 中设置忽略软件更新的方法 & 通过 Winget 升级已安装的软件/包

官方方法:使用 winget pin 命令

最新版本的 winget 提供了一个官方方法来忽略特定软件的更新,这就是使用 winget pin 命令 3

winget pin add --id 软件包ID

例如,如果您想忽略 Microsoft Teams 和 Microsoft Office 的更新:

winget pin add --id Microsoft.Teams
winget pin add --id Microsoft.Office

设置后,当您运行 winget upgrade --all 时,被固定(pin)的应用将被跳过,不会被更新 2

查看已固定的软件包

要查看所有已固定的软件包列表:

winget pin list

取消固定软件包

如果将来您想恢复对软件包的更新:

winget pin remove --id 软件包ID

强制更新所有软件包(包括已固定的)

如果您想临时忽略固定设置,一次性更新所有软件包:

winget upgrade --all --force

永久阻止更新

如果您想永久阻止某个软件包的更新,可以使用 --blocking 参数:

winget pin add --id 软件包ID --blocking

其他替代方法

如果您使用的是较旧版本的 winget 或需要更灵活的控制,还可以使用以下方法:

明确指定要更新的应用列表

不使用 --all 参数,而是手动指定要更新的软件包ID 3:

winget upgrade app1.id app2.id app3.id

使用 PowerShell 脚本筛选更新

使用 PowerShell 可以更精细地控制要忽略的应用 3

Get-WinGetPackage | Where-Object {
    ($_.IsUpdateAvailable -eq $true) -and
    ($_.Id -ne 'Microsoft.Teams') -and
    ($_.Id -ne 'Microsoft.Office')
} | ForEach-Object {
    Update-WinGetPackage -Id $_.ID
}

通过 Winget 升级已安装的软件/包

# Update all packages

winget update --all