microsoft / microsoft/winget-cli

Updating a font doesn't replace the previous version

Open
#6,425 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Relevant area(s)

WinGet CLI

Relevant command(s)

winget upgrade

Brief description of your issue

Updating a font doesn't remove the old version, and UpgradeBehavior: uninstallPrevious in the manifest has no effect.

https://github.com/microsoft/winget-cli/blob/4638f90ef0cb360d082c3774ca63dc9f0e27ff0c/src/AppInstallerCLICore/Workflows/InstallFlow.cpp#L465-L467

Initially reported by @DandelionSprout in https://github.com/pl4nty/winget-extras/pull/743

Steps to reproduce
winget source add --name winget-extras --type Microsoft.PreIndexed.Package --arg https://winget.tplant.com.au/cache
winget install ryanoasis.Hurmit --version 3.4.0
winget update ryanoasis.Hurmit
winget list

Name                     Id                        Version             Available      Source
---------------------------------------------------------------------------------------------------
ryanoasis.Hurmit         ryanoasis.Hurmit          3.5.0                              winget-extras
ryanoasis.Hurmit         ryanoasis.Hurmit          3.4.0                              winget-extras
Expected behavior

I expected the old version of the font to be replaced by the new version by default.

As an author, I also expected UpgradeBehavior: uninstallPrevious to replace the old version, because it's accepted by manifest validation.

Actual behavior

The old version remains installed. The Windows Settings UI showed the new version shortly after updating, then reverted to the old version after reopening. Both versions are present in HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\ryanoasis.Hurmit and %LOCALAPPDATA%\Microsoft\Windows\Fonts\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\ryanoasis.Hurmit

Environment
Windows Package Manager v1.29.280
© 2026 Microsoft. All rights reserved.

Windows: Windows.Desktop v10.0.26200.8893
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.29.280.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


Group Policy                                       State
-----------------------------------------------------------
Enable Windows App Installer Experimental Features Disabled
Enable Windows App Installer Hash Override         Disabled
Enable Additional Windows App Installer Sources    Enabled

Additional source Type                         Argument
---------------------------------------------------------------------------------
winget-extras     Microsoft.PreIndexed.Package https://winget.tplant.com.au/cache

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled
ProxyCommandLineOptions                   Disabled
ConfigurationProcessorPath                Disabled
DefaultProxy                              Disabled

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 src/AppInstallerCLICore/Workflows/InstallFlow.cpp around lines 465-467, then reproduce the issue with the listed winget source, install, and update commands. Trace how the upgrade handles the font manifest’s UpgradeBehavior: uninstallPrevious, and verify that winget list and the user font registry/files contain only the updated version.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.