Files
Allen Houchins 0611cdbdf8 Add TablePlus as a Windows FMA (#47025)
Add TablePlus Windows packaging: input manifest, PowerShell
install/uninstall scripts, and outputs. The install script runs the Inno
Setup installer silently with /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
/ALLUSERS; the uninstall script locates the Inno Setup uninstaller via
registry and runs it with silent args. apps.json was updated to include
TablePlus and a new outputs/tableplus/windows.json was added with
version 7.1.2, installer URL, sha256, and script references.
2026-06-06 23:15:40 -05:00

63 lines
1.8 KiB
PowerShell

# Attempts to locate TablePlus's Inno Setup uninstaller from the registry and run it silently.
$displayNameLike = "TablePlus*"
$publisher = "TablePlus, Inc"
$paths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
)
$uninstall = $null
foreach ($p in $paths) {
$items = Get-ItemProperty "$p\*" -ErrorAction SilentlyContinue | Where-Object {
$_.DisplayName -like $displayNameLike -and $_.Publisher -like "$publisher*"
}
if ($items) { $uninstall = $items | Select-Object -First 1; break }
}
if (-not $uninstall -or -not $uninstall.UninstallString) {
Write-Host "Uninstall entry not found"
Exit 0
}
Stop-Process -Name "TablePlus" -Force -ErrorAction SilentlyContinue
$uninstallCommand = $uninstall.UninstallString
$uninstallArgs = "/VERYSILENT /NORESTART"
$splitArgs = $uninstallCommand.Split('"')
if ($splitArgs.Length -gt 1) {
if ($splitArgs.Length -eq 3) {
$existingArgs = $splitArgs[2].Trim()
if ($existingArgs -ne '') {
$uninstallArgs = "$existingArgs $uninstallArgs"
}
} elseif ($splitArgs.Length -gt 3) {
Write-Host "Error: Uninstall command contains multiple quoted strings"
Exit 1
}
$uninstallCommand = $splitArgs[1]
}
Write-Host "Uninstall command: $uninstallCommand"
Write-Host "Uninstall args: $uninstallArgs"
try {
$processOptions = @{
FilePath = $uninstallCommand
ArgumentList = $uninstallArgs
NoNewWindow = $true
PassThru = $true
Wait = $true
}
$process = Start-Process @processOptions
$exitCode = $process.ExitCode
Write-Host "Uninstall exit code: $exitCode"
Exit $exitCode
} catch {
Write-Host "Error running uninstaller: $_"
Exit 1
}