diff --git a/ee/maintained-apps/outputs/apparency/darwin.json b/ee/maintained-apps/outputs/apparency/darwin.json index 818a0f17aa2..110a21156bc 100644 --- a/ee/maintained-apps/outputs/apparency/darwin.json +++ b/ee/maintained-apps/outputs/apparency/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.2", + "version": "3.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Apparency';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Apparency' AND version_compare(bundle_short_version, '3.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Apparency' AND version_compare(bundle_short_version, '3.3') < 0);" }, - "installer_url": "https://www.mothersruin.com/software/archives/Apparency-3.2.dmg", + "installer_url": "https://www.mothersruin.com/software/archives/Apparency-3.3.dmg", "install_script_ref": "100c1eda", "uninstall_script_ref": "1561977c", - "sha256": "0a2639fac59f2a88510193bc6aa79a6e1af7a7f2c6cb6bc468fb7a30c8a68cc3", + "sha256": "9f0622d654603556861baf41e4959134e3321169a90c012909dc44057f7a3dc3", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/archaeology/darwin.json b/ee/maintained-apps/outputs/archaeology/darwin.json index 168f25e8e20..6fe64c75ff3 100644 --- a/ee/maintained-apps/outputs/archaeology/darwin.json +++ b/ee/maintained-apps/outputs/archaeology/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "1.5", + "version": "1.6", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Archaeology';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Archaeology' AND version_compare(bundle_short_version, '1.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.Archaeology' AND version_compare(bundle_short_version, '1.6') < 0);" }, "installer_url": "https://www.mothersruin.com/software/downloads/Archaeology.dmg", "install_script_ref": "c44cf669", diff --git a/ee/maintained-apps/outputs/aws-cli/windows.json b/ee/maintained-apps/outputs/aws-cli/windows.json index 675ef1cfb4c..5189add8ba5 100644 --- a/ee/maintained-apps/outputs/aws-cli/windows.json +++ b/ee/maintained-apps/outputs/aws-cli/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.36.16", + "version": "2.36.17", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services' AND version_compare(version, '2.36.16') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services' AND version_compare(version, '2.36.17') < 0);" }, - "installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.36.16.msi", + "installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.36.17.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "58bcd016", - "sha256": "0b94de55cd02d573f7ea0c4ec0eef14917f79563c0e3cd8ac1bf8478b0dcdb39", + "sha256": "cd4068921a64f5f0a753130f59806fde687cdeab73538a9d2fbf5dd55f1cee8c", "default_categories": [ "Developer tools" ], diff --git a/ee/maintained-apps/outputs/aws-vpn-client/darwin.json b/ee/maintained-apps/outputs/aws-vpn-client/darwin.json index 4a743c66d0a..4a89f79481f 100644 --- a/ee/maintained-apps/outputs/aws-vpn-client/darwin.json +++ b/ee/maintained-apps/outputs/aws-vpn-client/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "5.4.3", + "version": "6.0.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazonaws.acvc.osx';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazonaws.acvc.osx' AND version_compare(bundle_short_version, '5.4.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.amazonaws.acvc.osx' AND version_compare(bundle_short_version, '6.0.0') < 0);" }, - "installer_url": "https://d20adtppz83p9s.cloudfront.net/OSX_ARM64/5.4.3/AWS_VPN_Client_ARM64.pkg", + "installer_url": "https://d20adtppz83p9s.cloudfront.net/OSX_ARM64/6.0.0/AWS_VPN_Client_ARM64.pkg", "install_script_ref": "e3fcbf2c", - "uninstall_script_ref": "695f03a0", - "sha256": "9c783f3e5a28f74a75b1229336a6f3c03dcf4f97a7ee2303a24f864f922fc3c0", + "uninstall_script_ref": "66fca039", + "sha256": "0c0d26b6d8677281ef0eed4ac481abd3fdee1df096c451a26a38dd245b5577da", "default_categories": [ "Productivity" ] } ], "refs": { - "695f03a0": "#!/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_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 # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.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 done\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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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.amazonaws.acvc.helper'\nquit_application 'com.amazonaws.acvc.osx'\nremove_pkg_files 'com.amazon.awsvpnclient'\nforget_pkg 'com.amazon.awsvpnclient'\nsudo rm -rf '/Applications/AWS VPN Client'\nsudo rm -rf '/Library/Application Support/AWSVPNClient'\nsudo rm -rf '/Library/LaunchDaemons/com.amazonaws.acvc.helper.plist'\nsudo rm -rf '/Library/PrivilegedHelperTools/com.amazonaws.acvc.helper'\ntrash $LOGGED_IN_USER '~/.config/AWSVPNClient'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.amazonaws.acvc.osx.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.amazonaws.acvc.osx.savedState'\n", + "66fca039": "#!/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_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 # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.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 done\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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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.amazonaws.acvc.helper'\nremove_launchctl_service 'com.amazonaws.acvc.osx.core'\nquit_application 'com.amazonaws.acvc.osx'\nremove_pkg_files 'com.amazon.awsvpnclient'\nforget_pkg 'com.amazon.awsvpnclient'\nsudo rm -rf '/Applications/AWS VPN Client'\nsudo rm -rf '/Library/Application Support/AWSVPNClient'\nsudo rm -rf '/Library/LaunchDaemons/com.amazonaws.acvc.helper.plist'\nsudo rm -rf '/Library/LaunchDaemons/com.amazonaws.acvc.osx.core.plist'\nsudo rm -rf '/Library/PrivilegedHelperTools/com.amazonaws.acvc.helper'\nsudo rm -rf '/usr/local/bin/aws-vpn-client'\ntrash $LOGGED_IN_USER '~/.config/AWSVPNClient'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.amazonaws.acvc.osx.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.amazonaws.acvc.osx.savedState'\n", "e3fcbf2c": "#!/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 'com.amazonaws.acvc.osx'\nsudo installer -pkg \"$TMPDIR/AWS_VPN_Client_ARM64.pkg\" -target / || exit $?\nrelaunch_application 'com.amazonaws.acvc.osx'\n" } } diff --git a/ee/maintained-apps/outputs/bitwig-studio/windows.json b/ee/maintained-apps/outputs/bitwig-studio/windows.json index 0d54afb727a..786f1c55875 100644 --- a/ee/maintained-apps/outputs/bitwig-studio/windows.json +++ b/ee/maintained-apps/outputs/bitwig-studio/windows.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "6.0.6", + "version": "6.0.11", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Bitwig Studio %' AND publisher = 'Bitwig GmbH';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Bitwig Studio %' AND publisher = 'Bitwig GmbH' AND version_compare(version, '6.0.6') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Bitwig Studio %' AND publisher = 'Bitwig GmbH' AND version_compare(version, '6.0.11') < 0);" }, - "installer_url": "https://www.bitwig.com/dl/Bitwig%20Studio/6.0.6/installer_windows/", + "installer_url": "https://www.bitwig.com/dl/Bitwig%20Studio/6.0.11/installer_windows/", "install_script_ref": "22e48c46", - "uninstall_script_ref": "9b9fc2cf", - "sha256": "8b44bf8bd420e3a1938166293dbcae3c9752c88601c6407e9cc904a09528eb6b", + "uninstall_script_ref": "1a228845", + "sha256": "89b4d796e0441f312781e613bf2ca45b58cef2196d6c8e034e16f370ef9bd303", "default_categories": [ "Productivity" ] } ], "refs": { - "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", - "9b9fc2cf": "$product_code = '{8AFA291D-C7A6-4461-9A6A-A5B38120BAF0}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n" + "1a228845": "$product_code = '{4D03AFE3-5239-449A-A3D9-C070BF04F350}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n", + "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" } } diff --git a/ee/maintained-apps/outputs/brave-browser/darwin.json b/ee/maintained-apps/outputs/brave-browser/darwin.json index 25b720b3fa2..f718f0f2ef8 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": "151.1.93.129", + "version": "151.1.93.132", "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, '151.1.93.129') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser' AND version_compare(bundle_short_version, '151.1.93.132') < 0);" }, - "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/193.129/Brave-Browser-arm64.dmg", + "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/193.132/Brave-Browser-arm64.dmg", "install_script_ref": "32bb30f2", "uninstall_script_ref": "9a376609", - "sha256": "b4652d0d7bed441a450d275872b0b2b668a4d970fe1a8da67cd44b271ea061d6", + "sha256": "0f4c7f4457b96157adf0a7e2cbbf71b1c905f71d4bab6e45d1760f7d9e7b96fa", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/clion/darwin.json b/ee/maintained-apps/outputs/clion/darwin.json index 571e66fdd96..2a968c5b5a2 100644 --- a/ee/maintained-apps/outputs/clion/darwin.json +++ b/ee/maintained-apps/outputs/clion/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.2.0.1", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.CLion';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.CLion' AND version_compare(bundle_short_version, '2026.2.0.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.CLion' AND version_compare(bundle_short_version, '2026.2.1') < 0);" }, - "installer_url": "https://download.jetbrains.com/cpp/CLion-2026.2.0.1-aarch64.dmg", + "installer_url": "https://download.jetbrains.com/cpp/CLion-2026.2.1-aarch64.dmg", "install_script_ref": "402571cd", "uninstall_script_ref": "9c00be7f", - "sha256": "9e4909f34adcd5b0291013194f4663650727864cc01b78b5a7d1a1414038813e", + "sha256": "5017110b817f95aa2128658e0cd069b16935be85c0585f6e01b4fadd6fc663d3", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/companion/darwin.json b/ee/maintained-apps/outputs/companion/darwin.json index e0c811f692f..700ecf5e084 100644 --- a/ee/maintained-apps/outputs/companion/darwin.json +++ b/ee/maintained-apps/outputs/companion/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "5.0.2", + "version": "5.0.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'companion.bitfocus.no';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'companion.bitfocus.no' AND version_compare(bundle_short_version, '5.0.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'companion.bitfocus.no' AND version_compare(bundle_short_version, '5.0.3') < 0);" }, - "installer_url": "https://cf-pub.bitfocus.io/companion/companion/companion-mac-arm64-5.0.2-9665-stable-5eb89669c6.dmg", + "installer_url": "https://cf-pub.bitfocus.io/companion/companion/companion-mac-arm64-5.0.3-9703-stable-2daa0d7670.dmg", "install_script_ref": "f4b5e238", "uninstall_script_ref": "60aa1001", - "sha256": "906f1bcfb352640fe694f04326550efb28642109f66e5a13a42cef511ca15ca5", + "sha256": "b539d8304d92c421f0ac33d0e80435bc2b20038b5befb13973747ee239ca419c", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/cyberduck/windows.json b/ee/maintained-apps/outputs/cyberduck/windows.json index 5db7ffb6f1b..14b5626d7d9 100644 --- a/ee/maintained-apps/outputs/cyberduck/windows.json +++ b/ee/maintained-apps/outputs/cyberduck/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "9.5.2.45323", + "version": "9.5.3.45464", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Cyberduck' AND publisher = 'iterate GmbH';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cyberduck' AND publisher = 'iterate GmbH' AND version_compare(version, '9.5.2.45323') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cyberduck' AND publisher = 'iterate GmbH' AND version_compare(version, '9.5.3.45464') < 0);" }, - "installer_url": "https://update.cyberduck.io//Cyberduck-Installer-9.5.2.45323.msi", + "installer_url": "https://update.cyberduck.io//Cyberduck-Installer-9.5.3.45464.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "3b278238", - "sha256": "d04c49e3fa5ba3422f3a37f60c6e2c4cde1715de49bb34d88bd939c7985021db", + "sha256": "47672b8b2a8bbd31487775e5d3ac7a46ae1513ec3f6b0d88238ee6a7423f690b", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/dataflare/windows.json b/ee/maintained-apps/outputs/dataflare/windows.json index 4ab7e06fa30..0074652760b 100644 --- a/ee/maintained-apps/outputs/dataflare/windows.json +++ b/ee/maintained-apps/outputs/dataflare/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.1.7", + "version": "3.1.8", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare' AND version_compare(version, '3.1.7') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare' AND version_compare(version, '3.1.8') < 0);" }, - "installer_url": "https://assets.dataflare.app/release/windows/x86_64/Dataflare-Setup-3.1.7.exe", + "installer_url": "https://assets.dataflare.app/release/windows/x86_64/Dataflare-Setup-3.1.8.exe", "install_script_ref": "a5276316", "uninstall_script_ref": "4710d9ad", - "sha256": "946c910cd41805b5cfe3ca8d978483eb2b7f8cb5d694f5e8327c6c5c02fd0a74", + "sha256": "f66b1dc34e56eb3053feb3686d282f77fb1112b8ad9a58eb52304c8b0bb28942", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/egnyte/darwin.json b/ee/maintained-apps/outputs/egnyte/darwin.json index 910969229eb..1742059d250 100644 --- a/ee/maintained-apps/outputs/egnyte/darwin.json +++ b/ee/maintained-apps/outputs/egnyte/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "1.19.0", + "version": "1.19.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.egnyte.DesktopApp';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.egnyte.DesktopApp' AND version_compare(bundle_short_version, '1.19.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.egnyte.DesktopApp' AND version_compare(bundle_short_version, '1.19.1') < 0);" }, - "installer_url": "https://egnyte-cdn.egnyte.com/desktopapp/mac/en-us/1.19.0/Egnyte_1.19.0_2364.dmg", + "installer_url": "https://egnyte-cdn.egnyte.com/desktopapp/mac/en-us/1.19.1/Egnyte_1.19.1_2367.dmg", "install_script_ref": "5495db25", - "uninstall_script_ref": "34c8aecc", - "sha256": "8af51ef25b932c3de1971d041b8d1854dfc179dc9a893231c7fe6e530c326073", + "uninstall_script_ref": "5de28e16", + "sha256": "687e35bab2d54b6c979ec6002a7f09aa6259b7331a490b5173ee8b1d29a200d0", "default_categories": [ "Productivity" ] } ], "refs": { - "34c8aecc": "#!/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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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/Egnyte.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FinderHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FinderHelper.FinderSync'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/FELUD555VC.group.com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.egnyte.desktopapp.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Caches/SentryCrash/EgnyteLaunchHelper'\ntrash $LOGGED_IN_USER '~/Library/Caches/SentryCrash/EgnyteUpgradeChecker'\ntrash $LOGGED_IN_USER '~/Library/CloudStorage/Egnyte-*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FinderHelper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FinderHelper.FinderSync'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/FELUD555VC.group.com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.apple.FileProvider/com.egnyte.DesktopApp.FileProvider'\n", - "5495db25": "#!/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)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'com.egnyte.DesktopApp'\nif [ -d \"$APPDIR/Egnyte.app\" ]; then\n\tsudo mv \"$APPDIR/Egnyte.app\" \"$TMPDIR/Egnyte.app.bkp\" || exit $?\nfi\nif ! sudo cp -R \"$TMPDIR/Egnyte.app\" \"$APPDIR\"; then\n\t# remove the partial copy so a failed install isn't inventoried as the new\n\t# version, then restore the previous version if there was one\n\tsudo rm -rf \"$APPDIR/Egnyte.app\"\n\tif [ -d \"$TMPDIR/Egnyte.app.bkp\" ]; then\n\t\tsudo mv \"$TMPDIR/Egnyte.app.bkp\" \"$APPDIR/Egnyte.app\"\n\tfi\n\texit 1\nfi\nrelaunch_application 'com.egnyte.DesktopApp'\n" + "5495db25": "#!/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)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'com.egnyte.DesktopApp'\nif [ -d \"$APPDIR/Egnyte.app\" ]; then\n\tsudo mv \"$APPDIR/Egnyte.app\" \"$TMPDIR/Egnyte.app.bkp\" || exit $?\nfi\nif ! sudo cp -R \"$TMPDIR/Egnyte.app\" \"$APPDIR\"; then\n\t# remove the partial copy so a failed install isn't inventoried as the new\n\t# version, then restore the previous version if there was one\n\tsudo rm -rf \"$APPDIR/Egnyte.app\"\n\tif [ -d \"$TMPDIR/Egnyte.app.bkp\" ]; then\n\t\tsudo mv \"$TMPDIR/Egnyte.app.bkp\" \"$APPDIR/Egnyte.app\"\n\tfi\n\texit 1\nfi\nrelaunch_application 'com.egnyte.DesktopApp'\n", + "5de28e16": "#!/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 # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.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 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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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.egnyte.DesktopLaunchHelper'\nremove_launchctl_service 'FELUD555VC.group.com.egnyte.DesktopApp.XPCBroker'\nsudo rm -rf \"$APPDIR/Egnyte.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FinderHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopApp.FinderHelper.FinderSync'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.egnyte.DesktopLaunchHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/FELUD555VC.group.com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.egnyte.desktopapp.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.egnyte.desktoplaunchhelper.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/felud555vc.group.com.egnyte.desktopapp.xpcbroker.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Caches/SentryCrash/EgnyteLaunchHelper'\ntrash $LOGGED_IN_USER '~/Library/Caches/SentryCrash/EgnyteUpgradeChecker'\ntrash $LOGGED_IN_USER '~/Library/CloudStorage/Egnyte-*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FileProvider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FinderHelper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopApp.FinderHelper.FinderSync'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.egnyte.DesktopLaunchHelper'\ntrash $LOGGED_IN_USER '~/Library/Containers/FELUD555VC.group.com.egnyte.DesktopApp.XPCBroker'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/FELUD555VC.group.com.egnyte.DesktopApp'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.apple.FileProvider/com.egnyte.DesktopApp.FileProvider'\n" } } diff --git a/ee/maintained-apps/outputs/filebeat/windows.json b/ee/maintained-apps/outputs/filebeat/windows.json index 9faa203460d..c800d70f4c4 100644 --- a/ee/maintained-apps/outputs/filebeat/windows.json +++ b/ee/maintained-apps/outputs/filebeat/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "9.4.4", + "version": "9.5.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Beats filebeat % (x86_64)' AND publisher = 'Elastic';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Beats filebeat % (x86_64)' AND publisher = 'Elastic' AND version_compare(version, '9.4.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Beats filebeat % (x86_64)' AND publisher = 'Elastic' AND version_compare(version, '9.5.0') < 0);" }, - "installer_url": "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.4.4-windows-x86_64.msi", + "installer_url": "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.5.0-windows-x86_64.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "87255486", - "sha256": "bb617b8b5a794fe91afb3d283740d2ee53d458dba1b47ade20b5e3ab59a77b42", + "sha256": "1d00414f2c7e1c6db38dc4a01d64d588c05545c8d514d175f25dd7fa79824f39", "default_categories": [ "Developer tools" ], diff --git a/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json b/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json index e43be8950ac..e10f46723b6 100644 --- a/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json +++ b/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "154.0b6", + "version": "154.0b7", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition' AND version_compare(bundle_version, '15426.8.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition' AND version_compare(bundle_version, '15426.8.5') < 0);" }, - "installer_url": "https://download-installer.cdn.mozilla.net/pub/devedition/releases/154.0b6/mac/en-US/Firefox%20154.0b6.dmg", + "installer_url": "https://download-installer.cdn.mozilla.net/pub/devedition/releases/154.0b7/mac/en-US/Firefox%20154.0b7.dmg", "install_script_ref": "b679ecd7", "uninstall_script_ref": "292c5733", - "sha256": "a0fdbd1e966fcb138e0f891cc798022131a5784bbdbde777be8c64e3d00d3066", + "sha256": "31e84c8b4a47bcb4bc6c411e23c542fa519afdb2fd3d6d75476f8c8147e1dfc2", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/gitkraken/darwin.json b/ee/maintained-apps/outputs/gitkraken/darwin.json index 52b2b052d3a..2112f31aad2 100644 --- a/ee/maintained-apps/outputs/gitkraken/darwin.json +++ b/ee/maintained-apps/outputs/gitkraken/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "12.3.1", + "version": "12.4.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.axosoft.gitkraken';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.axosoft.gitkraken' AND version_compare(bundle_short_version, '12.3.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.axosoft.gitkraken' AND version_compare(bundle_short_version, '12.4.0') < 0);" }, - "installer_url": "https://api.gitkraken.dev/releases/production/darwin/arm64/12.3.1/GitKraken-v12.3.1.zip", + "installer_url": "https://api.gitkraken.dev/releases/production/darwin/arm64/12.4.0/GitKraken-v12.4.0.zip", "install_script_ref": "d255d46a", "uninstall_script_ref": "da9e6343", - "sha256": "86097ff00dc5c94db41c40aa81e5d006eb77ea1edec3edd3465ee7da2e542f0a", + "sha256": "c7aec6ea8a5469d8f7d541866f8357aa22c4a813580ea20d085663e8840f8b1b", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/google-drive/windows.json b/ee/maintained-apps/outputs/google-drive/windows.json index 13837bc687b..0d4a714bfc6 100644 --- a/ee/maintained-apps/outputs/google-drive/windows.json +++ b/ee/maintained-apps/outputs/google-drive/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "128.0.0.0", + "version": "129.0.1.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Google Drive' AND publisher = 'Google LLC';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Drive' AND publisher = 'Google LLC' AND version_compare(version, '128.0.0.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Drive' AND publisher = 'Google LLC' AND version_compare(version, '129.0.1.0') < 0);" }, - "installer_url": "https://dl.google.com/release2/drive-file-stream/acgrx2hs3zwatlwkwyzdfd2hughq_128.0.0.0/setup.exe", + "installer_url": "https://dl.google.com/release2/drive-file-stream/adrnonybri4rh25g3rwcs6mgeqva_129.0.1.0/setup.exe", "install_script_ref": "fa36b892", "uninstall_script_ref": "d4d8e35c", - "sha256": "5c91b43d1d6f64a98f034fbefd4a7656c4c76ef6a1f4ddb23bb5e5a5e9ec53b0", + "sha256": "e3cf3a5dda289d8eef5fe22c920db59ff936968d9b7b7ffafceba90bf9cb8464", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json index 191d4d5318a..6ecd2ebe4b1 100644 --- a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json +++ b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.180.0", + "version": "1.181.2", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama' AND version_compare(bundle_short_version, '1.180.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama' AND version_compare(bundle_short_version, '1.181.2') < 0);" }, - "installer_url": "https://download-mac.grammarly.com/versions/1.180.0.0/Grammarly.dmg", + "installer_url": "https://download-mac.grammarly.com/versions/1.181.2.0/Grammarly.dmg", "install_script_ref": "8274b7dd", "uninstall_script_ref": "7dff0961", - "sha256": "b37f314d47e5a2da246513a6572983e47d98a86894f0fe8d604e9a9b0d5cbc62", + "sha256": "b9042477a8210f723a268d02b43980af562bde66064827f21e4ed5e86bbe5dfe", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/heidisql/windows.json b/ee/maintained-apps/outputs/heidisql/windows.json index c5de675ee3b..67d1d4506ff 100644 --- a/ee/maintained-apps/outputs/heidisql/windows.json +++ b/ee/maintained-apps/outputs/heidisql/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "12.20.0.7320", + "version": "12.21.0.7344", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'HeidiSQL%' AND publisher = 'Ansgar Becker';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'HeidiSQL%' AND publisher = 'Ansgar Becker' AND version_compare(version, '12.20.0.7320') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'HeidiSQL%' AND publisher = 'Ansgar Becker' AND version_compare(version, '12.21.0.7344') < 0);" }, - "installer_url": "https://github.com/HeidiSQL/HeidiSQL/releases/download/v12.20/HeidiSQL_12.20.0.7320_Setup.exe", + "installer_url": "https://github.com/HeidiSQL/HeidiSQL/releases/download/v12.21/HeidiSQL_12.21.0.7344_Setup.exe", "install_script_ref": "38d3f7b8", "uninstall_script_ref": "71bb5d85", - "sha256": "b811c5fcc43a8703dc567e0b9b3b86e01cf7a05a53b05addc38c5055549387fa", + "sha256": "97acf0344313c11bb89c001425a615722b745669e5ffd542e732c418a00e22ed", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/hive-app/darwin.json b/ee/maintained-apps/outputs/hive-app/darwin.json index 56c1c2ffcb8..a0a8e462d9e 100644 --- a/ee/maintained-apps/outputs/hive-app/darwin.json +++ b/ee/maintained-apps/outputs/hive-app/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.2.25", + "version": "1.2.26", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.25') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.26') < 0);" }, - "installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.25/Hive-1.2.25-arm64.dmg", + "installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.26/Hive-1.2.26-arm64.dmg", "install_script_ref": "3bd4ebe4", "uninstall_script_ref": "951b5587", - "sha256": "d32786794fa2d7e1a7fa04f0fd049d00cc3a2e8a70b870178639e7ad453a2b40", + "sha256": "768e77feca24426edd2bac1368f4c487ca580c772c978c81f5fec037a576978f", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/loom/darwin.json b/ee/maintained-apps/outputs/loom/darwin.json index ed256569a64..85e522e3df8 100644 --- a/ee/maintained-apps/outputs/loom/darwin.json +++ b/ee/maintained-apps/outputs/loom/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.366.0", + "version": "0.366.3", "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.366.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.loom.desktop' AND version_compare(bundle_short_version, '0.366.3') < 0);" }, - "installer_url": "https://packages.loom.com/desktop-packages/Loom-0.366.0-arm64.dmg", + "installer_url": "https://packages.loom.com/desktop-packages/Loom-0.366.3-arm64.dmg", "install_script_ref": "53e2b898", "uninstall_script_ref": "1a901a1f", - "sha256": "b99271501cc18e07254f59691c44be35496b18d42e7a5e80e8d23a4526b0be29", + "sha256": "49f48a6480982e26f9dfc1afc92b4a701b964f510af48a0bc5eb95b20849901e", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/loom/windows.json b/ee/maintained-apps/outputs/loom/windows.json index 09f166bb3f2..711f35bb904 100644 --- a/ee/maintained-apps/outputs/loom/windows.json +++ b/ee/maintained-apps/outputs/loom/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.366.0", + "version": "0.366.3", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Loom' AND publisher = 'Loom, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Loom' AND publisher = 'Loom, Inc.' AND version_compare(version, '0.366.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Loom' AND publisher = 'Loom, Inc.' AND version_compare(version, '0.366.3') < 0);" }, - "installer_url": "https://cdn.loom.com/desktop-packages/Loom%20Setup%200.366.0.exe", + "installer_url": "https://cdn.loom.com/desktop-packages/Loom%20Setup%200.366.3.exe", "install_script_ref": "77327cbf", "uninstall_script_ref": "b012f1e7", - "sha256": "4c0576fefd63f329c40a51c871f725babf2655445a5874026f294aaa57d43609", + "sha256": "e98fe6b8a797278f1a23f567b0386b0c56402364b66a50b8a2bac31039f21051", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/macpacker/darwin.json b/ee/maintained-apps/outputs/macpacker/darwin.json index 3ad343989a4..2f87b050399 100644 --- a/ee/maintained-apps/outputs/macpacker/darwin.json +++ b/ee/maintained-apps/outputs/macpacker/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.18.1", + "version": "0.19.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.sarensx.MacPacker';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.sarensx.MacPacker' AND version_compare(bundle_short_version, '0.18.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.sarensx.MacPacker' AND version_compare(bundle_short_version, '0.19.0') < 0);" }, - "installer_url": "https://macpacker-releases.s3.amazonaws.com/MacPacker_v0.18.1.zip", + "installer_url": "https://macpacker-releases.s3.amazonaws.com/MacPacker_v0.19.0.zip", "install_script_ref": "dd6b97de", "uninstall_script_ref": "fd696a74", - "sha256": "b8d9208f015377c13ceae84d8d09edef4fea0491baa3c7ac92c82fcc176be1b7", + "sha256": "ae19e28da057098c5dc13fe379ad7a7300ca51e5c368de5f564e5cbf9794bf46", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/megasync/windows.json b/ee/maintained-apps/outputs/megasync/windows.json index 7d7b8ae49a0..3725184dd7f 100644 --- a/ee/maintained-apps/outputs/megasync/windows.json +++ b/ee/maintained-apps/outputs/megasync/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "6.5.0.2", + "version": "6.5.1.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'MEGAsync' AND publisher = 'Mega Limited';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'MEGAsync' AND publisher = 'Mega Limited' AND version_compare(version, '6.5.0.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'MEGAsync' AND publisher = 'Mega Limited' AND version_compare(version, '6.5.1.0') < 0);" }, "installer_url": "https://mega.nz/MEGAsyncSetup64.exe", "install_script_ref": "de703749", "uninstall_script_ref": "43371245", - "sha256": "3aa07f2c81a1678ae6e3e2e5280cb6e5d69ec968d9ff2e47859a6051b17f7ea1", + "sha256": "e2fc364dcdceec0ed246c87f04a0278df30d06b0e1fc6c06f2768c97209ebfa7", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/microsoft-office/windows.json b/ee/maintained-apps/outputs/microsoft-office/windows.json index 616d4c9459f..7b1714dd695 100644 --- a/ee/maintained-apps/outputs/microsoft-office/windows.json +++ b/ee/maintained-apps/outputs/microsoft-office/windows.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "16.0.20026.20112", + "version": "16.0.20131.20090", "queries": { "exists": "SELECT 1 FROM programs WHERE (name LIKE 'Microsoft 365 Apps %' OR name LIKE 'Microsoft Office %') AND publisher = 'Microsoft Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE ((name LIKE 'Microsoft 365 Apps %' OR name LIKE 'Microsoft Office %') AND publisher = 'Microsoft Corporation') AND version_compare(version, '16.0.20026.20112') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE ((name LIKE 'Microsoft 365 Apps %' OR name LIKE 'Microsoft Office %') AND publisher = 'Microsoft Corporation') AND version_compare(version, '16.0.20131.20090') < 0);" }, "installer_url": "https://officecdn.microsoft.com/pr/wsus/setup.exe", "install_script_ref": "7e3fc6bb", diff --git a/ee/maintained-apps/outputs/nodejs/windows.json b/ee/maintained-apps/outputs/nodejs/windows.json index 50d95a39aac..25eb6b5d8f4 100644 --- a/ee/maintained-apps/outputs/nodejs/windows.json +++ b/ee/maintained-apps/outputs/nodejs/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "26.5.1", + "version": "26.7.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Node.js' AND publisher = 'Node.js Foundation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Node.js' AND publisher = 'Node.js Foundation' AND version_compare(version, '26.5.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Node.js' AND publisher = 'Node.js Foundation' AND version_compare(version, '26.7.0') < 0);" }, - "installer_url": "https://nodejs.org/dist/v26.5.1/node-v26.5.1-x64.msi", + "installer_url": "https://nodejs.org/dist/v26.7.0/node-v26.7.0-x64.msi", "install_script_ref": "22e48c46", - "uninstall_script_ref": "fe1dc93a", - "sha256": "826a4551bb9d3c00c61c17a2521a1e901ac7304e3090a3c2d07c1e0fe2b4d60d", + "uninstall_script_ref": "db9a38f0", + "sha256": "28dd9d5e53f829a32310a4fed334000a1681a7534641c599d05617f893c06a2b", "default_categories": [ "Developer tools" ] @@ -17,6 +17,6 @@ ], "refs": { "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", - "fe1dc93a": "$product_code = '{09051536-C2FF-4E63-B5ED-F98A6D700260}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n" + "db9a38f0": "$product_code = '{7308A298-0F07-41A9-B373-72E1FAA64CBB}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n" } } diff --git a/ee/maintained-apps/outputs/ollama/darwin.json b/ee/maintained-apps/outputs/ollama/darwin.json index d05590ed9c6..7600307f24a 100644 --- a/ee/maintained-apps/outputs/ollama/darwin.json +++ b/ee/maintained-apps/outputs/ollama/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.32.5", + "version": "0.32.6", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama' AND version_compare(bundle_short_version, '0.32.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama' AND version_compare(bundle_short_version, '0.32.6') < 0);" }, - "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.5/Ollama-darwin.zip", + "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.6/Ollama-darwin.zip", "install_script_ref": "dd889e18", "uninstall_script_ref": "ecec947d", - "sha256": "729396bb6fea20df0f3792087f363b90465e68f7f596fcb4b5926929b0dce4d8", + "sha256": "cc708ee7a9366b73b97d3f2999e25bb24b0a86feb41a0d2ced784ff4d4855e6d", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/ollama/windows.json b/ee/maintained-apps/outputs/ollama/windows.json index 96dc8951914..80ce27db433 100644 --- a/ee/maintained-apps/outputs/ollama/windows.json +++ b/ee/maintained-apps/outputs/ollama/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.32.5", + "version": "0.32.6", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama' AND version_compare(version, '0.32.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama' AND version_compare(version, '0.32.6') < 0);" }, - "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.5/OllamaSetup.exe", + "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.6/OllamaSetup.exe", "install_script_ref": "e14c71ee", "uninstall_script_ref": "3f049b5d", - "sha256": "b7eeef038ddcbd09ac665b11872baff1bc9b42794be41b5ef187b2f4b16a4498", + "sha256": "526e47db7c295d017e9514df5bb20c6f32b3d1170f2c8bb9c59b53185f5bd6ff", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/opencode-desktop/darwin.json b/ee/maintained-apps/outputs/opencode-desktop/darwin.json index 602acd23eea..38725595c53 100644 --- a/ee/maintained-apps/outputs/opencode-desktop/darwin.json +++ b/ee/maintained-apps/outputs/opencode-desktop/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.18.13", + "version": "1.18.14", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop' AND version_compare(bundle_short_version, '1.18.13') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop' AND version_compare(bundle_short_version, '1.18.14') < 0);" }, - "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.18.13/opencode-desktop-mac-arm64.dmg", + "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.18.14/opencode-desktop-mac-arm64.dmg", "install_script_ref": "d2ce7b1a", "uninstall_script_ref": "99fcb3f1", - "sha256": "fef8c52056438d9a49e79237ebaf1650819486da7ca2b483132e007aa923acbb", + "sha256": "0d1ae975cc5605fc665585b2424c4d820640955ecc21a4185336783a34a12305", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/pdf-expert/darwin.json b/ee/maintained-apps/outputs/pdf-expert/darwin.json index a65d5f255ae..431468eb2d8 100644 --- a/ee/maintained-apps/outputs/pdf-expert/darwin.json +++ b/ee/maintained-apps/outputs/pdf-expert/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.11.4", + "version": "3.12", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.readdle.PDFExpert-Mac';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.readdle.PDFExpert-Mac' AND version_compare(bundle_short_version, '3.11.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.readdle.PDFExpert-Mac' AND version_compare(bundle_short_version, '3.12') < 0);" }, - "installer_url": "https://downloads.pdfexpert.com/pem3/versions/1166/PDFExpert.zip", + "installer_url": "https://downloads.pdfexpert.com/pem3/versions/1168/PDFExpert.zip", "install_script_ref": "e1cf6e1d", "uninstall_script_ref": "bb48ed8b", - "sha256": "b86195335a9fc04c35c7efcad9ceff22ed6cc1e6b9518335647952a7694d012c", + "sha256": "9c28207c54e360610e2ab8423b556e05d86906e8d9df70660ef7bbea1cd879ca", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/postman/windows.json b/ee/maintained-apps/outputs/postman/windows.json index c56b643c9dc..f6eec219608 100644 --- a/ee/maintained-apps/outputs/postman/windows.json +++ b/ee/maintained-apps/outputs/postman/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "12.22.2", + "version": "12.22.3", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.22.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.22.3') < 0);" }, - "installer_url": "https://dl.pstmn.io/download/version/12.22.2/windows_64", + "installer_url": "https://dl.pstmn.io/download/version/12.22.3/windows_64", "install_script_ref": "8594f0bc", "uninstall_script_ref": "fd59d029", - "sha256": "1c562861d9d24a3ef53fd0a91b505c44f02f4f487e0d0e83aaf011f7a117c38b", + "sha256": "79289062c16bcb628408510784c52a4061dd873719bb4aa7bb7068968f956e5f", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/proton-mail/darwin.json b/ee/maintained-apps/outputs/proton-mail/darwin.json index 1b78cd80ab6..b9adcf076c0 100644 --- a/ee/maintained-apps/outputs/proton-mail/darwin.json +++ b/ee/maintained-apps/outputs/proton-mail/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.13.3", + "version": "1.13.4", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmail.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmail.desktop' AND version_compare(bundle_short_version, '1.13.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmail.desktop' AND version_compare(bundle_short_version, '1.13.4') < 0);" }, - "installer_url": "https://proton.me/download/mail/macos/1.13.3/ProtonMail-desktop.dmg", + "installer_url": "https://proton.me/download/mail/macos/1.13.4/ProtonMail-desktop.dmg", "install_script_ref": "1f588a8f", - "uninstall_script_ref": "8e5ef0af", - "sha256": "0b4511866c5c6d07cff2e31ef2746e531e5fd092f404cbefad615f5c709547dd", + "uninstall_script_ref": "a5eb828a", + "sha256": "e3211f353f3db0ea000218e3655698d7283a005b98a7ab4cfc0ae7157fb5599c", "default_categories": [ "Communication" ] @@ -17,6 +17,6 @@ ], "refs": { "1f588a8f": "#!/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)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'ch.protonmail.desktop'\nif [ -d \"$APPDIR/Proton Mail.app\" ]; then\n\tsudo mv \"$APPDIR/Proton Mail.app\" \"$TMPDIR/Proton Mail.app.bkp\" || exit $?\nfi\nif ! sudo cp -R \"$TMPDIR/Proton Mail.app\" \"$APPDIR\"; then\n\t# remove the partial copy so a failed install isn't inventoried as the new\n\t# version, then restore the previous version if there was one\n\tsudo rm -rf \"$APPDIR/Proton Mail.app\"\n\tif [ -d \"$TMPDIR/Proton Mail.app.bkp\" ]; then\n\t\tsudo mv \"$TMPDIR/Proton Mail.app.bkp\" \"$APPDIR/Proton Mail.app\"\n\tfi\n\texit 1\nfi\nrelaunch_application 'ch.protonmail.desktop'\n", - "8e5ef0af": "#!/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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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/Proton Mail.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Proton Mail'\ntrash $LOGGED_IN_USER '~/Library/Caches/ch.protonmail.desktop'\ntrash $LOGGED_IN_USER '~/Library/Caches/ch.protonmail.desktop.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/ch.protonmail.desktop'\ntrash $LOGGED_IN_USER '~/Library/Logs/Proton Mail'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ch.protonmail.desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/ch.protonmail.desktop.savedState'\n" + "a5eb828a": "#!/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\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\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 '/Applications/Proton Mail Uninstaller.app'\nsudo rm -rf \"$APPDIR/Proton Mail.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/ch.protonmail.desktop.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Proton Mail'\ntrash $LOGGED_IN_USER '~/Library/Caches/ch.protonmail.desktop'\ntrash $LOGGED_IN_USER '~/Library/Caches/ch.protonmail.desktop.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/ch.protonmail.desktop'\ntrash $LOGGED_IN_USER '~/Library/Logs/Proton Mail'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ch.protonmail.desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/ch.protonmail.desktop.savedState'\n" } } diff --git a/ee/maintained-apps/outputs/pycharm/windows.json b/ee/maintained-apps/outputs/pycharm/windows.json index 453237b15d1..27c99f1efac 100644 --- a/ee/maintained-apps/outputs/pycharm/windows.json +++ b/ee/maintained-apps/outputs/pycharm/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2024.3.5", + "version": "2024.3.6.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'PyCharm %' AND name NOT LIKE 'PyCharm Community Edition%' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'PyCharm %' AND name NOT LIKE 'PyCharm Community Edition%' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '243.26053.29') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'PyCharm %' AND name NOT LIKE 'PyCharm Community Edition%' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '243.26574.109') < 0);" }, - "installer_url": "https://download.jetbrains.com/python/pycharm-professional-2024.3.5.exe", + "installer_url": "https://download.jetbrains.com/python/pycharm-professional-2024.3.6.1.exe", "install_script_ref": "60d9c96b", "uninstall_script_ref": "38654711", - "sha256": "5f6e7fe6cc1b0519544c6ede96264a96b46579ebd0039519d541c576103d962a", + "sha256": "741df96e5548e31e5ab43313ab21750f8e1bbcc741b752bc4d0d58de46005065", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/remote-desktop-manager/windows.json b/ee/maintained-apps/outputs/remote-desktop-manager/windows.json index f0b5c7d92fa..a7b7d117435 100644 --- a/ee/maintained-apps/outputs/remote-desktop-manager/windows.json +++ b/ee/maintained-apps/outputs/remote-desktop-manager/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.2.16.0", + "version": "2026.2.17.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.16.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.17.0') < 0);" }, - "installer_url": "https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.win-x64.2026.2.16.0.msi", + "installer_url": "https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.win-x64.2026.2.17.0.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "df5e7f6c", - "sha256": "8caa52f37bda1a03f984f89b80af54154b6cb501f27951ff9f669ebd27090f5e", + "sha256": "1cf7042ab9a46b1a3dfcffd57694f2dcea233ff27d030ec9139a21904dba8d1c", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/scribe/windows.json b/ee/maintained-apps/outputs/scribe/windows.json index 45985b1b1c7..5bc7b5da4d4 100644 --- a/ee/maintained-apps/outputs/scribe/windows.json +++ b/ee/maintained-apps/outputs/scribe/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "6.7.23.0", + "version": "6.8.4.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Scribe' AND publisher = 'Colony Labs, Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Scribe' AND publisher = 'Colony Labs, Inc' AND version_compare(version, '6.7.23.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Scribe' AND publisher = 'Colony Labs, Inc' AND version_compare(version, '6.8.4.0') < 0);" }, - "installer_url": "https://colony-labs-public.s3.us-east-2.amazonaws.com/Scribe_6.7.23.msi", + "installer_url": "https://colony-labs-public.s3.us-east-2.amazonaws.com/Scribe_6.8.4.msi", "install_script_ref": "cf2d0de4", "uninstall_script_ref": "4475c279", - "sha256": "41004c210dd4e47ca7da7b1b1b91ac35520b2b5abe1ad3e07b26742087b89b74", + "sha256": "9969fddd78c0c7ef45a2ea246086ae51a08a268482e5013455b4fab5ad51acf8", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/signal/darwin.json b/ee/maintained-apps/outputs/signal/darwin.json index b67d698de59..b3761e1de7f 100644 --- a/ee/maintained-apps/outputs/signal/darwin.json +++ b/ee/maintained-apps/outputs/signal/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "8.21.0", + "version": "8.22.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.21.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.22.0') < 0);" }, - "installer_url": "https://updates.signal.org/desktop/signal-desktop-mac-arm64-8.21.0.zip", + "installer_url": "https://updates.signal.org/desktop/signal-desktop-mac-arm64-8.22.0.zip", "install_script_ref": "07386872", "uninstall_script_ref": "c0c94e32", - "sha256": "8bbac6842bf56193e0b5d6c60c682cda7ff41b47ef05ecade6404c65b7a4f3f0", + "sha256": "57da1cf2574619ea32d54441b5f54d145e2bf6fca8cc2afbf6feb4ffdb28319c", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/signal/windows.json b/ee/maintained-apps/outputs/signal/windows.json index 4b79195b71e..484c19f5ca8 100644 --- a/ee/maintained-apps/outputs/signal/windows.json +++ b/ee/maintained-apps/outputs/signal/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "8.21.0", + "version": "8.22.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Signal' AND publisher = 'Signal Messenger, LLC';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Signal' AND publisher = 'Signal Messenger, LLC' AND version_compare(version, '8.21.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Signal' AND publisher = 'Signal Messenger, LLC' AND version_compare(version, '8.22.0') < 0);" }, - "installer_url": "https://updates.signal.org/desktop/signal-desktop-win-8.21.0.exe", + "installer_url": "https://updates.signal.org/desktop/signal-desktop-win-8.22.0.exe", "install_script_ref": "06366bfb", "uninstall_script_ref": "8c3c10d6", - "sha256": "441e24c4ff3ae498d29b048534eab0254a04836942e72b9a2ab2527ff66e5cc3", + "sha256": "b2bf0e60ed5d4757915c51fb2ecb49e2b26c2eb4a260e5af2875f0f35a9b27da", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/spotify/windows.json b/ee/maintained-apps/outputs/spotify/windows.json index 13dd1776e27..e658b24f772 100644 --- a/ee/maintained-apps/outputs/spotify/windows.json +++ b/ee/maintained-apps/outputs/spotify/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.2.95.452.g5c9bdf32", + "version": "1.2.95.453.g0eeebbed", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Spotify' AND publisher = 'Spotify AB';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Spotify' AND publisher = 'Spotify AB' AND version_compare(version, '1.2.95.452.g5c9bdf32') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Spotify' AND publisher = 'Spotify AB' AND version_compare(version, '1.2.95.453.g0eeebbed') < 0);" }, "installer_url": "https://download.scdn.co/SpotifyFullSetupX64.exe", "install_script_ref": "7e4727ac", "uninstall_script_ref": "48d55e3d", - "sha256": "1edccf0fab474ba4ac6c72d14382fdf3f7538329697a670d12ccdba48653cb73", + "sha256": "601dcf62e65a165c3ffb50ef06b5faba3d05fffd231b3440cca520b471a8d424", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/superhuman/darwin.json b/ee/maintained-apps/outputs/superhuman/darwin.json index d6701d64ec0..3f367179a20 100644 --- a/ee/maintained-apps/outputs/superhuman/darwin.json +++ b/ee/maintained-apps/outputs/superhuman/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1041.0.26", + "version": "1041.0.28", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhuman.mail';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhuman.mail' AND version_compare(bundle_short_version, '1041.0.26') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhuman.mail' AND version_compare(bundle_short_version, '1041.0.28') < 0);" }, - "installer_url": "https://storage.googleapis.com/download.superhuman.com/supertron-update/Superhuman-1041.0.26-arm64-latest-mac.zip", + "installer_url": "https://storage.googleapis.com/download.superhuman.com/supertron-update/Superhuman-1041.0.28-arm64-latest-mac.zip", "install_script_ref": "7e74bd96", "uninstall_script_ref": "1809183d", - "sha256": "225c865519e6bd7b427e3a46efe44780786cbe43112d83a8e173ad247870f96e", + "sha256": "3aeb556eee900474ff86e3f35fa6c7b042bc1008c73b3ec5d9f34672bf17b080", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/suspicious-package/darwin.json b/ee/maintained-apps/outputs/suspicious-package/darwin.json index aad66f64542..4e3a67b14bd 100644 --- a/ee/maintained-apps/outputs/suspicious-package/darwin.json +++ b/ee/maintained-apps/outputs/suspicious-package/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "4.6.2", + "version": "4.7", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.SuspiciousPackageApp';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.SuspiciousPackageApp' AND version_compare(bundle_short_version, '4.6.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mothersruin.SuspiciousPackageApp' AND version_compare(bundle_short_version, '4.7') < 0);" }, - "installer_url": "https://www.mothersruin.com/software/downloads/SuspiciousPackage.dmg", + "installer_url": "https://www.mothersruin.com/software/archives/SuspiciousPackage-4.7.dmg", "install_script_ref": "0cdf9027", "uninstall_script_ref": "69130fbf", - "sha256": "no_check", + "sha256": "5b8215b7a6536d1d41f1a3485e3428b39f8d3d0f2471ab1a0c69bedb22df4e5b", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/tailscale/windows.json b/ee/maintained-apps/outputs/tailscale/windows.json index ce57bfcece4..7d9a945313a 100644 --- a/ee/maintained-apps/outputs/tailscale/windows.json +++ b/ee/maintained-apps/outputs/tailscale/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.102.1", + "version": "1.102.2", "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.102.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Tailscale' AND publisher = 'Tailscale Inc.' AND version_compare(version, '1.102.2') < 0);" }, - "installer_url": "https://pkgs.tailscale.com/stable/tailscale-setup-1.102.1-amd64.msi", + "installer_url": "https://pkgs.tailscale.com/stable/tailscale-setup-1.102.2-amd64.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "b665a7bd", - "sha256": "988a38ab854ad176778955b0c92b27b1af14bf5e0146ea43076d829496d7ac77", + "sha256": "d2eb69e103b08a5b77de9d7cb8555541aa99f7dfc6048850b2286a1048c885f9", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/telegram/windows.json b/ee/maintained-apps/outputs/telegram/windows.json index 1fad68945db..9eccf9e2414 100644 --- a/ee/maintained-apps/outputs/telegram/windows.json +++ b/ee/maintained-apps/outputs/telegram/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "7.0.7", + "version": "7.0.8", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC' AND version_compare(version, '7.0.7') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC' AND version_compare(version, '7.0.8') < 0);" }, - "installer_url": "https://github.com/telegramdesktop/tdesktop/releases/download/v7.0.7/tsetup-x64.7.0.7.exe", + "installer_url": "https://github.com/telegramdesktop/tdesktop/releases/download/v7.0.8/tsetup-x64.7.0.8.exe", "install_script_ref": "0b88a95e", "uninstall_script_ref": "42311f1b", - "sha256": "8352e495fae9a3e37b4cadb404124f3431937adcd42d4d5114c83b1cfbc1b1f5", + "sha256": "5fdd32cc29f07f578373aa7d74c0e68aa864b223cddea882394da31a60248183", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/textexpander/windows.json b/ee/maintained-apps/outputs/textexpander/windows.json index 75d837bbe2a..b95726153be 100644 --- a/ee/maintained-apps/outputs/textexpander/windows.json +++ b/ee/maintained-apps/outputs/textexpander/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "254.8.4.504", + "version": "254.8.4.603", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'TextExpander' AND publisher = 'TextExpander, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'TextExpander' AND publisher = 'TextExpander, Inc.' AND version_compare(version, '254.8.4.504') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'TextExpander' AND publisher = 'TextExpander, Inc.' AND version_compare(version, '254.8.4.603') < 0);" }, - "installer_url": "https://cdn.textexpander.com/windows/845.4.0/TextExpander_x64.msi", + "installer_url": "https://cdn.textexpander.com/windows/846.3.0/TextExpander_x64.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "ef1edd0e", - "sha256": "d519e694cfb5f41a5b0b480973bf3bedcc531fcaba087c2d4c091d14c311789b", + "sha256": "3d0ecfc428080f95963b62963c11d2891fe1ad9b95acc92c4e8c134924a0a028", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/webstorm/darwin.json b/ee/maintained-apps/outputs/webstorm/darwin.json index ccd7172c88f..1de63e822e1 100644 --- a/ee/maintained-apps/outputs/webstorm/darwin.json +++ b/ee/maintained-apps/outputs/webstorm/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.2.0.1", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.WebStorm';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.WebStorm' AND version_compare(bundle_short_version, '2026.2.0.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.WebStorm' AND version_compare(bundle_short_version, '2026.2.1') < 0);" }, - "installer_url": "https://download.jetbrains.com/webstorm/WebStorm-2026.2.0.1-aarch64.dmg", + "installer_url": "https://download.jetbrains.com/webstorm/WebStorm-2026.2.1-aarch64.dmg", "install_script_ref": "2ae71299", "uninstall_script_ref": "6c5cf19b", - "sha256": "5adbcbec32eb721b0a94c3ebb187a5bb1a0fa3fb1705a530d163b59a5c6d1e47", + "sha256": "a0e7a65b5621312fc1390afe30ef45ebd8267ff07e605046230092f604692a01", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/webstorm/windows.json b/ee/maintained-apps/outputs/webstorm/windows.json index 8e332488312..19a385f192d 100644 --- a/ee/maintained-apps/outputs/webstorm/windows.json +++ b/ee/maintained-apps/outputs/webstorm/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.2.0.1", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.8665.341') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.9437.145') < 0);" }, - "installer_url": "https://download.jetbrains.com/webstorm/WebStorm-2026.2.0.1.exe", + "installer_url": "https://download.jetbrains.com/webstorm/WebStorm-2026.2.1.exe", "install_script_ref": "68119c0c", "uninstall_script_ref": "c2646a7f", - "sha256": "7530b5c01734633e5049ba3fbd2664282febee823f32b967a1e11cc02e71cd41", + "sha256": "86a7405254698e3a79d3afe3e5a655c7d2c8fafb2272f7b0c9fddc0426579324", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/winlogbeat/windows.json b/ee/maintained-apps/outputs/winlogbeat/windows.json index a806b96a3a3..d62e88f7f8c 100644 --- a/ee/maintained-apps/outputs/winlogbeat/windows.json +++ b/ee/maintained-apps/outputs/winlogbeat/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "9.4.4", + "version": "9.5.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Beats winlogbeat % (x86_64)' AND publisher = 'Elastic';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Beats winlogbeat % (x86_64)' AND publisher = 'Elastic' AND version_compare(version, '9.4.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Beats winlogbeat % (x86_64)' AND publisher = 'Elastic' AND version_compare(version, '9.5.0') < 0);" }, - "installer_url": "https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-9.4.4-windows-x86_64.msi", + "installer_url": "https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-9.5.0-windows-x86_64.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "641d45e4", - "sha256": "2d31100daa27ff8efa86ffd671c80e8cf1a6a1d8a41183c38f12e2d61b5dada1", + "sha256": "5f3172e3a985efb638cf2a4d6e78b9d490bdcf96fc049d3f9aa97316d83e4cec", "default_categories": [ "Security" ], diff --git a/ee/maintained-apps/outputs/zed/darwin.json b/ee/maintained-apps/outputs/zed/darwin.json index ce70c9eb829..9b828f93270 100644 --- a/ee/maintained-apps/outputs/zed/darwin.json +++ b/ee/maintained-apps/outputs/zed/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.13.2", + "version": "1.14.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.13.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.14.2') < 0);" }, - "installer_url": "https://zed.dev/api/releases/stable/1.13.2/Zed-aarch64.dmg", + "installer_url": "https://zed.dev/api/releases/stable/1.14.2/Zed-aarch64.dmg", "install_script_ref": "bdea8414", "uninstall_script_ref": "0436e2d8", - "sha256": "141971b98a99f788bbb29cbf9ee62240ae662221b79e508805862488de9cd91c", + "sha256": "f9df501f431c0e2ba028fb6f364d6332f2d31464175a11d6567e3f59990fe0d2", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/zed/windows.json b/ee/maintained-apps/outputs/zed/windows.json index 17d39efa6de..15fe0681278 100644 --- a/ee/maintained-apps/outputs/zed/windows.json +++ b/ee/maintained-apps/outputs/zed/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.13.2", + "version": "1.14.2", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Zed' AND publisher = 'Zed Industries';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Zed' AND publisher = 'Zed Industries' AND version_compare(version, '1.13.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Zed' AND publisher = 'Zed Industries' AND version_compare(version, '1.14.2') < 0);" }, - "installer_url": "https://github.com/zed-industries/zed/releases/download/v1.13.2/Zed-x86_64.exe", + "installer_url": "https://github.com/zed-industries/zed/releases/download/v1.14.2/Zed-x86_64.exe", "install_script_ref": "e5193bc1", "uninstall_script_ref": "3b164442", - "sha256": "f9e73b28ed1d202832dc2ff1e5df1be46297d16ac7aa1762f230f7c9995fd5b3", + "sha256": "2ce4154072131dfa466fda5d2b8f61fa14a745010c23e10273f01cb05abfd46a", "default_categories": [ "Developer tools" ]