Skip to content

[BUG] WinGet CLI fallback fails with "Cannot start process because a file name has not been provided" after COM activation failure #4991

Description

@LisonFan

Please confirm these before moving forward

  • I have searched for my issue and have not found a work-in-progress/duplicate/resolved issue.
  • I have tested that this issue has not been fixed in the latest (beta or stable) release.
  • I have checked the FAQ section for solutions.
  • This issue is about a bug (if it is not, please use the correct template).

UniGetUI Version

2026.2.1 Build 107

Windows version, edition, and architecture

Windows 11 Pro 10.0.26200 x64

Describe your issue

UniGetUI detects winget.exe correctly and reports WinGet as ready, but listing installed packages, listing available updates, and searching packages fail with:

System.InvalidOperationException: Cannot start process because a file name has not been provided.

The system winget CLI works correctly from PowerShell:

winget --version
# v1.28.240

winget source list
# succeeds

App Installer is installed and reports OK:

Name            : Microsoft.DesktopAppInstaller
PackageFullName : Microsoft.DesktopAppInstaller_1.28.240.0_x64__8wekyb3d8bbwe
Version         : 1.28.240.0
Status          : Ok

The failure seems to happen after Native WinGet COM activation fails. UniGetUI falls back to WinGetCliHelper(), but subsequent calls through the CLI helper fail as if ProcessStartInfo.FileName is empty.

Steps to reproduce the issue

  1. Start UniGetUI.
  2. Let UniGetUI load package managers.
  3. Open the Updates or Installed Packages page, or search for packages using WinGet.
  4. WinGet fails with Cannot start process because a file name has not been provided.

UniGetUI Log

[2026-06-23 7:02:43 PM] Packaged WinGet COM activation failed (Retrieving the COM class factory for component with CLSID {C53A4F16-787E-42A4-B304-29EFFB4BF597} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG)).), attempting lower-trust activation...
[2026-06-23 7:02:43 PM] Lower-trust WinGet COM activation failed (0x80040154: Class not registered).
[2026-06-23 7:02:43 PM] Native WinGet helper is unavailable on this machine (0x80040154: Class not registered)
[2026-06-23 7:02:43 PM] WinGet will resort to using WinGetCliHelper()
[2026-06-23 7:02:43 PM] Winget is enabled and was found on C:\Users\<User>\AppData\Local\Microsoft\WindowsApps\winget.exe

MANAGER LOADED
Name: WinGet (aka Winget)
Executable name: "winget.exe"
Executable path: "C:\Users\<User>\AppData\Local\Microsoft\WindowsApps\winget.exe"
Call arguments: ""
Version: System WinGet (CLI) Version: v1.28.240
         Using WinGet CLI helper (CLI parsing)

WinGet is enabled and ready to go.

[2026-06-23 7:02:46 PM] Manager WinGet failed to list installed packages with exception InvalidOperationException: Cannot start process because a file name has not been provided.
[2026-06-23 7:02:46 PM] Manager WinGet failed to list available updates with exception InvalidOperationException: Cannot start process because a file name has not been provided.
[2026-06-23 7:02:46 PM] Since this was the first attempt, Winget.AttemptFastRepair() will be called and the procedure will be restarted
[2026-06-23 7:02:46 PM] Attempted to reconnect to COM Server but the active backend is not native WinGet.

System.AggregateException: One or more errors occurred. (Cannot start process because a file name has not been provided.)
 ---> System.InvalidOperationException: Cannot start process because a file name has not been provided.
   at System.Diagnostics.Process.Start()
   at UniGetUI.PackageEngine.Managers.WingetManager.WinGetCliHelper.GetInstalledPackages_UnSafe()
   at UniGetUI.PackageEngine.Managers.WingetManager.WinGet.GetInstalledPackages_UnSafe()

Package Managers Logs

Manager WinGet with version:
System WinGet (CLI) Version: v1.28.240
Using WinGet CLI helper (CLI parsing)

Executable path shown by UniGetUI:
C:\Users\<User>\AppData\Local\Microsoft\WindowsApps\winget.exe

The same error also happens in:
UniGetUI.PackageEngine.Managers.WingetManager.WinGetCliHelper.GetAvailableUpdates_UnSafe()
UniGetUI.PackageEngine.Managers.WingetManager.WinGetCliHelper.FindPackages_UnSafe()

Relevant information

This started after WinGet COM activation began failing with 0x80040154 Class not registered. Before that, UniGetUI was using the Native WinGet helper successfully.

Manual check shows the COM CLSID is not registered:

Get-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CLSID\{C53A4F16-787E-42A4-B304-29EFFB4BF597}
# not found

However, since the plain winget.exe CLI works, I expected UniGetUI's CLI fallback to continue working.

Possible cause: the fallback creates WinGetCliHelper while _loadManagerExecutableFile() is still returning the detected executable path to the manager initializer. If WinGetCliHelper is created using Status.ExecutablePath before that property is assigned, it may store an empty CLI executable path. That would explain why the manager UI later shows the correct executable path, but subsequent WinGetCliHelper calls fail with an empty ProcessStartInfo.FileName.

Possibly related issue:
#4750

Screenshots and videos

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions