Skip to content

[BUG] Failing to uninstall package, then update it #5036

Description

@Infinitay

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.2

Windows version, edition, and architecture

Windows 10 Pro 22H2 19045.7417

Describe your issue

Ever since UniGetUI has been acquired, I've been having trouble using the Uninstall package, then update it option within the Software Updates tab. The problem is that the commands seem to run parallel instead of sequentially instead of uninstalling first and then installing the new update. Upon skimming the logs, it seems like there is an issue in particular with the Update operation not waiting for the uninstall to finish executing (System.InvalidOperationException: An async read operation has already been started on the stream.). Immediately after the failure, if you attempt to re-run the update task under operations history, it will still fail again despite having uninstalled - I suppose this because it's running update, and the package has been uninstalled; therefore, this seems intended, but I thought I would mention it nonetheless.

Steps to reproduce the issue

Pre-requisite: You must have a WinGet package available to update. Note, I haven't tried this option on other packages.

  1. Navigate to the Software Updates tab
  2. Attempt to "Uninstall package, then update it" on a WinGet package
  3. --> BUG: The update operation fails while the uninstall operation succeeds

UniGetUI Log

[6/27/2026 10:44:46 PM] Found 377 installed packages from Winget
[6/27/2026 10:44:53 PM] WinGet package Microsoft.VisualStudioCode is installed on a system-wide scope, forcing administrator rights...
[6/27/2026 10:44:53 PM] Loaded operation parameters for package id=Microsoft.VisualStudioCode on manager Winget and operation Update: update --id "Microsoft.VisualStudioCode" --exact --source winget --accept-source-agreements --disable-interactivity --scope machine --silent --include-unknown --accept-package-agreements --force 
[6/27/2026 10:45:07 PM] Version string 1.2.76.297.ga70a30a3 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[6/27/2026 10:45:07 PM] Version string 1.2.76.297.ga70a30a3 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[6/27/2026 10:45:08 PM] Found 377 installed packages from Winget
[6/27/2026 10:45:33 PM] Failed to write operation history
[6/27/2026 10:45:34 PM] System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
                           at System.Collections.Generic.List`1.Enumerator.MoveNext()
                           at UniGetUI.Avalonia.Infrastructure.AvaloniaOperationRegistry.AppendOperationHistory(AbstractOperation op)
[6/27/2026 10:45:39 PM] Parallel operation limit not set, defaulting to 1
[6/27/2026 10:45:39 PM] Parallel operation limit not set, defaulting to 1
[6/27/2026 10:45:39 PM] Recovered from fatal WinGet exception:
[6/27/2026 10:45:39 PM] System.Runtime.InteropServices.COMException (0x8A15003F)
                           at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr)
                           at ABI.Microsoft.Management.Deployment.IPackageVersionInfo4Methods.GetApplicableInstaller(IObjectReference _obj, InstallOptions options)
                           at UniGetUI.PackageEngine.Managers.WingetManager.NativePackageHandler._getInstallationOptionsOnDict(IPackage package, ConcurrentDictionary`2& source, Boolean installed, InstallOptions unigetuiOptions)
                           at UniGetUI.PackageEngine.Managers.WingetManager.NativePackageHandler.GetInstallationOptions(IPackage package, InstallOptions unigetuiOptions, OperationType operation)
                           at UniGetUI.PackageEngine.Managers.WingetManager.WinGetPkgOperationHelper._getOperationParameters(IPackage package, InstallOptions options, OperationType operation)
