diff --git a/ee/maintained-apps/outputs/balenaetcher/darwin.json b/ee/maintained-apps/outputs/balenaetcher/darwin.json index 92e90945f6..8189acb837 100644 --- a/ee/maintained-apps/outputs/balenaetcher/darwin.json +++ b/ee/maintained-apps/outputs/balenaetcher/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.1.4", + "version": "2.1.6", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.balena.etcher';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.balena.etcher' AND version_compare(bundle_short_version, '2.1.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.balena.etcher' AND version_compare(bundle_short_version, '2.1.6') < 0);" }, - "installer_url": "https://github.com/balena-io/etcher/releases/download/v2.1.4/balenaEtcher-2.1.4-arm64.dmg", + "installer_url": "https://github.com/balena-io/etcher/releases/download/v2.1.6/balenaEtcher-2.1.6-arm64.dmg", "install_script_ref": "2e2f21f8", "uninstall_script_ref": "17689283", - "sha256": "6196813482f3fe8c329002a46610c7623a7ab8d0e48cdeca21d9dc05eb668dc9", + "sha256": "ecf71fb5e74803ea8d7d16c54378a6a8d964e9808594b867c088222a8cfe3d2b", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/box-drive/windows.json b/ee/maintained-apps/outputs/box-drive/windows.json index 80f8d0074f..2a10f30846 100644 --- a/ee/maintained-apps/outputs/box-drive/windows.json +++ b/ee/maintained-apps/outputs/box-drive/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.50.191", + "version": "2.51.234", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.' AND version_compare(version, '2.50.191') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.' AND version_compare(version, '2.51.234') < 0);" }, - "installer_url": "https://e3.boxcdn.net/desktop/releases/win/BoxDrive-2.50.191.msi", + "installer_url": "https://e3.boxcdn.net/desktop/releases/win/BoxDrive-2.51.234.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "464f6989", - "sha256": "ba0883eebb8d88c2019a6a032cfda870f2447fb75aca63762d9b7af7cb063069", + "sha256": "b45ed2dc6cd1ecfa901a93fbc9cb8b14d0ae77e486a3d40ef13d744bb2f2b840", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/brave-browser/darwin.json b/ee/maintained-apps/outputs/brave-browser/darwin.json index cc3306f237..df3bce2028 100644 --- a/ee/maintained-apps/outputs/brave-browser/darwin.json +++ b/ee/maintained-apps/outputs/brave-browser/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "148.1.90.121", + "version": "148.1.90.122", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser' AND version_compare(bundle_short_version, '148.1.90.121') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser' AND version_compare(bundle_short_version, '148.1.90.122') < 0);" }, - "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/190.121/Brave-Browser-arm64.dmg", + "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/190.122/Brave-Browser-arm64.dmg", "install_script_ref": "51f78f89", "uninstall_script_ref": "f700850a", - "sha256": "c49cc224825e3fe03df9290b9c96986dbbd6a60107290a69d2095c75a099d9b6", + "sha256": "ca47ec90e311ffc27f2cb704f6995beae557a522c6d15b9a491318be32068ced", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/brave-browser/windows.json b/ee/maintained-apps/outputs/brave-browser/windows.json index ca82821638..d59a59d618 100644 --- a/ee/maintained-apps/outputs/brave-browser/windows.json +++ b/ee/maintained-apps/outputs/brave-browser/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "148.1.90.121", + "version": "148.1.90.122", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Brave' AND publisher = 'Brave Software Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Brave' AND publisher = 'Brave Software Inc' AND version_compare(version, '148.1.90.121') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Brave' AND publisher = 'Brave Software Inc' AND version_compare(version, '148.1.90.122') < 0);" }, - "installer_url": "https://github.com/brave/brave-browser/releases/download/v1.90.121/BraveBrowserStandaloneSilentSetup.exe", + "installer_url": "https://github.com/brave/brave-browser/releases/download/v1.90.122/BraveBrowserStandaloneSilentSetup.exe", "install_script_ref": "9a0c2b15", "uninstall_script_ref": "30c77f69", - "sha256": "91c55fed6456aa21039a20b8c8f994cd23096abbdc157cc281d7daba408085e0", + "sha256": "0c51be215653226fbe00cf4ac4f03963db830034cbf9e5a8a2c036121e93cfce", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/cursor/darwin.json b/ee/maintained-apps/outputs/cursor/darwin.json index 5fe131df50..fbe42c8706 100644 --- a/ee/maintained-apps/outputs/cursor/darwin.json +++ b/ee/maintained-apps/outputs/cursor/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.3.30", + "version": "3.4.16", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.todesktop.230313mzl4w4u92';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.todesktop.230313mzl4w4u92' AND version_compare(bundle_short_version, '3.3.30') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.todesktop.230313mzl4w4u92' AND version_compare(bundle_short_version, '3.4.16') < 0);" }, - "installer_url": "https://downloads.cursor.com/production/3dc559280adc5f931ade8e25c7b85393842acf34/darwin/arm64/Cursor-darwin-arm64.zip", + "installer_url": "https://downloads.cursor.com/production/f736016b0aa20ba1f99b7eec1dda48579fa4c295/darwin/arm64/Cursor-darwin-arm64.zip", "install_script_ref": "5147ff0b", "uninstall_script_ref": "a4458d81", - "sha256": "28df81e604e1955393d39d5eaaaa672d3926968af5e75be8e3b8b83e30ee33a3", + "sha256": "7ee203ec15606d2754a9ffffac38601b606fd492f88885e0ac491e081727ee4c", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/cursor/windows.json b/ee/maintained-apps/outputs/cursor/windows.json index 73a42cd158..cf3555fa43 100644 --- a/ee/maintained-apps/outputs/cursor/windows.json +++ b/ee/maintained-apps/outputs/cursor/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.3.30", + "version": "3.4.16", "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.3.30') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cursor' AND publisher = 'Anysphere' AND version_compare(version, '3.4.16') < 0);" }, - "installer_url": "https://downloads.cursor.com/production/3dc559280adc5f931ade8e25c7b85393842acf34/win32/x64/system-setup/CursorSetup-x64-3.3.30.exe", + "installer_url": "https://downloads.cursor.com/production/f736016b0aa20ba1f99b7eec1dda48579fa4c295/win32/x64/system-setup/CursorSetup-x64-3.4.16.exe", "install_script_ref": "03589b5e", "uninstall_script_ref": "6c8096c5", - "sha256": "9218fd728d682bd8c57ee7c3c4609c0d09db7d3839f15e30d921c8cd43fea1a5", + "sha256": "f752c0465c2dbc226c6a674d9eb7831f6bf2988519f8678dfcb68017b7f6a1de", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/loom/darwin.json b/ee/maintained-apps/outputs/loom/darwin.json index d0174e73ac..b05b50e8cc 100644 --- a/ee/maintained-apps/outputs/loom/darwin.json +++ b/ee/maintained-apps/outputs/loom/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.347.4", + "version": "0.347.8", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.loom.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.loom.desktop' AND version_compare(bundle_short_version, '0.347.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.loom.desktop' AND version_compare(bundle_short_version, '0.347.8') < 0);" }, - "installer_url": "https://packages.loom.com/desktop-packages/Loom-0.347.4-arm64.dmg", + "installer_url": "https://packages.loom.com/desktop-packages/Loom-0.347.8-arm64.dmg", "install_script_ref": "3b74ae49", "uninstall_script_ref": "8f032bbc", - "sha256": "781252a3372790f45f7cb92d64f94673fe4866d48386b738055ea264a8d8aa9f", + "sha256": "2168980b79c102e272ca0fa42a44b48424c4e58e2e56ba5418984ac1946a82d6", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/rancher/darwin.json b/ee/maintained-apps/outputs/rancher/darwin.json index cabdac842c..bf10b971cb 100644 --- a/ee/maintained-apps/outputs/rancher/darwin.json +++ b/ee/maintained-apps/outputs/rancher/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.22.2", + "version": "1.22.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.rancherdesktop.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.rancherdesktop.app' AND version_compare(bundle_short_version, '1.22.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.rancherdesktop.app' AND version_compare(bundle_short_version, '1.22.3') < 0);" }, - "installer_url": "https://github.com/rancher-sandbox/rancher-desktop/releases/download/v1.22.2/Rancher.Desktop-1.22.2.aarch64.dmg", + "installer_url": "https://github.com/rancher-sandbox/rancher-desktop/releases/download/v1.22.3/Rancher.Desktop-1.22.3.aarch64.dmg", "install_script_ref": "b85fd429", "uninstall_script_ref": "c10bd2de", - "sha256": "2e6f1fb428dec5f449ba27c1cc6f6980262bba1c370719c77d1a71cfda12f0d4", + "sha256": "65d474a00b9da95b9f48c64b89acf3d1f397f68b6d47bfe10373587d5d510b67", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/spotify/darwin.json b/ee/maintained-apps/outputs/spotify/darwin.json index 11f0599315..3f94824ec1 100644 --- a/ee/maintained-apps/outputs/spotify/darwin.json +++ b/ee/maintained-apps/outputs/spotify/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "1.2.88.483", + "version": "1.2.89.539", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.spotify.client';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.spotify.client' AND version_compare(bundle_short_version, '1.2.88.483') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.spotify.client' AND version_compare(bundle_short_version, '1.2.89.539') < 0);" }, "installer_url": "https://download.scdn.co/SpotifyARM64.dmg", "install_script_ref": "fc3fdef8", diff --git a/ee/maintained-apps/outputs/tailscale-app/darwin.json b/ee/maintained-apps/outputs/tailscale-app/darwin.json index a05d63cca1..bee3eb0a0b 100644 --- a/ee/maintained-apps/outputs/tailscale-app/darwin.json +++ b/ee/maintained-apps/outputs/tailscale-app/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "1.96.5", + "version": "1.98.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys' AND version_compare(bundle_short_version, '1.96.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys' AND version_compare(bundle_short_version, '1.98.1') < 0);" }, - "installer_url": "https://pkgs.tailscale.com/stable/Tailscale-1.96.5-macos.pkg", - "install_script_ref": "6c0ffc62", + "installer_url": "https://pkgs.tailscale.com/stable/Tailscale-1.98.1-macos.pkg", + "install_script_ref": "fb3d8a43", "uninstall_script_ref": "e47c5ba4", - "sha256": "7aac0d5f9b8118e8b2d73f7578c32413af3dda8b7e79794ce7fea31e6f6e17c8", + "sha256": "093ae430f0df9782b589fd8b8a28459795eaf2e9857d1273472606d60810a351", "default_categories": [ "Productivity" ] } ], "refs": { - "6c0ffc62": "#!/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# install pkg files\nquit_and_track_application 'io.tailscale.ipn.macsys'\nsudo installer -pkg \"$TMPDIR/Tailscale-1.96.5-macos.pkg\" -target /\nrelaunch_application 'io.tailscale.ipn.macsys'\n", - "e47c5ba4": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\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_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\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 'io.tailscale.ipn.macsys'\nremove_pkg_files 'com.tailscale.ipn.macsys'\nforget_pkg 'com.tailscale.ipn.macsys'\nsudo rm -rf '/usr/local/bin/tailscale'\nsudo rm -rf '/usr/local/share/man/man8/tssentineld.8'\ntrash $LOGGED_IN_USER '/Library/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Caches/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macos.network-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Preferences/io.tailscale.ipn.macsys.plist'\n" + "e47c5ba4": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\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_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\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 'io.tailscale.ipn.macsys'\nremove_pkg_files 'com.tailscale.ipn.macsys'\nforget_pkg 'com.tailscale.ipn.macsys'\nsudo rm -rf '/usr/local/bin/tailscale'\nsudo rm -rf '/usr/local/share/man/man8/tssentineld.8'\ntrash $LOGGED_IN_USER '/Library/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Caches/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macos.network-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Preferences/io.tailscale.ipn.macsys.plist'\n", + "fb3d8a43": "#!/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# install pkg files\nquit_and_track_application 'io.tailscale.ipn.macsys'\nsudo installer -pkg \"$TMPDIR/Tailscale-1.98.1-macos.pkg\" -target /\nrelaunch_application 'io.tailscale.ipn.macsys'\n" } } diff --git a/ee/maintained-apps/outputs/tailscale/windows.json b/ee/maintained-apps/outputs/tailscale/windows.json index 8fc65ec86f..dcb7642452 100644 --- a/ee/maintained-apps/outputs/tailscale/windows.json +++ b/ee/maintained-apps/outputs/tailscale/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.96.3", + "version": "1.98.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Tailscale' AND publisher = 'Tailscale Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Tailscale' AND publisher = 'Tailscale Inc.' AND version_compare(version, '1.96.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Tailscale' AND publisher = 'Tailscale Inc.' AND version_compare(version, '1.98.1') < 0);" }, - "installer_url": "https://pkgs.tailscale.com/stable/tailscale-setup-1.96.3-amd64.msi", + "installer_url": "https://pkgs.tailscale.com/stable/tailscale-setup-1.98.1-amd64.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "c9d1de3f", - "sha256": "b501e3eef74dab81ab1731e759f82c600e77ba227750f9cf26357e0a59e26ed5", + "sha256": "ad91163c07231eeb4ed92848f5e1233860f1b16cb8065c53e10aa2ca29028d45", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/webex/darwin.json b/ee/maintained-apps/outputs/webex/darwin.json index 872e29932c..98214f0a8d 100644 --- a/ee/maintained-apps/outputs/webex/darwin.json +++ b/ee/maintained-apps/outputs/webex/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "46.4.0.34752", + "version": "46.5.0.34931", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark' AND version_compare(bundle_short_version, '46.4.0.34752') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark' AND version_compare(bundle_short_version, '46.5.0.34931') < 0);" }, "installer_url": "https://binaries.webex.com/webex-macos-apple-silicon/Webex.dmg", "install_script_ref": "1fe5b1af", diff --git a/ee/maintained-apps/outputs/webex/windows.json b/ee/maintained-apps/outputs/webex/windows.json index d3b1b8b922..963273faab 100644 --- a/ee/maintained-apps/outputs/webex/windows.json +++ b/ee/maintained-apps/outputs/webex/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "46.4.0.34752", + "version": "46.5.0.34931", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '46.4.0.34752') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '46.5.0.34931') < 0);" }, - "installer_url": "https://binaries.webex.com/WebexDesktop-Win-64-Gold/20260422174916/Webex.msi", + "installer_url": "https://binaries.webex.com/WebexDesktop-Win-64-Gold/20260513172520/Webex.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "dfe62b07", - "sha256": "ddbb038bf9deab0ae2ba9fda453b92655ef830d3575628e39a1e154f5e7b2baf", + "sha256": "3ec64fda7267c10e297ae495d505a6b0953f36db838d2041401f77b88e66629a", "default_categories": [ "Communication" ], diff --git a/ee/maintained-apps/outputs/zed/darwin.json b/ee/maintained-apps/outputs/zed/darwin.json index b98726374a..81a5267a0b 100644 --- a/ee/maintained-apps/outputs/zed/darwin.json +++ b/ee/maintained-apps/outputs/zed/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.1.8", + "version": "1.2.3", "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.1.8') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.2.3') < 0);" }, - "installer_url": "https://zed.dev/api/releases/stable/1.1.8/Zed-aarch64.dmg", + "installer_url": "https://zed.dev/api/releases/stable/1.2.3/Zed-aarch64.dmg", "install_script_ref": "7a64bca0", "uninstall_script_ref": "315158ff", - "sha256": "a19336d0a8a90d596b038a024a08ade169aaaa62223c07374910c1b8d7ac7413", + "sha256": "77354c91418a45c9fd427d83b276fe62f0051e4d9ed7aa1805d2ec770f6e6e58", "default_categories": [ "Developer tools" ]