This pull request adds initial configuration files for a variety of popular Windows applications to the `ee/maintained-apps/inputs/winget` directory. Each file defines metadata and installation details for a specific application, supporting automated installation and categorization. The changes expand the catalog of supported apps, especially in the categories of developer tools and productivity. **New application configurations added:** * Developer tools: - Added configurations for JetBrains IDEs (`clion.json`, `datagrip.json`, `goland.json`), DBeaver, MySQL Workbench, MongoDB Compass, JetBrains Toolbox, GitKraken, Bruno, Insomnia, Lens, and balenaEtcher, including install/uninstall scripts where applicable. [[1]](diffhunk://#diff-3e4e7adc4b239327cc5d40ac702d757e156e016aec1c7c5f94c071a75fe3c4a3R1-R13) [[2]](diffhunk://#diff-7c80111fa8fde96fcce98662a233200fd288ce0d43d590382e294746cfdccb80R1-R13) [[3]](diffhunk://#diff-1b9a892edfa9f0d5a6a9bedfcfb05f5f81c28b8b8eb24b7af1f69fcf365faa95R1-R13) [[4]](diffhunk://#diff-c4bd792a8985240e9c56c8a8b0ad42e494cb2f66243c9c003367b97b6281b8ebR1-R13) [[5]](diffhunk://#diff-9aca1279003b064f238c0d041a20cdd5ae1d739c4d82e76cde9c53fa19f6b385R1-R11) [[6]](diffhunk://#diff-b04e68ea6589d16110da5a46758373bdb4de968ec40d4c87e818a9deb1cf038eR1-R10) [[7]](diffhunk://#diff-7118d8f25ce533ac6ff68996ef77f1414c40e1303e594a914c5ba8f38ec64276R1-R12) [[8]](diffhunk://#diff-0ead97641d521188d580d83b60dea688638944ef1a757a779e433cff169059b4R1-R12) [[9]](diffhunk://#diff-bf104e3d22035060f71605438fceffe9f706146eed7d8d30c3d2abf6a5ee5cefR1-R10) [[10]](diffhunk://#diff-b3eda4fb883851adf2c082f4b59cd8b1a7202ba4259e62bc34b048896567e766R1-R12) [[11]](diffhunk://#diff-223a89b91fd09d840a1d66037849717db5b28a6a811462e564e1006bd0ad171aR1-R13) [[12]](diffhunk://#diff-0081626467bacfa7b6e2399e7aeb2daec0b4592e4de1d0b48d5f1a9f484ec1eeR1-R12) * Productivity: - Added configurations for Audacity, Bitwarden, Dropbox, draw.io, Loom, Miro, and calibre, with relevant metadata and scripts for installation management. [[1]](diffhunk://#diff-17343e25b14845b33ccdd21e083514798da3d2060828a99f6a437bb7390982ecR1-R13) [[2]](diffhunk://#diff-e5698c640f9ea28bea0dcae73b24da580297f52098f5f626551729463489e944R1-R12) [[3]](diffhunk://#diff-cc13e4338596d6f03fe506a885309dd2073394d3213c289aea5b269ce9f872feR1-R10) [[4]](diffhunk://#diff-8d8db7aa83e73313721dcdf3a9dad437a9b448cdd235d8e04e1287b16c0484aeR1-R12) [[5]](diffhunk://#diff-277c3efb81a8d39babfc3c72cac751c85ba399f2ae0f2005cd5c5fc24e952e6eR1-R12) [[6]](diffhunk://#diff-1e495b3b54ed010a6f44538f7269880065e9736f56b36603d43c6676528b2988R1-R12) [[7]](diffhunk://#diff-b6459d15c09716fbe644e8cb949cf012953b556044eacbd1a8447f1d39dedadfR1-R11) * Communication: - Added configuration for Dialpad, including install and uninstall scripts. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **New Features** * Added Windows application support for 35+ popular tools and apps including productivity (Dropbox, Loom, Obsidian), development (JetBrains IDEs, GitKraken, Insomnia, Rancher Desktop), security (Bitwarden, NordPass, NordVPN), and utility applications (Audacity, draw.io, Signal). <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46313?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai -->
94 lines
2.8 KiB
PowerShell
94 lines
2.8 KiB
PowerShell
# Locates WebStorm's NSIS uninstaller from the registry and runs it silently.
|
|
# JetBrains NSIS installers embed the version in DisplayName (e.g.
|
|
# "WebStorm 2026.1.2"), so we match by prefix and require the JetBrains
|
|
# publisher to avoid collisions with other JetBrains IDEs.
|
|
|
|
$softwareNameLike = "WebStorm*"
|
|
$publisherLike = "*JetBrains*"
|
|
|
|
$paths = @(
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
|
|
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
|
|
)
|
|
|
|
$exitCode = 0
|
|
|
|
try {
|
|
|
|
[array]$uninstallKeys = Get-ChildItem `
|
|
-Path $paths `
|
|
-ErrorAction SilentlyContinue |
|
|
ForEach-Object { Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue }
|
|
|
|
$selected = $null
|
|
foreach ($key in $uninstallKeys) {
|
|
if ($key.DisplayName -and $key.DisplayName -like $softwareNameLike -and $key.Publisher -like $publisherLike) {
|
|
$selected = $key
|
|
break
|
|
}
|
|
}
|
|
|
|
if (-not $selected -or -not $selected.UninstallString) {
|
|
Write-Host "Uninstall entry not found for $softwareNameLike"
|
|
Exit 1
|
|
}
|
|
|
|
# Best-effort: stop the IDE so the uninstaller doesn't fail on locked files.
|
|
Stop-Process -Name "webstorm64" -Force -ErrorAction SilentlyContinue
|
|
Stop-Process -Name "webstorm" -Force -ErrorAction SilentlyContinue
|
|
Stop-Process -Name "fsnotifier" -Force -ErrorAction SilentlyContinue
|
|
|
|
$uninstallCommand = $selected.UninstallString
|
|
|
|
# Split the uninstall string into exe + args. Handle both quoted and unquoted
|
|
# exe paths.
|
|
$exePath = ""
|
|
$existingArgs = ""
|
|
if ($uninstallCommand -match '^\s*"([^"]+)"\s*(.*)$') {
|
|
# Quoted path: "C:\Path With Spaces\uninst.exe" [args]
|
|
$exePath = $matches[1]
|
|
$existingArgs = $matches[2].Trim()
|
|
} elseif ($uninstallCommand -match '(?i)^\s*(.+?\.exe)\s*(.*)$') {
|
|
# Unquoted path that may contain spaces: capture through the .exe.
|
|
# JetBrains stores e.g.
|
|
# C:\Program Files\JetBrains\WebStorm 2026.1.2\bin\Uninstall.exe
|
|
$exePath = $matches[1]
|
|
$existingArgs = $matches[2].Trim()
|
|
} elseif ($uninstallCommand -match '^\s*(\S+)\s*(.*)$') {
|
|
# Fallback: no .exe found, split on first whitespace.
|
|
$exePath = $matches[1]
|
|
$existingArgs = $matches[2].Trim()
|
|
} else {
|
|
Throw "Could not parse uninstall string: $uninstallCommand"
|
|
}
|
|
|
|
# NSIS uninstallers require /S for silent uninstall.
|
|
if ($existingArgs -notmatch '\b/S\b') {
|
|
$existingArgs = ("$existingArgs /S").Trim()
|
|
}
|
|
|
|
Write-Host "Selected entry DisplayName: $($selected.DisplayName)"
|
|
Write-Host "Uninstall command: $exePath"
|
|
Write-Host "Uninstall args: $existingArgs"
|
|
|
|
$processOptions = @{
|
|
FilePath = $exePath
|
|
PassThru = $true
|
|
Wait = $true
|
|
}
|
|
|
|
if ($existingArgs -ne '') {
|
|
$processOptions.ArgumentList = $existingArgs
|
|
}
|
|
|
|
$process = Start-Process @processOptions
|
|
$exitCode = $process.ExitCode
|
|
Write-Host "Uninstall exit code: $exitCode"
|
|
|
|
Exit $exitCode
|
|
|
|
} catch {
|
|
Write-Host "Error: $_"
|
|
Exit 1
|
|
}
|