[6/27/2026 10:45:39 PM] Loaded operation parameters for package id=mikf.gallery-dl.Nightly on manager Winget and operation Uninstall: uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent 
[6/27/2026 10:45:39 PM] Recovered from fatal WinGet exception:
[6/27/2026 10:45:39 PM] System.Runtime.InteropServices.COMException (0x8A15003F)
                           at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr)
                           at ABI.Microsoft.Management.Deployment.IPackageVersionInfo4Methods.GetApplicableInstaller(IObjectReference _obj, InstallOptions options)
                           at UniGetUI.PackageEngine.Managers.WingetManager.NativePackageHandler._getInstallationOptionsOnDict(IPackage package, ConcurrentDictionary`2& source, Boolean installed, InstallOptions unigetuiOptions)
                           at UniGetUI.PackageEngine.Managers.WingetManager.NativePackageHandler.GetInstallationOptions(IPackage package, InstallOptions unigetuiOptions, OperationType operation)
                           at UniGetUI.PackageEngine.Managers.WingetManager.WinGetPkgOperationHelper._getOperationParameters(IPackage package, InstallOptions options, OperationType operation)
[6/27/2026 10:45:39 PM] Loaded operation parameters for package id=mikf.gallery-dl.Nightly on manager Winget and operation Uninstall: uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent 
[6/27/2026 10:45:39 PM] System.InvalidOperationException: An async read operation has already been started on the stream.
                           at System.Diagnostics.Process.BeginErrorReadLine()
                           at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
[6/27/2026 10:45:40 PM] System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
                           at System.IO.StreamReader.ThrowAsyncIOInProgress()
                           at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
                           at UniGetUI.PackageOperations.AbstractOperation._runOperation()
[6/27/2026 10:45:45 PM] Path returned by the package manager "C:\Users\user\AppData\Local\Microsoft\WinGet\Packages\mikf.gallery-dl.Nightly_Microsoft.Winget.Source_8wekyb3d8bbwe" did not exist while loading package install location for package Id=mikf.gallery-dl.Nightly with Manager=Winget
[6/27/2026 10:45:52 PM] Version string 1.2.76.297.ga70a30a3 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[6/27/2026 10:45:52 PM] Version string 1.2.76.297.ga70a30a3 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[6/27/2026 10:45:52 PM] Found 376 installed packages from Winget

Package Managers Logs

Unfortunately I forgot to fetch this log. I can check once more when I the package requires an update in the future. Although, I do have the operation logs which I'll attach under _Relevant Information_.

Relevant information

Operation History

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
SkipHashCheck: True
CustomParameters_Install: [--rename, "gallery-dl.exe"]
OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
- FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
- Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
SkipHashCheck: True
CustomParameters_Install: [--rename, "gallery-dl.exe"]
OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
- FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
- Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
at System.IO.StreamReader.ThrowAsyncIOInProgress()
at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
at UniGetUI.PackageOperations.AbstractOperation._runOperation()
gallery-dl could not be uninstalled
Found gallery-dl [mikf.gallery-dl.Nightly]
Starting package uninstall...
Successfully uninstalled
End Time: "6/27/2026 10:45:45 PM"
Process return value: "0" (0x0)
gallery-dl was uninstalled successfully
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Package update operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
SkipHashCheck: True
CustomParameters_Install: [--rename, "gallery-dl.exe"]
OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Version: 2026.06.22 -> 2026.06.27
Running PreOperation (1/1)...
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
SkipHashCheck: True
CustomParameters_Install: [--rename, "gallery-dl.exe"]
OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
- FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
- Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
at System.IO.StreamReader.ThrowAsyncIOInProgress()
at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
at UniGetUI.PackageOperations.AbstractOperation._runOperation()
gallery-dl could not be uninstalled
PreOperation 1 out of 1 failed, and was tagged as necessary. Aborting...
gallery-dl could not be updated
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Package update operation for Package=yt-dlp.yt-dlp.nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
CustomParameters_Install: [--verbose-logs, --skip-dependencies]
CustomParameters_Update: [--verbose-logs, --skip-dependencies]
CustomParameters_Uninstall: [--verbose-logs]
OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Version: 2026.06.21.235142 -> 2026.06.26.234622
Starting operation...
Executing process with StartInfo:
- FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
- Arguments: "update --id "yt-dlp.yt-dlp.nightly" --exact --source winget --accept-source-agreements --disable-interactivity --silent --include-unknown --location "C:\Users\user\AppData\Local\Microsoft\WinGet\Packages\yt-dlp.yt-dlp.nightly_Microsoft.Winget.Source_8wekyb3d8bbwe" --accept-package-agreements --force --verbose-logs --skip-dependencies"
Start Time: "6/27/2026 10:44:45 PM"
Found yt-dlp-nightly [yt-dlp.yt-dlp.nightly] Version 2026.06.26.234622
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Dependencies skipped.
Downloading https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/download/2026.06.26.234622/yt-dlp.exe
██████████████████████████████  17.3 MB / 17.3 MB
Successfully verified installer hash
Starting package install...
Command line alias added: "yt-dlp"
Successfully installed
End Time: "6/27/2026 10:44:53 PM"
Process return value: "0" (0x0)
yt-dlp-nightly was updated successfully
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

Operations Tab - 1/2 - gallery-dl Uninstall

Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
   at System.IO.StreamReader.ThrowAsyncIOInProgress()
   at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
   at UniGetUI.PackageOperations.AbstractOperation._runOperation()
gallery-dl could not be uninstalled
Found gallery-dl [mikf.gallery-dl.Nightly]
Starting package uninstall...
Successfully uninstalled
End Time: "6/27/2026 10:45:45 PM"
Process return value: "0" (0x0)
gallery-dl was uninstalled successfully

Operations Tab - 2/2 - gallery-dl Update

Package update operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Version: 2026.06.22 -> 2026.06.27

Running PreOperation (1/1)...
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
   at System.IO.StreamReader.ThrowAsyncIOInProgress()
   at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
   at UniGetUI.PackageOperations.AbstractOperation._runOperation()
gallery-dl could not be uninstalled
PreOperation 1 out of 1 failed, and was tagged as necessary. Aborting...
gallery-dl could not be updated
Found gallery-dl [mikf.gallery-dl.Nightly]
Starting package uninstall...
Successfully uninstalled
End Time: "6/27/2026 10:45:45 PM"
Process return value: "0" (0x0)
gallery-dl was uninstalled successfully

Also, earlier I mentioned the issue with retrying the update operation within the operations tab below. Here is the log when clicking retry on the update process, it attempts all over to uninstall which causes both operations to fail now.

Operations Tab - Retrying Update

Package update operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Version: 2026.06.22 -> 2026.06.27

Running PreOperation (1/1)...
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Executing process with StartInfo:
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:45:39 PM"
System.InvalidOperationException: The stream is currently in use by a previous operation on the stream.
   at System.IO.StreamReader.ThrowAsyncIOInProgress()
   at UniGetUI.PackageOperations.AbstractProcessOperation.PerformOperation()
   at UniGetUI.PackageOperations.AbstractOperation._runOperation()
gallery-dl could not be uninstalled
PreOperation 1 out of 1 failed, and was tagged as necessary. Aborting...
gallery-dl could not be updated
Found gallery-dl [mikf.gallery-dl.Nightly]
Starting package uninstall...
Successfully uninstalled
End Time: "6/27/2026 10:45:45 PM"
Process return value: "0" (0x0)
gallery-dl was uninstalled successfully

-----------------------
Retrying operation with RetryMode=Retry

Retried package operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Updated installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>

Running PreOperation (1/1)...
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Package uninstall operation for Package=mikf.gallery-dl.Nightly with Manager=Winget
Installation options: <InstallOptions instance (only non-default values are shown)
	SkipHashCheck: True
	CustomParameters_Install: [--rename, "gallery-dl.exe"]
	OverridesNextLevelOpts: True>
Overriden options: <Scope=;RunAsAdministrator=;WG_SpecifyVersion=;PS_NoScope=False;Pip_BreakSystemPackages=False>
Starting operation...
Starting operation...
Executing process with StartInfo:
Executing process with StartInfo:
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - FileName: "C:\Users\user\AppData\Local\Microsoft\WindowsApps\winget.exe"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
 - Arguments: "uninstall --id "mikf.gallery-dl.Nightly" --exact --source winget --accept-source-agreements --disable-interactivity --version "2026.06.22" --silent"
Start Time: "6/27/2026 10:51:04 PM"
Start Time: "6/27/2026 10:51:04 PM"
No installed package found matching input criteria.
No installed package found matching input criteria.
End Time: "6/27/2026 10:51:08 PM"
End Time: "6/27/2026 10:51:08 PM"
Process return value: "-1978335212" (0x8A150014)
Process return value: "-1978335212" (0x8A150014)
gallery-dl could not be uninstalled
gallery-dl could not be uninstalled
PreOperation 1 out of 1 failed, and was tagged as necessary. Aborting...
gallery-dl could not be updated

Screenshots and videos

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    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