Update src/svsmsp.install.ps1

This commit is contained in:
2026-02-26 20:29:31 -05:00
parent 763d52aff4
commit bf96fd2399

View File

@@ -54,19 +54,44 @@ function Install-SVSMSP {
} }
} }
function Ensure-PowerShellGetV2 {
Ensure-NuGetProvider
try {
Remove-Module PowerShellGet,PackageManagement -Force -ErrorAction SilentlyContinue
# Prefer modern versions (avoid PowerShellGet 1.0.0.1)
Import-Module PackageManagement -RequiredVersion 1.4.8.1 -Force -ErrorAction Stop
Import-Module PowerShellGet -RequiredVersion 2.2.5 -Force -ErrorAction Stop
return $true
} catch {
Write-LogHybrid "Failed to load required PowerShellGet/PackageManagement versions: $($_.Exception.Message)" "Warning" "SVSModule" -LogToEvent
return $false
}
}
function Get-InstallStrategy { function Get-InstallStrategy {
# 1) PSResourceGet if present/usable # 1) PSResourceGet if present/usable
if (Ensure-PSResourceGet) { if (Ensure-PSResourceGet) { return "PSResourceGet" }
if (Get-Command Register-PSResourceRepository -ErrorAction SilentlyContinue) { return "PSResourceGet" }
}
# 2) PowerShellGet v2 cmdlets if present # 2) Only use PSGet v2 if we can force-load the good versions
if (Get-Command Register-PSRepository -ErrorAction SilentlyContinue) { return "PowerShellGetV2" } if (Ensure-PowerShellGetV2) { return "PowerShellGetV2" }
# 3) NuGet provider fallback # 3) NuGet provider fallback
return "NuGetProvider" return "NuGetProvider"
} }
function Import-InstalledModuleOrThrow {
param([Parameter(Mandatory=$true)][string]$Name)
try {
Import-Module $Name -Force -ErrorAction Stop
} catch {
Write-LogHybrid "Module import failed for '$Name': $($_.Exception.Message)" "Error" "SVSModule" -LogToEvent
throw
}
}
function Register-Repo_PSResourceGet { function Register-Repo_PSResourceGet {
Write-LogHybrid "Registering PSResourceGet repo $NewRepositoryName" "Info" "SVSModule" -LogToEvent Write-LogHybrid "Registering PSResourceGet repo $NewRepositoryName" "Info" "SVSModule" -LogToEvent
if (-not (Get-PSResourceRepository -Name $NewRepositoryName -ErrorAction SilentlyContinue)) { if (-not (Get-PSResourceRepository -Name $NewRepositoryName -ErrorAction SilentlyContinue)) {
@@ -77,7 +102,7 @@ function Install-SVSMSP {
function Install-Module_PSResourceGet { function Install-Module_PSResourceGet {
Write-LogHybrid "Installing module $NewModuleName via PSResourceGet…" "Info" "SVSModule" -LogToEvent Write-LogHybrid "Installing module $NewModuleName via PSResourceGet…" "Info" "SVSModule" -LogToEvent
Install-PSResource -Name $NewModuleName -Repository $NewRepositoryName -Scope AllUsers -Reinstall -ErrorAction Stop Install-PSResource -Name $NewModuleName -Repository $NewRepositoryName -Scope AllUsers -Reinstall -ErrorAction Stop
Import-Module $NewModuleName -Force -ErrorAction SilentlyContinue Import-InstalledModuleOrThrow -Name $NewModuleName
} }
function Register-Repo_PowerShellGetV2 { function Register-Repo_PowerShellGetV2 {
@@ -90,7 +115,7 @@ function Install-SVSMSP {
function Install-Module_PowerShellGetV2 { function Install-Module_PowerShellGetV2 {
Write-LogHybrid "Installing module $NewModuleName via PowerShellGet…" "Info" "SVSModule" -LogToEvent Write-LogHybrid "Installing module $NewModuleName via PowerShellGet…" "Info" "SVSModule" -LogToEvent
Install-Module -Name $NewModuleName -Repository $NewRepositoryName -Scope AllUsers -Force -ErrorAction Stop Install-Module -Name $NewModuleName -Repository $NewRepositoryName -Scope AllUsers -Force -ErrorAction Stop
Import-Module $NewModuleName -Force -ErrorAction SilentlyContinue Import-InstalledModuleOrThrow -Name $NewModuleName
} }
function Register-Repo_NuGetProvider { function Register-Repo_NuGetProvider {
@@ -131,7 +156,7 @@ function Install-SVSMSP {
New-Item -ItemType Directory -Path $dest -Force | Out-Null New-Item -ItemType Directory -Path $dest -Force | Out-Null
Copy-Item -Path (Join-Path $moduleRoot '*') -Destination $dest -Recurse -Force Copy-Item -Path (Join-Path $moduleRoot '*') -Destination $dest -Recurse -Force
Import-Module $NewModuleName -Force -ErrorAction SilentlyContinue Import-InstalledModuleOrThrow -Name $NewModuleName
} catch { } catch {
Write-LogHybrid "NuGet promotion step skipped/failed: $($_.Exception.Message)" "Warning" "SVSModule" -LogToEvent Write-LogHybrid "NuGet promotion step skipped/failed: $($_.Exception.Message)" "Warning" "SVSModule" -LogToEvent
} }
@@ -269,7 +294,7 @@ function Install-SVSMSP {
Install-Module_PSResourceGet Install-Module_PSResourceGet
} }
"PowerShellGetV2" { "PowerShellGetV2" {
Ensure-NuGetProvider if (-not (Ensure-PowerShellGetV2)) { throw "PowerShellGetV2 not usable on this system." }
Register-Repo_PowerShellGetV2 Register-Repo_PowerShellGetV2
Install-Module_PowerShellGetV2 Install-Module_PowerShellGetV2
} }