This pull request adds support for several new Windows applications to the maintained apps list by introducing new JSON manifest files and corresponding install/uninstall scripts. Each manifest provides configuration details required for automated installation and categorization. **New application manifests added:** _Productivity applications:_ * Added `nagstamon.json` for Nagstamon, including install/uninstall scripts and an installation script using Inno Setup silent options. [[1]](diffhunk://#diff-3c74eeef956d1978f39fb41e4a4c8373a177d3ba899e30cfc7c23de097132689R1-R12) [[2]](diffhunk://#diff-8befb290da9fe695b0d4c5725a819262c482367c26e5c725e64507abb54638d1R1-R26) * Added manifests for Notesnook, ocenaudio, OpenRefine, Portfolio Performance, PreForm, Proton Drive, Readest, Remote Desktop Manager, Royal TSX, and RetroArch. [[1]](diffhunk://#diff-8f46fa9ee50b09b7c763c04146a369add5d7edec998ccb1fdcd8b961d6250f2cR1-R13) [[2]](diffhunk://#diff-3e717b6b7498ecf39f00e628d51b6b6884545e9a781605fba7ec3fdd3e9ece35R1-R12) [[3]](diffhunk://#diff-ef74fc4e086aabedf80c1ef26493442f24e01dbbbfc169ecde810b6ecfbbc154R1-R12) [[4]](diffhunk://#diff-0e0d13f35ef324e599a8487825d4844c2f60ad4d1bc68dc2a4f06f8276b85c5dR1-R12) [[5]](diffhunk://#diff-c395a54083c1e88011dae0ba639b32dcb173ce21b0e21abb8b65ff5335418c38R1-R12) [[6]](diffhunk://#diff-3a05b3cd4f042b709d41364f93b1d9cea907f0ad8bccf9514cda282a2c2632a3R1-R12) [[7]](diffhunk://#diff-093dfe2c06862cee70bf9b57dcd535660a41665eba49b095b91b8fa6ffcdf99dR1-R12) [[8]](diffhunk://#diff-09f2f1905ce5794bf248dcf0d2724b435a2255451adeeac3226197ceea7863f9R1-R10) [[9]](diffhunk://#diff-00f35514528449c1248f5369bd4143470a48692415b228615c23326f5cbccc87R1-R10) [[10]](diffhunk://#diff-1ccb271d6fb63b2a250720c43073502dc71c1b1adc6ffd951de002ea426ef785R1-R12) _Developer tools:_ * Added manifests for NoSQL Workbench, Proxyman, and Reqable, each with install/uninstall scripts. [[1]](diffhunk://#diff-13c131b80d23c96d4a163c3842f6b5138b908a478b89edb4a42d5379ed7ba174R1-R12) [[2]](diffhunk://#diff-e963cb7961788f69a34e407e6ae046cf13dc66af1e2ac0f57a42cdf1b114c568R1-R12) [[3]](diffhunk://#diff-da81ab2f561640b12b95cae1ceb2ab022f228acdfc94d9005e885261d52224a5R1-R12) _Browsers:_ * Added manifests for Pale Moon and Safe Exam Browser, including install/uninstall scripts. [[1]](diffhunk://#diff-3cee4f5e3d10ec8db232ae70aac509b86ca0eb4d5e4f97f677ecba66a178232eR1-R12) [[2]](diffhunk://#diff-211c50486f9997fbdd63aa081c265a8e6d27d91f6ed00237d3f3e92f41bfcd98R1-R12) _Other tools:_ * Added manifest for ProtoPie and Requestly, both with install/uninstall scripts. [[1]](diffhunk://#diff-8daee55ad74b517db4b49aaef6e80a329e27702a5e6f81c280685ebe520c6c62R1-R12) [[2]](diffhunk://#diff-9c8c73d3492b7bf6cd819f2f6ba3a012441f4a8d51ecffd99b101462e074756bR1-R13) **Script additions:** * Introduced a PowerShell install script for Nagstamon (`nagstamon_install.ps1`) that uses silent install flags for unattended installation. These changes expand the catalog of supported Windows applications, enabling automated deployment and management for a wider range of software. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
69 lines
2.0 KiB
PowerShell
69 lines
2.0 KiB
PowerShell
# Locate the uninstall entry in the registry and run it silently.
|
|
|
|
$displayNameLike = "Standard Notes*"
|
|
$publisher = "Standard Notes"
|
|
|
|
$paths = @(
|
|
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
|
|
'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 -eq "" -or $_.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
|
|
}
|
|
|
|
try {
|
|
$uninstallString = $uninstall.UninstallString
|
|
|
|
# Parse the uninstaller executable path from the UninstallString.
|
|
if ($uninstallString -match '^"([^"]+)"') {
|
|
$uninstallExe = $matches[1]
|
|
} elseif ($uninstallString -match '^(.+?\.exe)') {
|
|
$uninstallExe = $matches[1]
|
|
} else {
|
|
$uninstallExe = $uninstallString
|
|
}
|
|
|
|
# Determine the install directory for cleanup.
|
|
$installDir = $uninstall.InstallLocation
|
|
if (-not $installDir -or -not (Test-Path $installDir)) {
|
|
$installDir = Split-Path $uninstallExe -Parent
|
|
}
|
|
|
|
$uninstallArgs = @("/S", "_?=$installDir")
|
|
|
|
Write-Host "Uninstall command: $uninstallExe"
|
|
Write-Host "Uninstall args: $uninstallArgs"
|
|
|
|
$processOptions = @{
|
|
FilePath = $uninstallExe
|
|
ArgumentList = $uninstallArgs
|
|
PassThru = $true
|
|
Wait = $true
|
|
NoNewWindow = $true
|
|
}
|
|
|
|
$process = Start-Process @processOptions
|
|
$exitCode = $process.ExitCode
|
|
Write-Host "Uninstall exit code: $exitCode"
|
|
|
|
if ($installDir -and (Test-Path $installDir)) {
|
|
Remove-Item $installDir -Recurse -Force -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
Exit $exitCode
|
|
} catch {
|
|
Write-Host "Error running uninstaller: $_"
|
|
Exit 1
|
|
}
|