Skip to content

Fix uninstall issues and missing package update#21

Merged
Gabriel Dufresne (GabrielDuf) merged 4 commits into
masterfrom
fixPingetIssue
May 13, 2026
Merged

Fix uninstall issues and missing package update#21
Gabriel Dufresne (GabrielDuf) merged 4 commits into
masterfrom
fixPingetIssue

Conversation

@GabrielDuf
Copy link
Copy Markdown
Contributor

Three independent bugs surfaced. Each is fixed and covered by tests; rolled together as 0.4.2.

1. Installed→catalog correlation (Rust + C#)

correlate_installed_package (Rust) and Repository.CorrelateInstalledPackage (C#)
had two latent gaps and one regression-prone fallback:

  • MSIX hard-skip. if local_id.starts_with("MSIX\\") → None returned early for every MSIX-installed package, so trivially-correlatable updates like Microsoft.Teams MSIX → Microsoft.Teams catalog entry never surfaced. Removed. MSIX entries with unresolved ms-resource:… display names still naturally fail to match.
  • Tied normalized names. normalize_correlation_name strips non-alphanumeric chars, so Notepad++ and Notepad-- both collapse to notepad, scoring 900 against Notepad++ (ARM 64-bit). max_by_key then returned whichever came last in iteration order — frequently the wrong catalog entry (ndd.Notepad--).
  • Loose-match grabs word fragments. The substring match fired on Studio anywhere in the installed name, letting ZeroBrane.Studio outrank Microsoft.DotNet.SDK.10 for Microsoft .NET SDK 10.0.101 (arm64) from Visual Studio because both scored 700.

2. Registry uninstall command quoting (Rust)

Command::arg applies CRT-style quoting on Windows, so an UninstallString that already contains its own quotes (e.g. "C:\Users\…\uninstall.exe") gets re-quoted to \"C:\Users\…\uninstall.exe\". cmd.exe doesn't understand backslash-escaped quotes and rejects the whole command with is not recognized as an internal or external command.

3. Parity test settings path (scripts/Parity-Compare-WingetParity.ps1)

After the recent "fall back to non-packaged app root when no AppX identity" fix, pinget called from a regular PowerShell process writes settings to %LOCALAPPDATA%\Devolutions\Pinget\user-settings.json instead of …\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json. The parity test still asserted the packaged path always existed, breaking CI.

@GabrielDuf Gabriel Dufresne (GabrielDuf) merged commit b97634f into master May 13, 2026
13 checks passed
@GabrielDuf Gabriel Dufresne (GabrielDuf) deleted the fixPingetIssue branch May 13, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants