Update Fleet-maintained apps (#46307)

Automated ingestion of latest Fleet-maintained app data.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Updated maintained application metadata for 18+ apps including
1Password, Google Chrome, Signal, Visual Studio Code, and others to
support newer versions on macOS and Windows platforms.
* Synchronized installer URLs, integrity checksums, and version
references for latest releases.
* Enhanced uninstall scripts for improved application cleanup on system
removal.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46307?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 -->

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
This commit is contained in:
fleet-release
2026-05-27 21:22:56 -05:00
committed by GitHub
co-authored by allenhouchins
parent f975c462c0
commit 3dec9a0ea1
19 changed files with 70 additions and 70 deletions
@@ -8,7 +8,7 @@
},
"installer_url": "https://downloads.1password.com/mac/1Password.pkg",
"install_script_ref": "ef2a17ff",
"uninstall_script_ref": "f58c31b3",
"uninstall_script_ref": "dadf8c51",
"sha256": "no_check",
"default_categories": [
"Productivity"
@@ -16,7 +16,7 @@
}
],
"refs": {
"ef2a17ff": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.1password.1password'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n",
"f58c31b3": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/1Password.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.1password*'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.1password-launcher'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Application Support/1Password'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Arc/User Data/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.1password.1password.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/1Password*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Mozilla/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Vivaldi/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Containers/2BUA8C4S2C.com.1password.browser-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.1password*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.1password'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Logs/1Password'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.1password.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/group.com.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.1password.1password.savedState'\n"
"dadf8c51": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.1password.1password'\nsudo rm -rf \"$APPDIR/1Password.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.1password*'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.1password-launcher'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Application Support/1Password'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Arc/User Data/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.1password.1password.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/1Password*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Mozilla/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Vivaldi/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Containers/2BUA8C4S2C.com.1password.browser-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.1password*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.1password'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Logs/1Password'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.1password.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/group.com.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.1password.1password.savedState'\n",
"ef2a17ff": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.1password.1password'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n"
}
}
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "5.23.22522",
"version": "5.23.22533",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazon.Amazon-Chime';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazon.Amazon-Chime' AND version_compare(bundle_short_version, '5.23.22522') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazon.Amazon-Chime' AND version_compare(bundle_short_version, '5.23.22533') < 0);"
},
"installer_url": "https://clients.chime.aws/mac-nme/AmazonChime-5.23.22522.dmg",
"installer_url": "https://clients.chime.aws/mac-nme/AmazonChime-5.23.22533.dmg",
"install_script_ref": "6ac4810f",
"uninstall_script_ref": "0b18e0fa",
"sha256": "c1a700317bbf684a916bdd3fbe57b504884853070d757b1bb0b43bdc8139ff1f",
"sha256": "6db57a44e3db098f46f4ecfb5aa04e0a6e5e8f5fabd609a6fa15d3d89081f234",
"default_categories": [
"Communication"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "3.5.33",
"version": "3.5.38",
"queries": {
"exists": "SELECT 1 FROM programs WHERE name = 'Cursor' AND publisher = 'Anysphere';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cursor' AND publisher = 'Anysphere' AND version_compare(version, '3.5.33') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cursor' AND publisher = 'Anysphere' AND version_compare(version, '3.5.38') < 0);"
},
"installer_url": "https://downloads.cursor.com/production/aac81804b986d739acab348ed96b8bea6e83cc57/win32/x64/system-setup/CursorSetup-x64-3.5.33.exe",
"installer_url": "https://downloads.cursor.com/production/009bb5a3600dd98fe1c1f25798f767f686e14759/win32/x64/system-setup/CursorSetup-x64-3.5.38.exe",
"install_script_ref": "03589b5e",
"uninstall_script_ref": "6c8096c5",
"sha256": "e9b2399e783dc846142eeaa0b7292da1e9abd33cd7fbd48d9af6c7f02ae9c006",
"sha256": "20f7c16ec4a101ceb8f19846b546dc6f80b9b9ba6dc333fce93c8689713ee4ab",
"default_categories": [
"Developer tools"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "30.0.2",
"version": "30.0.4",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop' AND version_compare(bundle_short_version, '30.0.2') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop' AND version_compare(bundle_short_version, '30.0.4') < 0);"
},
"installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.0.2/draw.io-arm64-30.0.2.dmg",
"installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.0.4/draw.io-arm64-30.0.4.dmg",
"install_script_ref": "c5526876",
"uninstall_script_ref": "f7bbd18b",
"sha256": "cabbb29b250468d906c2cdd3a3920d96783d3af70871f17b8eed0cd3fa8d2cbf",
"sha256": "7e598dcd83dbebe15969cb0e20b0a987140ab9e6fe3e69544f667bab0cf89aba",
"default_categories": [
"Productivity"
]
File diff suppressed because one or more lines are too long
@@ -1,10 +1,10 @@
{
"versions": [
{
"version": "148.0.7778.179",
"version": "148.0.7778.217",
"queries": {
"exists": "SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC' AND version_compare(version, '148.0.7778.179') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC' AND version_compare(version, '148.0.7778.217') < 0);"
},
"installer_url": "https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi",
"install_script_ref": "8959087b",
@@ -8,7 +8,7 @@
},
"installer_url": "https://link.gotomeeting.com/latest-msi",
"install_script_ref": "36ce6af0",
"uninstall_script_ref": "cef7f8fa",
"uninstall_script_ref": "f5235386",
"sha256": "4188e7735eabcc313c7f56111bd13e8b524ba0ab872d6042de69e08657cec3b9",
"default_categories": [
"Communication"
@@ -17,6 +17,6 @@
],
"refs": {
"36ce6af0": "# GoToMeeting MSI machine-wide install.\n# G2MINSTALLFORALLUSERS=1 installs for all users (the installer defaults to\n# per-user, G2MINSTALLFORALLUSERS=0). Fleet runs elevated, so this produces a\n# machine-wide install.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\" G2MINSTALLFORALLUSERS=1\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"cef7f8fa": "# Best-effort uninstall for GoToMeeting.\n#\n# The winget installer is the GoToMeeting \"Setup\" bootstrapper (ARPSYSTEMCOMPONENT=1,\n# so it hides itself from Programs and Features). It installs the actual GoToMeeting\n# app, which self-registers a separate, visible uninstall entry (DisplayName like\n# \"GoToMeeting <version>\") whose uninstaller is G2MUninstall.exe.\n#\n# We locate that entry and run G2MUninstall.exe directly. NOTE: the registry\n# QuietUninstallString uses \"/S\", which G2MUninstall.exe does not recognize as a\n# silent switch (it hangs waiting on UI). The vendor's documented silent switch\n# is \"/silent\" (see silentinstallhq.com), so we build the arguments ourselves\n# rather than trusting the registry string.\n\n$softwareNameLike = \"GoToMeeting*\"\n\n$paths = @(\n 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall',\n 'HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall',\n 'HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall'\n)\n\n$exitCode = 0\n\ntry {\n\n[array]$uninstallKeys = Get-ChildItem `\n -Path $paths `\n -ErrorAction SilentlyContinue |\n ForEach-Object { Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue }\n\n$selected = $null\nforeach ($key in $uninstallKeys) {\n if ($key.DisplayName -and $key.DisplayName -like $softwareNameLike) {\n $selected = $key\n break\n }\n}\n\nif (-not $selected) {\n Write-Host \"Uninstall entry not found for $softwareNameLike\"\n Exit 1\n}\n\n# Best-effort: stop running GoToMeeting processes so the uninstaller doesn't\n# fail on locked files.\nforeach ($proc in @(\"g2mstart\", \"g2mlauncher\", \"g2mcomm\", \"g2muicore\", \"g2mupdate\", \"GoToMeeting\", \"GoTo\")) {\n Stop-Process -Name $proc -Force -ErrorAction SilentlyContinue\n}\n\n# Extract just the uninstaller exe path from whichever registry string is\n# available; we supply the silent switches ourselves.\n$uninstallCommand = if ($selected.QuietUninstallString) {\n $selected.QuietUninstallString\n} else {\n $selected.UninstallString\n}\n\nif (-not $uninstallCommand) {\n Write-Host \"Selected entry has no UninstallString: $($selected.DisplayName)\"\n Exit 1\n}\n\n$exePath = \"\"\nif ($uninstallCommand -match '^\\s*\"([^\"]+)\"') {\n # Quoted path\n $exePath = $matches[1]\n} elseif ($uninstallCommand -match '(?i)^\\s*(.+?\\.exe)') {\n # Unquoted path that may contain spaces (e.g. \"C:\\Program Files (x86)\\...\")\n $exePath = $matches[1]\n} else {\n Throw \"Could not parse uninstaller path from: $uninstallCommand\"\n}\n\n# Vendor-documented silent uninstall switches. /ForAllUsers matches the\n# machine-wide install (G2MINSTALLFORALLUSERS=1); /silent is the correct silent\n# switch (NOT /S, which G2MUninstall.exe ignores).\n$uninstallArgs = \"/uninstall /ForAllUsers /silent\"\n\nWrite-Host \"Selected entry DisplayName: $($selected.DisplayName)\"\nWrite-Host \"Uninstall command: $exePath\"\nWrite-Host \"Uninstall args: $uninstallArgs\"\n\n$process = Start-Process -FilePath $exePath -ArgumentList $uninstallArgs -PassThru -Wait\n$exitCode = $process.ExitCode\nWrite-Host \"Uninstall exit code: $exitCode\"\n\n# Treat msiexec-style reboot-required success codes as success.\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) {\n Exit 0\n}\n\nExit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n"
"f5235386": "# Uninstall for GoToMeeting.\n#\n# The winget installer is the GoToMeeting \"Setup\" bootstrapper (ARPSYSTEMCOMPONENT=1,\n# so it hides itself from Programs and Features). It installs the actual GoToMeeting\n# app, which self-registers a separate, visible uninstall entry (DisplayName like\n# \"GoToMeeting <version>\") whose uninstaller is G2MUninstall.exe.\n#\n# We locate that entry and run G2MUninstall.exe directly.\n\n$softwareNameLike = \"GoToMeeting*\"\n\n$paths = @(\n 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall',\n 'HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall',\n 'HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall'\n)\n\n$exitCode = 0\n\ntry {\n\n[array]$uninstallKeys = Get-ChildItem `\n -Path $paths `\n -ErrorAction SilentlyContinue |\n ForEach-Object { Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue }\n\n$selected = $null\nforeach ($key in $uninstallKeys) {\n if ($key.DisplayName -and $key.DisplayName -like $softwareNameLike) {\n $selected = $key\n break\n }\n}\n\nif (-not $selected) {\n Write-Host \"Uninstall entry not found for $softwareNameLike\"\n Exit 1\n}\n\n# Best-effort: stop running GoToMeeting processes so the uninstaller doesn't\n# fail on locked files.\nforeach ($proc in @(\"g2mstart\", \"g2mlauncher\", \"g2mcomm\", \"g2muicore\", \"g2mupdate\", \"GoToMeeting\", \"GoTo\")) {\n Stop-Process -Name $proc -Force -ErrorAction SilentlyContinue\n}\n\n# Extract just the uninstaller exe path from whichever registry string is\n# available; we supply the silent switches ourselves.\n$uninstallCommand = if ($selected.QuietUninstallString) {\n $selected.QuietUninstallString\n} else {\n $selected.UninstallString\n}\n\nif (-not $uninstallCommand) {\n Write-Host \"Selected entry has no UninstallString: $($selected.DisplayName)\"\n Exit 1\n}\n\n$exePath = \"\"\nif ($uninstallCommand -match '^\\s*\"([^\"]+)\"') {\n # Quoted path\n $exePath = $matches[1]\n} elseif ($uninstallCommand -match '(?i)^\\s*(.+?\\.exe)') {\n # Unquoted path that may contain spaces (e.g. \"C:\\Program Files (x86)\\...\")\n $exePath = $matches[1]\n} else {\n Throw \"Could not parse uninstaller path from: $uninstallCommand\"\n}\n\n# Vendor-documented silent uninstall switches. /ForAllUsers matches the\n# machine-wide install (G2MINSTALLFORALLUSERS=1); /silent is the correct silent\n# switch (NOT /S, which G2MUninstall.exe ignores).\n$uninstallArgs = \"/uninstall /ForAllUsers /silent\"\n\nWrite-Host \"Selected entry DisplayName: $($selected.DisplayName)\"\nWrite-Host \"Uninstall command: $exePath\"\nWrite-Host \"Uninstall args: $uninstallArgs\"\n\n$process = Start-Process -FilePath $exePath -ArgumentList $uninstallArgs -PassThru -Wait\n$exitCode = $process.ExitCode\nWrite-Host \"Uninstall exit code: $exitCode\"\n\n# Treat msiexec-style reboot-required success codes as success.\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) {\n Exit 0\n}\n\nExit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n"
}
}
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "7.269.0",
"version": "7.269.1",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.granola.app';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.granola.app' AND version_compare(bundle_short_version, '7.269.0') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.granola.app' AND version_compare(bundle_short_version, '7.269.1') < 0);"
},
"installer_url": "https://dr2v7l5emb758.cloudfront.net/7.269.0/Granola-7.269.0-mac-universal.dmg",
"installer_url": "https://dr2v7l5emb758.cloudfront.net/7.269.1/Granola-7.269.1-mac-universal.dmg",
"install_script_ref": "08986ac7",
"uninstall_script_ref": "67249f33",
"sha256": "c8bfeb310ba07717b0d08e9385dee099935c741fe4ae4cdb14ed3bef72589c86",
"sha256": "3a2c42822724b53f4d457468c1b7b9829f888ea7fcc170a1caaf10986de04cc3",
"default_categories": [
"Productivity"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "7.269.0",
"version": "7.269.1",
"queries": {
"exists": "SELECT 1 FROM programs WHERE name LIKE 'Granola %' AND publisher = 'Granola';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Granola %' AND publisher = 'Granola' AND version_compare(version, '7.269.0') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Granola %' AND publisher = 'Granola' AND version_compare(version, '7.269.1') < 0);"
},
"installer_url": "https://dr2v7l5emb758.cloudfront.net/7.269.0/Granola-7.269.0-win-x64.exe",
"installer_url": "https://dr2v7l5emb758.cloudfront.net/7.269.1/Granola-7.269.1-win-x64.exe",
"install_script_ref": "3f66ac53",
"uninstall_script_ref": "a4fab3f5",
"sha256": "ecd407e1ea46bc3ec25275ef73b37308cf357b29e8a96e052f22d260579bf274",
"sha256": "ba64e959c9686d2d01152a61f11b611e22b80377f838300ad75ebb26d4ddecb7",
"default_categories": [
"Productivity"
]
@@ -1,10 +1,10 @@
{
"versions": [
{
"version": "6.27.03702",
"version": "8.1.14601",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jabra.directonline';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jabra.directonline' AND version_compare(bundle_short_version, '6.27.03702') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jabra.directonline' AND version_compare(bundle_short_version, '8.1.14601') < 0);"
},
"installer_url": "https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg",
"install_script_ref": "7bbfe6e4",
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "5.3.1.100",
"version": "5.3.2.0",
"queries": {
"exists": "SELECT 1 FROM programs WHERE name = 'Krita_x64' AND publisher = 'Krita Foundation';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Krita_x64' AND publisher = 'Krita Foundation' AND version_compare(version, '5.3.1.100') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Krita_x64' AND publisher = 'Krita Foundation' AND version_compare(version, '5.3.2.0') < 0);"
},
"installer_url": "https://download.kde.org/stable/krita/5.3.1/krita-x64-5.3.1-setup.exe",
"installer_url": "https://download.kde.org/stable/krita/5.3.2/krita-x64-5.3.2-setup.exe",
"install_script_ref": "4899cb9d",
"uninstall_script_ref": "1259500a",
"sha256": "ea9236b685ec2f2e6a6d07ea388acf28fd61baf42520b35265bc7c87f8971d24",
"sha256": "7542ddcfe4f75d9ad81337f053e81a4f3740b1d40e4e388a2ba489cfa29113f2",
"default_categories": [
"Productivity"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "148.0.3967.70",
"version": "148.0.3967.83",
"queries": {
"exists": "SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation' AND version_compare(version, '148.0.3967.70') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation' AND version_compare(version, '148.0.3967.83') < 0);"
},
"installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/53d457a0-d60c-48b7-bf76-cb781dd16beb/MicrosoftEdgeEnterpriseX64.msi",
"installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/fc7d62cf-e4c0-4214-abb6-450d9210daf2/MicrosoftEdgeEnterpriseX64.msi",
"install_script_ref": "8959087b",
"uninstall_script_ref": "a173cfc1",
"sha256": "a10e95215d860f76932d815eb2b2d12084a420bf9270afd32fb4500429cbea7a",
"sha256": "766dbe048bafe59ed79a4eaa6796402f3195db2dc40ebd7768cd2a2b706f34dc",
"default_categories": [
"Browsers"
],
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "26.063.0405.0002",
"version": "26.078.0426.0002",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive' AND version_compare(bundle_short_version, '26.063.0405.0002') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive' AND version_compare(bundle_short_version, '26.078.0426.0002') < 0);"
},
"installer_url": "https://oneclient.sfx.ms/Mac/Installers/26.063.0405.0002/universal/OneDrive.pkg",
"installer_url": "https://oneclient.sfx.ms/Mac/Installers/26.078.0426.0002/universal/OneDrive.pkg",
"install_script_ref": "1e78de1c",
"uninstall_script_ref": "814b813a",
"sha256": "2a832e34c4603b7de122d3a7bc7652f1b254dc8af0045f0ec6e4730427f68623",
"sha256": "c500f9fbc51e856fc890832d6e9352c2c0af6a5400a4c4b3e2e2c0ef48ecbbab",
"default_categories": [
"Productivity"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "8.11.0",
"version": "8.12.0",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.whispersystems.signal-desktop';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.whispersystems.signal-desktop' AND version_compare(bundle_short_version, '8.11.0') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.whispersystems.signal-desktop' AND version_compare(bundle_short_version, '8.12.0') < 0);"
},
"installer_url": "https://updates.signal.org/desktop/signal-desktop-mac-arm64-8.11.0.zip",
"installer_url": "https://updates.signal.org/desktop/signal-desktop-mac-arm64-8.12.0.zip",
"install_script_ref": "fac7f399",
"uninstall_script_ref": "a39bd40e",
"sha256": "0471d7c3a83bedcce6e93e5c83adf9b6153d76c3ae73649e5dc580466ace95d2",
"sha256": "086c12eb39cea7c4b8ca28825b2f74d17d954a74ac4a30c8b2a4a78dab80c8b7",
"default_categories": [
"Communication"
]
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "1.121.0",
"version": "1.122.0",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.VSCode';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.VSCode' AND version_compare(bundle_short_version, '1.121.0') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.VSCode' AND version_compare(bundle_short_version, '1.122.0') < 0);"
},
"installer_url": "https://update.code.visualstudio.com/1.121.0/darwin-arm64/stable",
"installer_url": "https://update.code.visualstudio.com/1.122.0/darwin-arm64/stable",
"install_script_ref": "e6d54100",
"uninstall_script_ref": "af401e72",
"sha256": "dd72a92e02431fc0837fb07321d146f00a71c5e62a87e6623f34cbfe860c82b7",
"sha256": "23c9806786a7f78796cd6fcc310c301ad3993fbb8c36959509e7fd2e2d01b6ce",
"default_categories": [
"Developer tools"
]
@@ -1,10 +1,10 @@
{
"versions": [
{
"version": "26.21.15",
"version": "26.21.17",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.whatsapp.WhatsApp';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.whatsapp.WhatsApp' AND version_compare(bundle_short_version, '26.21.15') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.whatsapp.WhatsApp' AND version_compare(bundle_short_version, '26.21.17') < 0);"
},
"installer_url": "https://web.whatsapp.com/desktop/mac_native/release/?configuration=Release&src=whatsapp_downloads_page",
"install_script_ref": "a776e715",
+4 -4
View File
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "4.6.0",
"version": "4.6.1",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.wrike.Wrike';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.wrike.Wrike' AND version_compare(bundle_short_version, '4.6.0') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.wrike.Wrike' AND version_compare(bundle_short_version, '4.6.1') < 0);"
},
"installer_url": "https://dl.wrike.com/download/WrikeDesktopApp_ARM.v4.6.0.dmg",
"installer_url": "https://dl.wrike.com/download/WrikeDesktopApp_ARM.v4.6.1.dmg",
"install_script_ref": "21525012",
"uninstall_script_ref": "ea98f393",
"sha256": "ed72ca481e1f49a160219ac69ecd0b2f7b2093574895a3dcbfb40cf5baafe16b",
"sha256": "4bfe955f8421b5e44770a24481970402856c9f7b3408a89cbfc11495472577a2",
"default_categories": [
"Productivity"
]
+4 -4
View File
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "1.3.7",
"version": "1.4.2",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.3.7') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.4.2') < 0);"
},
"installer_url": "https://zed.dev/api/releases/stable/1.3.7/Zed-aarch64.dmg",
"installer_url": "https://zed.dev/api/releases/stable/1.4.2/Zed-aarch64.dmg",
"install_script_ref": "7a64bca0",
"uninstall_script_ref": "315158ff",
"sha256": "b4f0981fe4d291842b786ad2025aed2da9cc944abf82edb12151b414e4e0549e",
"sha256": "592114c04b32ebab1320562906c777e8150698690711be0abd5ddd6f31ef02c7",
"default_categories": [
"Developer tools"
]
+4 -4
View File
@@ -1,15 +1,15 @@
{
"versions": [
{
"version": "1.20b",
"version": "1.20.1b",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen' AND version_compare(bundle_short_version, '1.20b') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen' AND version_compare(bundle_short_version, '1.20.1b') < 0);"
},
"installer_url": "https://github.com/zen-browser/desktop/releases/download/1.20b/zen.macos-universal.dmg",
"installer_url": "https://github.com/zen-browser/desktop/releases/download/1.20.1b/zen.macos-universal.dmg",
"install_script_ref": "6dc5817a",
"uninstall_script_ref": "f81dafdf",
"sha256": "b08f5dc8c30954d50b1da52d3aec55c5f773a5d9759f2e7c59d63317619050d1",
"sha256": "b2cfc9c5b093da8490415ee7ae839e5cb77d468c3d8827c8090e9b0f2615ff2b",
"default_categories": [
"Browsers"
]