diff --git a/functions/private/Invoke-WinUtilMicroWin-Helper.ps1 b/functions/private/Invoke-WinUtilMicroWin-Helper.ps1 index f4918bb82..75771981f 100644 --- a/functions/private/Invoke-WinUtilMicroWin-Helper.ps1 +++ b/functions/private/Invoke-WinUtilMicroWin-Helper.ps1 @@ -36,6 +36,30 @@ class ErroredPackage { } } +class ErroredPackageComparer : System.Collections.Generic.IComparer[ErroredPackage] { + [string]$PropertyName + [bool]$Descending = $false + + ErroredPackageComparer([string]$property) { + $this.PropertyName = $property + } + + ErroredPackageComparer([string]$property, [bool]$descending) { + $this.PropertyName = $property + $this.Descending = $descending + } + + [int]Compare([ErroredPackage]$a, [ErroredPackage]$b) { + if ($a.$($this.PropertyName) -eq $b.$($this.PropertyName)) { $res = 0 } + elseif ($a.$($this.PropertyName) -lt $b.$($this.PropertyName)) { $res = -1 } + else { $res = 1 } + + if ($this.Descending) { $res *= -1 } + + return $res + } +} + function Get-FidoLangFromCulture { param ( @@ -200,6 +224,12 @@ function Remove-Packages { if ($erroredPackages.Count -gt 0) { $erroredPackages + $ErrorMessageComparer = [ErroredPackageComparer]::new("ErrorMessage") + $erroredPackages.Sort($ErrorMessageComparer) + foreach ($erroredPackage in $erroredPackages) { + Write-Host "Failed to remove Package $($erroredPackage.PackageName) due to $($erroredPackage.ErrorMessage)" -NoNewline + } + #$erroredPackages } } } catch {