mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 17:41:14 +10:00
* Harden Pester CI and discard runspace return values * Add prioritized test backlog * Add WinUtil action logging * Add config integrity tests * Add XAML control wiring tests * Add registry and service helper tests * Add package manager tests * Add runspace behavior tests * Add tweak orchestration tests * Add install workflow tests * Add update profile tests * Add AppX removal tests * Log package installer output * Add UI state helper tests * Pin Pester test runner version * Expand Win11 Creator tests * Add preferences and theme tests * Add search filter tests * Add compile contract tests * Use single WinUtil session log * Remove installer output logging helper * Handle locked WinUtil transcript log * Avoid appending to active transcript log * Log install uninstall package identities
56 lines
1.7 KiB
PowerShell
56 lines
1.7 KiB
PowerShell
function Get-WinUtilSelectedPackages {
|
|
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[object] $PackageList,
|
|
|
|
[Parameter(Mandatory = $true)]
|
|
[PackageManagers] $Preference
|
|
)
|
|
|
|
if ($PackageList.count -eq 1) {
|
|
Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" }
|
|
} else {
|
|
Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" }
|
|
}
|
|
|
|
$packages = [System.Collections.Hashtable]::new()
|
|
$packagesWinget = [System.Collections.ArrayList]::new()
|
|
$packagesChoco = [System.Collections.ArrayList]::new()
|
|
|
|
$packages[[PackageManagers]::Winget] = $packagesWinget
|
|
$packages[[PackageManagers]::Choco] = $packagesChoco
|
|
|
|
function Add-PackageId {
|
|
param(
|
|
[System.Collections.ArrayList]$Target,
|
|
$PackageId
|
|
)
|
|
|
|
if ([string]::IsNullOrWhiteSpace([string]$PackageId) -or $PackageId -eq "na") {
|
|
return
|
|
}
|
|
|
|
if (-not $Target.Contains($PackageId)) {
|
|
$null = $Target.Add($PackageId)
|
|
}
|
|
}
|
|
|
|
foreach ($package in $PackageList) {
|
|
switch ($Preference) {
|
|
"Choco" {
|
|
if ([string]::IsNullOrWhiteSpace([string]$package.choco) -or $package.choco -eq "na") {
|
|
Add-PackageId -Target $packagesWinget -PackageId $package.winget
|
|
} else {
|
|
Add-PackageId -Target $packagesChoco -PackageId $package.choco
|
|
}
|
|
}
|
|
"Winget" {
|
|
Add-PackageId -Target $packagesWinget -PackageId $package.winget
|
|
}
|
|
}
|
|
}
|
|
|
|
return $packages
|
|
}
|