server-monitor-manager/build/windows/Install-TestPackage.ps1
2026-07-17 09:19:09 +07:00

33 lines
1.7 KiB
PowerShell

param(
[Parameter(Mandatory = $true)]
[string]$PackagePath,
[Parameter(Mandatory = $true)]
[string]$CertificatePath
)
$ErrorActionPreference = 'Stop'
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
throw 'Run this test-certificate installer from an elevated PowerShell window (Run as administrator).'
}
$package = [System.IO.Path]::GetFullPath($PackagePath)
$certificate = [System.IO.Path]::GetFullPath($CertificatePath)
if (-not (Test-Path -LiteralPath $package -PathType Leaf)) { throw "Package not found: $package" }
if (-not (Test-Path -LiteralPath $certificate -PathType Leaf)) { throw "Certificate not found: $certificate" }
$trustedRoot = Import-Certificate -FilePath $certificate -CertStoreLocation 'Cert:\LocalMachine\Root'
$trustedPublisher = Import-Certificate -FilePath $certificate -CertStoreLocation 'Cert:\LocalMachine\TrustedPeople'
try {
Add-AppxPackage -Path $package -ForceApplicationShutdown -ForceUpdateFromAnyVersion
$installed = Get-AppxPackage -Name '81AD4B9B-7597-44AB-93A0-D5A695B2D35E'
if ($null -eq $installed) { throw 'Server Monitor Manager package was not installed.' }
Write-Output "INSTALLED=$($installed.PackageFullName)"
}
catch {
Remove-Item -LiteralPath "Cert:\LocalMachine\Root\$($trustedRoot.Thumbprint)" -Force -ErrorAction SilentlyContinue
Remove-Item -LiteralPath "Cert:\LocalMachine\TrustedPeople\$($trustedPublisher.Thumbprint)" -Force -ErrorAction SilentlyContinue
throw
}
Write-Warning 'This is a test certificate. Remove the package and certificate after testing if they are no longer needed.'