2025-04-14 13:33:16 -05:00
|
|
|
function Set-PackageManagerPreference {
|
|
|
|
|
<#
|
|
|
|
|
.SYNOPSIS
|
|
|
|
|
Sets the currently selected package manager to global "ManagerPreference" in sync.
|
|
|
|
|
Also persists preference across Winutil restarts via preference.ini.
|
|
|
|
|
|
|
|
|
|
Reads from preference.ini if no argument sent.
|
|
|
|
|
|
2025-10-14 19:51:53 +02:00
|
|
|
.PARAMETER preferredPackageManager
|
2025-04-14 13:33:16 -05:00
|
|
|
The PackageManager that was selected.
|
|
|
|
|
#>
|
|
|
|
|
param(
|
|
|
|
|
[Parameter(Position=0, Mandatory=$false)]
|
2025-10-14 19:51:53 +02:00
|
|
|
[PackageManagers]$preferredPackageManager
|
2025-04-14 13:33:16 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
$preferencePath = "$env:LOCALAPPDATA\winutil\preferences.ini"
|
|
|
|
|
$oldChocoPath = "$env:LOCALAPPDATA\winutil\preferChocolatey.ini"
|
|
|
|
|
|
|
|
|
|
#Try loading from file if no argument given.
|
2025-10-14 19:51:53 +02:00
|
|
|
if ($null -eq $preferredPackageManager) {
|
2025-04-14 13:33:16 -05:00
|
|
|
# Backwards compat for preferChocolatey.ini
|
|
|
|
|
if (Test-Path -Path $oldChocoPath) {
|
2025-10-14 19:51:53 +02:00
|
|
|
$preferredPackageManager = [PackageManagers]::Choco
|
2025-04-14 13:33:16 -05:00
|
|
|
Remove-Item -Path $oldChocoPath
|
|
|
|
|
}
|
2025-04-16 08:56:22 -05:00
|
|
|
elseif (Test-Path -Path $preferencePath) {
|
2025-04-14 13:33:16 -05:00
|
|
|
$potential = Get-Content -Path $preferencePath -TotalCount 1
|
2025-10-14 19:51:53 +02:00
|
|
|
$preferredPackageManager = [PackageManagers]$potential
|
2025-04-16 08:56:22 -05:00
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
Write-Debug "Creating new preference file, defaulting to winget."
|
2025-10-14 19:51:53 +02:00
|
|
|
$preferredPackageManager = [PackageManagers]::Winget
|
2025-04-14 13:33:16 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-14 19:51:53 +02:00
|
|
|
$sync["ManagerPreference"] = [PackageManagers]::$preferredPackageManager
|
2025-04-14 13:33:16 -05:00
|
|
|
Write-Debug "Manager Preference changed to '$($sync["ManagerPreference"])'"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Write preference to file to persist across restarts.
|
|
|
|
|
Out-File -FilePath $preferencePath -InputObject $sync["ManagerPreference"]
|
|
|
|
|
}
|