param( [Parameter(Position = 0)] [ValidateSet("gui", "install", "uninstall", "new-cert", "sign", "help")] [string]$Command = "help", [Parameter(ValueFromRemainingArguments = $true)] [string[]]$RemainingArguments ) $ErrorActionPreference = "Stop" $root = Split-Path -Parent $MyInvocation.MyCommand.Path function Invoke-MrTrustScript { param([Parameter(Mandatory)][string]$ScriptPath) & powershell.exe -NoProfile -ExecutionPolicy Bypass -File $ScriptPath @RemainingArguments if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } } switch ($Command) { "gui" { Invoke-MrTrustScript -ScriptPath (Join-Path $root "scripts\Start-MrTrustGui.ps1") } "install" { Invoke-MrTrustScript -ScriptPath (Join-Path $root "scripts\Install-MrTrust.ps1") } "uninstall" { Invoke-MrTrustScript -ScriptPath (Join-Path $root "scripts\Uninstall-MrTrust.ps1") } "new-cert" { Invoke-MrTrustScript -ScriptPath (Join-Path $root "scripts\New-MrTrustCertificate.ps1") } "sign" { Invoke-MrTrustScript -ScriptPath (Join-Path $root "scripts\Sign-MrTrustProject.ps1") } default { Write-Host "MrTrust commands:" Write-Host " .\MrTrust.ps1 gui Open the MrTrust Windows interface" Write-Host " .\MrTrust.ps1 install Install MrSphay public trust certificates" Write-Host " .\MrTrust.ps1 uninstall Remove MrSphay public trust certificates" Write-Host " .\MrTrust.ps1 new-cert Create MrSphay root and signing certificates" Write-Host " .\MrTrust.ps1 sign Sign build artifacts" Write-Host "" Write-Host "Examples:" Write-Host " .\MrTrust.ps1 gui" Write-Host " .\MrTrust.ps1 install" Write-Host " .\MrTrust.ps1 install -Scope LocalMachine" Write-Host " .\MrTrust.ps1 sign -Path .\dist\MyApp.exe -PfxPath .\private\MrSphay-CodeSigning.pfx" } }