microsoft / microsoft/winget-cli

Winget `list --upgrade-available --include-pinned` should show the pinned clearly

Open
#5,753 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Issue-Feature
Dominant language
C++
Stars
26.4k
Forks
1.8k
Avg merge
1d 11h
Merged PRs (30d)
15

Description

Relevant area(s)

WinGet CLI

Description of the new feature / enhancement

As a title says, there's no difference when we call winget list --upgrade-available and winget list --upgrade-available --include-pinned that show which one of the list is pinned.

There's a information on the bottom of the list saying that that has X packages that cannot be upgradeable, because they are pinned and asking to run the command with the '--include-pinned'.

> winget list --upgrade-available
Name                                   Id                                            Version                Available            Source
---------------------------------------------------------------------------------------------------------------------------------------
NVM for Windows 1.1.12                 CoreyButler.NVMforWindows                     1.1.12                 1.2.2                winget
Go Programming Language amd64 go1.24.1 GoLang.Go                                     1.24.1                 1.25.1               winget
Visual Studio Build Tools 2019         Microsoft.VisualStudio.2019.BuildTools        16.11.47               16.11.50             winget

And the list with pinned packages:

> winget list --upgrade-available  --include-pinned
Name                                   Id                                            Version                Available            Source
---------------------------------------------------------------------------------------------------------------------------------------
NVM for Windows 1.1.12                 CoreyButler.NVMforWindows                     1.1.12                 1.2.2                winget
OpenVPN 2.6.13-I001 amd64              OpenVPNTechnologies.OpenVPN                   2.6.1301               2.6.1501             winget
Go Programming Language amd64 go1.24.1 GoLang.Go                                     1.24.1                 1.25.1               winget
Visual Studio Build Tools 2019         Microsoft.VisualStudio.2019.BuildTools        16.11.47               16.11.50             winget
Proposed technical implementation details

Maybe add a new column when the '--include-pinned' was passed? Or add a * before the name, adding on the end of the list that the packages with * are pinned?

Like:

> winget list --upgrade-available  --include-pinned
Name                                   Id                                            Version                Available            Source
-------------------------------------------------------------------------------------------------------------------------------------------------
NVM for Windows 1.1.12                 CoreyButler.NVMforWindows                     1.1.12                 1.2.2                winget
*OpenVPN 2.6.13-I001 amd64             OpenVPNTechnologies.OpenVPN                   2.6.1301               2.6.1501             winget
Go Programming Language amd64 go1.24.1 GoLang.Go                                     1.24.1                 1.25.1               winget
Visual Studio Build Tools 2019         Microsoft.VisualStudio.2019.BuildTools        16.11.47               16.11.50             winget

The 1 package(s) with * is(are) pins that prevent upgrade. Use the 'winget pin' command to view and edit pins.

or

> winget list --upgrade-available  --include-pinned
Name                                   Id                                            Version                Available            Source            Pinned?
-----------------------------------------------------------------------------------------------------------------------------------------------------------
NVM for Windows 1.1.12                 CoreyButler.NVMforWindows                     1.1.12                 1.2.2                winget            No
OpenVPN 2.6.13-I001 amd64              OpenVPNTechnologies.OpenVPN                   2.6.1301               2.6.1501             winget            Yes
Go Programming Language amd64 go1.24.1 GoLang.Go                                     1.24.1                 1.25.1               winget            No
Visual Studio Build Tools 2019         Microsoft.VisualStudio.2019.BuildTools        16.11.47               16.11.50             winget            No

Info

λ winget --info
Windows Package Manager (Preview) v1.12.210-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.26100.6584
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.27.210.0

Winget Directories
-------------------------------------------------------------------------------------------------------------------------------
Logs                               %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
User Settings                      %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
Portable Links Directory (User)    %LOCALAPPDATA%\Microsoft\WinGet\Links
Portable Links Directory (Machine) C:\Program Files\WinGet\Links
Portable Package Root (User)       %LOCALAPPDATA%\Microsoft\WinGet\Packages
Portable Package Root              C:\Program Files\WinGet\Packages
Portable Package Root (x86)        C:\Program Files (x86)\WinGet\Packages
Installer Downloads                %USERPROFILE%\Downloads
Configuration Modules              %LOCALAPPDATA%\Microsoft\WinGet\Configuration\Modules

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled
ProxyCommandLineOptions                   Disabled
DefaultProxy                              Disabled
λ winget --version
v1.12.210-preview

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in the WinGet CLI handling for list --upgrade-available and --include-pinned, reproducing both commands from the issue to compare their output. The change is done when pinned packages are clearly distinguishable in the inclusive listing, while the regular listing and existing package columns remain understandable.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.