From 3dec9a0ea106bdcd73d0533ee975139d5184c38c Mon Sep 17 00:00:00 2001 From: fleet-release <80479975+fleet-release@users.noreply.github.com> Date: Wed, 27 May 2026 21:22:56 -0500 Subject: [PATCH] Update Fleet-maintained apps (#46307) Automated ingestion of latest Fleet-maintained app data. ## 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 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) Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> --- ee/maintained-apps/outputs/1password/darwin.json | 6 +++--- .../outputs/amazon-chime/darwin.json | 8 ++++---- ee/maintained-apps/outputs/cursor/windows.json | 8 ++++---- ee/maintained-apps/outputs/drawio/darwin.json | 8 ++++---- ee/maintained-apps/outputs/dropbox/darwin.json | 14 +++++++------- .../outputs/google-chrome/windows.json | 4 ++-- .../outputs/gotomeeting/windows.json | 4 ++-- ee/maintained-apps/outputs/granola/darwin.json | 8 ++++---- ee/maintained-apps/outputs/granola/windows.json | 8 ++++---- .../outputs/jabra-direct/darwin.json | 4 ++-- ee/maintained-apps/outputs/krita/windows.json | 8 ++++---- .../outputs/microsoft-edge/windows.json | 8 ++++---- ee/maintained-apps/outputs/onedrive/darwin.json | 8 ++++---- ee/maintained-apps/outputs/signal/darwin.json | 8 ++++---- .../outputs/visual-studio-code/darwin.json | 8 ++++---- ee/maintained-apps/outputs/whatsapp/darwin.json | 4 ++-- ee/maintained-apps/outputs/wrike/darwin.json | 8 ++++---- ee/maintained-apps/outputs/zed/darwin.json | 8 ++++---- ee/maintained-apps/outputs/zen/darwin.json | 8 ++++---- 19 files changed, 70 insertions(+), 70 deletions(-) diff --git a/ee/maintained-apps/outputs/1password/darwin.json b/ee/maintained-apps/outputs/1password/darwin.json index 0ad839ca4a..f87d756a68 100644 --- a/ee/maintained-apps/outputs/1password/darwin.json +++ b/ee/maintained-apps/outputs/1password/darwin.json @@ -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" } } diff --git a/ee/maintained-apps/outputs/amazon-chime/darwin.json b/ee/maintained-apps/outputs/amazon-chime/darwin.json index 41198d09d0..3c83728811 100644 --- a/ee/maintained-apps/outputs/amazon-chime/darwin.json +++ b/ee/maintained-apps/outputs/amazon-chime/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/cursor/windows.json b/ee/maintained-apps/outputs/cursor/windows.json index d6cd77f3f6..7a4fd400bd 100644 --- a/ee/maintained-apps/outputs/cursor/windows.json +++ b/ee/maintained-apps/outputs/cursor/windows.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/drawio/darwin.json b/ee/maintained-apps/outputs/drawio/darwin.json index 9672a99e9d..48bb980e02 100644 --- a/ee/maintained-apps/outputs/drawio/darwin.json +++ b/ee/maintained-apps/outputs/drawio/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/dropbox/darwin.json b/ee/maintained-apps/outputs/dropbox/darwin.json index 82e5a6ff58..ebe8b9145f 100644 --- a/ee/maintained-apps/outputs/dropbox/darwin.json +++ b/ee/maintained-apps/outputs/dropbox/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "252.4.3485", + "version": "254.4.2518", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox' AND version_compare(bundle_short_version, '252.4.3485') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox' AND version_compare(bundle_short_version, '254.4.2518') < 0);" }, - "installer_url": "https://edge.dropboxstatic.com/dbx-releng/client/Dropbox%20252.4.3485.arm64.dmg", + "installer_url": "https://edge.dropboxstatic.com/dbx-releng/client/Dropbox%20254.4.2518.arm64.dmg", "install_script_ref": "59c04bcb", - "uninstall_script_ref": "4d5c7d9c", - "sha256": "a2f59c67e2a65851ff567d78b530d7a57c30b663e940849a65b6ff29154ec8eb", + "uninstall_script_ref": "f2e8d2ab", + "sha256": "b51a13b06556d601ecd5a36edb0d43fcc9d6e42cdb1fdf7e18d0fb36734d9e8b", "default_categories": [ "Productivity" ] } ], "refs": { - "4d5c7d9c": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\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\nremove_launchctl_service 'com.dropbox.DropboxMacUpdate.agent'\nsudo rm -rf '/Library/DropboxHelperTools'\nsudo rm -rf '/Library/Preferences/com.getdropbox.dropbox.dbkextd.plist'\nsudo rm -rf \"$APPDIR/Dropbox.app\"\ntrash $LOGGED_IN_USER '~/.dropbox'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.com.getdropbox.dropbox.sync'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.alternatenotificationservice'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.client.crashpad'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.foldertagger'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.TransferExtension'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Application Support/DropboxElectron'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Caches/CloudKit/com.apple.bird/iCloud.com.getdropbox.Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.dropbox.DropboxUpdater'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.getdropbox.dropbox'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.getdropbox.DropboxMetaInstaller'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/CloudStorage/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.activityprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.alternatenotificationservice'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.foldertagger'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.TransferExtension'\ntrash $LOGGED_IN_USER '~/Library/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Dropbox/DropboxMacUpdate.app/Contents/MacOS/DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.getdropbox.dropbox.sync'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/com.dropbox.client.crashpad'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.getdropbox.dropbox'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.dropbox.DropboxMacUpdate.agent.plist'\ntrash $LOGGED_IN_USER '~/Library/Logs/Dropbox_debug.log'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.apple.FileProvider/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.DropboxMacUpdate.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.DropboxMonitor.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.tungsten.helper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.getdropbox.dropbox.plist'\n", - "59c04bcb": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\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 eval \"export $var_name=0\"\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 eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\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\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; 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 relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.getdropbox.dropbox'\nif [ -d \"$APPDIR/Dropbox.app\" ]; then\n\tsudo mv \"$APPDIR/Dropbox.app\" \"$TMPDIR/Dropbox.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Dropbox.app\" \"$APPDIR\"\nrelaunch_application 'com.getdropbox.dropbox'\n" + "59c04bcb": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\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 eval \"export $var_name=0\"\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 eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\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\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; 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 relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.getdropbox.dropbox'\nif [ -d \"$APPDIR/Dropbox.app\" ]; then\n\tsudo mv \"$APPDIR/Dropbox.app\" \"$TMPDIR/Dropbox.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Dropbox.app\" \"$APPDIR\"\nrelaunch_application 'com.getdropbox.dropbox'\n", + "f2e8d2ab": "#!/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\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\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\nremove_launchctl_service 'com.dropbox.DropboxMacUpdate.agent'\nquit_application 'com.getdropbox.dropbox'\nsudo rm -rf '/Library/DropboxHelperTools'\nsudo rm -rf '/Library/Preferences/com.getdropbox.dropbox.dbkextd.plist'\nsudo rm -rf \"$APPDIR/Dropbox.app\"\ntrash $LOGGED_IN_USER '~/.dropbox'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.com.getdropbox.dropbox.sync'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.alternatenotificationservice'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.client.crashpad'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.dropbox.foldertagger'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.getdropbox.dropbox.TransferExtension'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Application Support/DropboxElectron'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Caches/CloudKit/com.apple.bird/iCloud.com.getdropbox.Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.dropbox.DropboxUpdater'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.getdropbox.dropbox'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.getdropbox.DropboxMetaInstaller'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/CloudStorage/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.activityprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.alternatenotificationservice'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.dropbox.foldertagger'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.getdropbox.dropbox.TransferExtension'\ntrash $LOGGED_IN_USER '~/Library/Dropbox'\ntrash $LOGGED_IN_USER '~/Library/Dropbox/DropboxMacUpdate.app/Contents/MacOS/DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.getdropbox.dropbox.sync'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/com.dropbox.client.crashpad'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/com.getdropbox.dropbox.garcon'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.dropbox.DropboxMacUpdate'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.getdropbox.dropbox'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.dropbox.DropboxMacUpdate.agent.plist'\ntrash $LOGGED_IN_USER '~/Library/Logs/Dropbox_debug.log'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.apple.FileProvider/com.getdropbox.dropbox.fileprovider'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.DropboxMacUpdate.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.DropboxMonitor.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dropbox.tungsten.helper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.getdropbox.dropbox.plist'\n" } } diff --git a/ee/maintained-apps/outputs/google-chrome/windows.json b/ee/maintained-apps/outputs/google-chrome/windows.json index c50f8a1e54..2a13cb66b1 100644 --- a/ee/maintained-apps/outputs/google-chrome/windows.json +++ b/ee/maintained-apps/outputs/google-chrome/windows.json @@ -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", diff --git a/ee/maintained-apps/outputs/gotomeeting/windows.json b/ee/maintained-apps/outputs/gotomeeting/windows.json index b131b4cc98..eb1a87c1e1 100644 --- a/ee/maintained-apps/outputs/gotomeeting/windows.json +++ b/ee/maintained-apps/outputs/gotomeeting/windows.json @@ -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 \") 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 \") 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" } } diff --git a/ee/maintained-apps/outputs/granola/darwin.json b/ee/maintained-apps/outputs/granola/darwin.json index 17b89e52ba..33214c3fab 100644 --- a/ee/maintained-apps/outputs/granola/darwin.json +++ b/ee/maintained-apps/outputs/granola/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/granola/windows.json b/ee/maintained-apps/outputs/granola/windows.json index aac7fe65ad..a1528d1569 100644 --- a/ee/maintained-apps/outputs/granola/windows.json +++ b/ee/maintained-apps/outputs/granola/windows.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/jabra-direct/darwin.json b/ee/maintained-apps/outputs/jabra-direct/darwin.json index 1bdd876014..aa43dcc824 100644 --- a/ee/maintained-apps/outputs/jabra-direct/darwin.json +++ b/ee/maintained-apps/outputs/jabra-direct/darwin.json @@ -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", diff --git a/ee/maintained-apps/outputs/krita/windows.json b/ee/maintained-apps/outputs/krita/windows.json index 2654f23bea..a02b41c068 100644 --- a/ee/maintained-apps/outputs/krita/windows.json +++ b/ee/maintained-apps/outputs/krita/windows.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/microsoft-edge/windows.json b/ee/maintained-apps/outputs/microsoft-edge/windows.json index 2aea3da46d..1043bb1c7d 100644 --- a/ee/maintained-apps/outputs/microsoft-edge/windows.json +++ b/ee/maintained-apps/outputs/microsoft-edge/windows.json @@ -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" ], diff --git a/ee/maintained-apps/outputs/onedrive/darwin.json b/ee/maintained-apps/outputs/onedrive/darwin.json index e2bb66f770..77d0cb8a99 100644 --- a/ee/maintained-apps/outputs/onedrive/darwin.json +++ b/ee/maintained-apps/outputs/onedrive/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/signal/darwin.json b/ee/maintained-apps/outputs/signal/darwin.json index fa4c8ebe8e..c7946e683b 100644 --- a/ee/maintained-apps/outputs/signal/darwin.json +++ b/ee/maintained-apps/outputs/signal/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/visual-studio-code/darwin.json b/ee/maintained-apps/outputs/visual-studio-code/darwin.json index 3daf4a1c1c..2965d1dc08 100644 --- a/ee/maintained-apps/outputs/visual-studio-code/darwin.json +++ b/ee/maintained-apps/outputs/visual-studio-code/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/whatsapp/darwin.json b/ee/maintained-apps/outputs/whatsapp/darwin.json index ae199c4d8d..2d56be4ef9 100644 --- a/ee/maintained-apps/outputs/whatsapp/darwin.json +++ b/ee/maintained-apps/outputs/whatsapp/darwin.json @@ -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", diff --git a/ee/maintained-apps/outputs/wrike/darwin.json b/ee/maintained-apps/outputs/wrike/darwin.json index 61b80a815f..53c8193b20 100644 --- a/ee/maintained-apps/outputs/wrike/darwin.json +++ b/ee/maintained-apps/outputs/wrike/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/zed/darwin.json b/ee/maintained-apps/outputs/zed/darwin.json index f5e1b47c99..fd61ecb751 100644 --- a/ee/maintained-apps/outputs/zed/darwin.json +++ b/ee/maintained-apps/outputs/zed/darwin.json @@ -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" ] diff --git a/ee/maintained-apps/outputs/zen/darwin.json b/ee/maintained-apps/outputs/zen/darwin.json index cfa41df891..979c3d704a 100644 --- a/ee/maintained-apps/outputs/zen/darwin.json +++ b/ee/maintained-apps/outputs/zen/darwin.json @@ -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" ]