Update src/svsmsp.install.ps1
This commit is contained in:
@@ -54,19 +54,44 @@ function Install-SVSMSP {
|
||||
}
|
||||
}
|
||||
|
||||
function Get-InstallStrategy {
|
||||
# 1) PSResourceGet if present/usable
|
||||
if (Ensure-PSResourceGet) {
|
||||
if (Get-Command Register-PSResourceRepository -ErrorAction SilentlyContinue) { return "PSResourceGet" }
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
# 2) PowerShellGet v2 cmdlets if present
|
||||
if (Get-Command Register-PSRepository -ErrorAction SilentlyContinue) { return "PowerShellGetV2" }
|
||||
function Get-InstallStrategy {
|
||||
# 1) PSResourceGet if present/usable
|
||||
if (Ensure-PSResourceGet) { return "PSResourceGet" }
|
||||
|
||||
# 2) Only use PSGet v2 if we can force-load the good versions
|
||||
if (Ensure-PowerShellGetV2) { return "PowerShellGetV2" }
|
||||
|
||||
# 3) NuGet provider fallback
|
||||
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 {
|
||||
Write-LogHybrid "Registering PSResourceGet repo $NewRepositoryName…" "Info" "SVSModule" -LogToEvent
|
||||
if (-not (Get-PSResourceRepository -Name $NewRepositoryName -ErrorAction SilentlyContinue)) {
|
||||
@@ -77,7 +102,7 @@ function Install-SVSMSP {
|
||||
function Install-Module_PSResourceGet {
|
||||
Write-LogHybrid "Installing module $NewModuleName via PSResourceGet…" "Info" "SVSModule" -LogToEvent
|
||||
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 {
|
||||
@@ -90,7 +115,7 @@ function Install-SVSMSP {
|
||||
function Install-Module_PowerShellGetV2 {
|
||||
Write-LogHybrid "Installing module $NewModuleName via PowerShellGet…" "Info" "SVSModule" -LogToEvent
|
||||
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 {
|
||||
@@ -131,7 +156,7 @@ function Install-SVSMSP {
|
||||
New-Item -ItemType Directory -Path $dest -Force | Out-Null
|
||||
Copy-Item -Path (Join-Path $moduleRoot '*') -Destination $dest -Recurse -Force
|
||||
|
||||
Import-Module $NewModuleName -Force -ErrorAction SilentlyContinue
|
||||
Import-InstalledModuleOrThrow -Name $NewModuleName
|
||||
} catch {
|
||||
Write-LogHybrid "NuGet promotion step skipped/failed: $($_.Exception.Message)" "Warning" "SVSModule" -LogToEvent
|
||||
}
|
||||
@@ -269,7 +294,7 @@ function Install-SVSMSP {
|
||||
Install-Module_PSResourceGet
|
||||
}
|
||||
"PowerShellGetV2" {
|
||||
Ensure-NuGetProvider
|
||||
if (-not (Ensure-PowerShellGetV2)) { throw "PowerShellGetV2 not usable on this system." }
|
||||
Register-Repo_PowerShellGetV2
|
||||
Install-Module_PowerShellGetV2
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user