chore: first version

This commit is contained in:
JNIH
2026-07-30 18:39:38 +02:00
commit c953ca8460
54 changed files with 4197 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
param(
[switch]$UseAddAppxPackage,
[switch]$Yes
)
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
$scriptRoot = Split-Path -Parent $PSCommandPath
$msix = Get-ChildItem -Path $scriptRoot -Filter "*.msix" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
$cert = Get-ChildItem -Path $scriptRoot -Filter "*.cer" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
function Test-IsAdministrator {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal]::new($identity)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
function Confirm-Continue {
if ($Yes) {
return
}
Write-Host "This script will install Olive for the current Windows user." -ForegroundColor Yellow
Write-Host "It will import the public certificate into Cert:\LocalMachine\Root. Administrator rights are required."
Write-Host "It will open the MSIX package found next to this script."
Write-Host "It will not configure your Klipy API key. You do that later in Olive settings."
$answer = Read-Host "Continue? Type YES"
if ($answer -ne "YES") {
throw "Cancelled by user."
}
}
function Wait-ForCertificate {
param(
[string]$Thumbprint,
[int]$TimeoutSeconds = 10
)
$deadline = (Get-Date).AddSeconds($TimeoutSeconds)
do {
$root = Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.Thumbprint -eq $Thumbprint } | Select-Object -First 1
if ($null -ne $root) {
return
}
Start-Sleep -Milliseconds 300
} while ((Get-Date) -lt $deadline)
throw "Certificate was imported, but Windows did not report it in Cert:\LocalMachine\Root before timeout."
}
if ($null -eq $msix) {
throw "No .msix file found next to this script."
}
if ($null -eq $cert) {
throw "No .cer certificate found next to this script."
}
if (-not (Test-IsAdministrator)) {
throw "Administrator rights are required to import the Olive signing certificate into Cert:\LocalMachine\Root. Run Install-Olive.cmd, or start PowerShell as administrator."
}
Confirm-Continue
Write-Host "==> Importing certificate into LocalMachine Root" -ForegroundColor Cyan
Import-Certificate -FilePath $cert.FullName -CertStoreLocation Cert:\LocalMachine\Root | Out-Null
$trustedCert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($cert.FullName)
Wait-ForCertificate -Thumbprint $trustedCert.Thumbprint
if ($UseAddAppxPackage) {
Write-Host "==> Installing MSIX with Add-AppxPackage" -ForegroundColor Cyan
Add-AppxPackage -Path $msix.FullName
} else {
Write-Host "==> Opening MSIX with Windows App Installer" -ForegroundColor Cyan
Start-Process -FilePath $msix.FullName -Wait
}
Write-Host ""
Write-Host "Olive install flow completed." -ForegroundColor Green
Write-Host "Restart PowerToys, open Command Palette, launch 'Klipy GIF Picker', then set the Klipy API key in Olive settings."