Fix uninstall issues and missing package update#21
Merged
Conversation
Marc-André Moreau (mamoreau-devolutions)
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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) andRepository.CorrelateInstalledPackage(C#)had two latent gaps and one regression-prone fallback:
if local_id.starts_with("MSIX\\") → Nonereturned early for every MSIX-installed package, so trivially-correlatable updates likeMicrosoft.TeamsMSIX →Microsoft.Teamscatalog entry never surfaced. Removed. MSIX entries with unresolvedms-resource:…display names still naturally fail to match.normalize_correlation_namestrips non-alphanumeric chars, soNotepad++andNotepad--both collapse tonotepad, scoring 900 againstNotepad++ (ARM 64-bit).max_by_keythen returned whichever came last in iteration order — frequently the wrong catalog entry (ndd.Notepad--).Studioanywhere in the installed name, lettingZeroBrane.StudiooutrankMicrosoft.DotNet.SDK.10forMicrosoft .NET SDK 10.0.101 (arm64) from Visual Studiobecause both scored 700.2. Registry uninstall command quoting (Rust)
Command::argapplies CRT-style quoting on Windows, so anUninstallStringthat 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 withis 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.jsoninstead of…\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json. The parity test still asserted the packaged path always existed, breaking CI.