33 lines
1.7 KiB
PowerShell
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.'
|