Update src/svsmsp.install.ps1
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user