diff --git a/ee/maintained-apps/outputs/goland/windows.json b/ee/maintained-apps/outputs/goland/windows.json index b6398e43656..2ff5e028159 100644 --- a/ee/maintained-apps/outputs/goland/windows.json +++ b/ee/maintained-apps/outputs/goland/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.1.2", + "version": "2026.1.3", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '2026.1.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '2026.1.3') < 0);" }, - "installer_url": "https://download.jetbrains.com/go/goland-2026.1.2.exe", + "installer_url": "https://download.jetbrains.com/go/goland-2026.1.3.exe", "install_script_ref": "6d754683", "uninstall_script_ref": "f2b296c7", - "sha256": "db0c6e0563ef8e59d6de1f0667b3f4417d83c8b69001d86e7e28478cb118482d", + "sha256": "5ef4ad0e5290eaccc30e8136313fdc011397cc76c4eab59eb55a9f83b4e0548a", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/goodsync/darwin.json b/ee/maintained-apps/outputs/goodsync/darwin.json index 7ecd960cba2..207edfe8aaf 100644 --- a/ee/maintained-apps/outputs/goodsync/darwin.json +++ b/ee/maintained-apps/outputs/goodsync/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "12.11.2", + "version": "12.11.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.sibersystems.goodsyncmac2000';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.sibersystems.goodsyncmac2000' AND version_compare(bundle_short_version, '12.11.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.sibersystems.goodsyncmac2000' AND version_compare(bundle_short_version, '12.11.3') < 0);" }, "installer_url": "https://www.goodsync.com/download/goodsync-vsub-mac.dmg", "install_script_ref": "005e7498", diff --git a/ee/maintained-apps/outputs/imazing/darwin.json b/ee/maintained-apps/outputs/imazing/darwin.json index fec6dec8a81..93a2e8e9078 100644 --- a/ee/maintained-apps/outputs/imazing/darwin.json +++ b/ee/maintained-apps/outputs/imazing/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "3.5.4", + "version": "3.5.5", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.DigiDNA.iMazing3Mac';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.DigiDNA.iMazing3Mac' AND version_compare(bundle_short_version, '3.5.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.DigiDNA.iMazing3Mac' AND version_compare(bundle_short_version, '3.5.5') < 0);" }, - "installer_url": "https://downloads.imazing.com/mac/iMazing/3.5.4.24052/iMazing_3.5.4.24052.dmg", + "installer_url": "https://downloads.imazing.com/mac/iMazing/3.5.5.24057/iMazing_3.5.5.24057.dmg", "install_script_ref": "e18e4725", - "uninstall_script_ref": "64a2ebfc", - "sha256": "cd500950c05c598cc28e6e7c67b822652eeaeb319e972689a294b57480b08a61", + "uninstall_script_ref": "b213835e", + "sha256": "9e32b6b264c2e36847e1b7709e57c920e978080fd8fd06ebf14363f86d732fc7", "default_categories": [ "Utilities" ] } ], "refs": { - "64a2ebfc": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\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\nquit_application 'com.DigiDNA.iMazing3.5.4.24052Mac'\nquit_application 'com.DigiDNA.iMazing3.5.4.24052Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", + "b213835e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\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\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac'\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", "e18e4725": "#!/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.DigiDNA.iMazing3Mac'\nif [ -d \"$APPDIR/iMazing.app\" ]; then\n\tsudo mv \"$APPDIR/iMazing.app\" \"$TMPDIR/iMazing.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/iMazing.app\" \"$APPDIR\"\nrelaunch_application 'com.DigiDNA.iMazing3Mac'\n" } } diff --git a/ee/maintained-apps/outputs/kiro-cli/darwin.json b/ee/maintained-apps/outputs/kiro-cli/darwin.json index 519a5d7c58c..5905bb62dd7 100644 --- a/ee/maintained-apps/outputs/kiro-cli/darwin.json +++ b/ee/maintained-apps/outputs/kiro-cli/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.6.0", + "version": "2.6.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.cli';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.cli' AND version_compare(bundle_short_version, '2.6.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.cli' AND version_compare(bundle_short_version, '2.6.1') < 0);" }, - "installer_url": "https://desktop-release.q.us-east-1.amazonaws.com/2.6.0/Kiro%20CLI.dmg", + "installer_url": "https://desktop-release.q.us-east-1.amazonaws.com/2.6.1/Kiro%20CLI.dmg", "install_script_ref": "7bf3d706", "uninstall_script_ref": "31b59062", - "sha256": "c45847af95f2431eef515aa1511e53319579f97b28a05941bfceb37120d6f995", + "sha256": "7a188bc8ffcd5f3ec3c7942946c67a5f71ef0d591af75e49b3d13ea63ed47d10", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/kiro/darwin.json b/ee/maintained-apps/outputs/kiro/darwin.json index ac2e92075a9..f6a2e776a79 100644 --- a/ee/maintained-apps/outputs/kiro/darwin.json +++ b/ee/maintained-apps/outputs/kiro/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.12.301", + "version": "0.12.318", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop' AND version_compare(bundle_short_version, '0.12.301') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop' AND version_compare(bundle_short_version, '0.12.318') < 0);" }, - "installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/0.12.301/kiro-ide-0.12.301-stable-darwin-arm64.dmg", + "installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/0.12.318/kiro-ide-0.12.318-stable-darwin-arm64.dmg", "install_script_ref": "28c3d1eb", "uninstall_script_ref": "b5d79db0", - "sha256": "39f8be241eda2d25581673f76d49e418683dd34fe952ef1ba446e761f5b5b032", + "sha256": "54799a32e067812dbfac4a26f9e1675c1e0c0db0236079226740ba5c940c0d65", "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 65e67980339..4d97877ab02 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.17.0", + "version": "1.17.1", "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.17.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop' AND version_compare(bundle_short_version, '1.17.1') < 0);" }, - "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.17.0/opencode-desktop-mac-arm64.dmg", + "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.17.1/opencode-desktop-mac-arm64.dmg", "install_script_ref": "727dc41e", "uninstall_script_ref": "ad62b190", - "sha256": "3507d91237e60619bd25d1c9a719144141668b4849ea487b645e5f53d7aa3a5f", + "sha256": "6038bb059bebf4bfb9b377e25d87ab0c1fe4e2cec17d7f3e2025a6cfab733b12", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/tableplus/darwin.json b/ee/maintained-apps/outputs/tableplus/darwin.json index 06b89dcf316..8e89a91c2fe 100644 --- a/ee/maintained-apps/outputs/tableplus/darwin.json +++ b/ee/maintained-apps/outputs/tableplus/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "7.1.6", + "version": "7.1.8", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyapp.TablePlus';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyapp.TablePlus' AND version_compare(bundle_short_version, '7.1.6') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyapp.TablePlus' AND version_compare(bundle_short_version, '7.1.8') < 0);" }, - "installer_url": "https://files.tableplus.com/macos/716/TablePlus.dmg", + "installer_url": "https://files.tableplus.com/macos/718/TablePlus.dmg", "install_script_ref": "4c748894", "uninstall_script_ref": "20e49d94", - "sha256": "0c629f8c2d46729cf9978351d675da1c215a36033804a4df53891be16e227fa0", + "sha256": "e342cdda6dc1cbae3add429843c2c92d4c056e66b3121aac632f37cc54775e24", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/telegram/windows.json b/ee/maintained-apps/outputs/telegram/windows.json index 6154cb75008..5b7554d4c34 100644 --- a/ee/maintained-apps/outputs/telegram/windows.json +++ b/ee/maintained-apps/outputs/telegram/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "6.9.0", + "version": "6.9.1", "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, '6.9.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC' AND version_compare(version, '6.9.1') < 0);" }, - "installer_url": "https://github.com/telegramdesktop/tdesktop/releases/download/v6.9.0/tsetup-x64.6.9.0.exe", + "installer_url": "https://github.com/telegramdesktop/tdesktop/releases/download/v6.9.1/tsetup-x64.6.9.1.exe", "install_script_ref": "0b88a95e", "uninstall_script_ref": "42311f1b", - "sha256": "d85b476bfde3f184868b422162a61f659cca8d08cf78396efabd4abfb9198ad7", + "sha256": "827771ea5826addc2bebf8fa5d35d8a7dc49bf2e832de06c15fba42144e6f89b", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/vc-redist-x64/windows.json b/ee/maintained-apps/outputs/vc-redist-x64/windows.json index d60d754c321..e8dae85bbb5 100644 --- a/ee/maintained-apps/outputs/vc-redist-x64/windows.json +++ b/ee/maintained-apps/outputs/vc-redist-x64/windows.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "14.51.36231.0", + "version": "14.51.36247.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Microsoft Visual C++ 2015-2022 Redistributable (x64)%' AND publisher = 'Microsoft Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Microsoft Visual C++ 2015-2022 Redistributable (x64)%' AND publisher = 'Microsoft Corporation' AND version_compare(version, '14.51.36231.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Microsoft Visual C++ 2015-2022 Redistributable (x64)%' AND publisher = 'Microsoft Corporation' AND version_compare(version, '14.51.36247.0') < 0);" }, - "installer_url": "https://download.visualstudio.microsoft.com/download/pr/c1bd4f2c-3672-468e-8480-7ed419dbb641/90E48ADE404E4576D023ABFA374F323555F233982A8805EA9AC63DCA9491A16B/VC_redist.x64.exe", + "installer_url": "https://download.visualstudio.microsoft.com/download/pr/ebdab8e5-1d7b-4d9f-a11b-cbb1720c3b12/843068991DAAA1F73AD9F6239BCE4D0F6A07A51F18C37EA2A867E9BECA71295C/VC_redist.x64.exe", "install_script_ref": "65654cc8", - "uninstall_script_ref": "5077ddcb", - "sha256": "90e48ade404e4576d023abfa374f323555f233982a8805ea9ac63dca9491a16b", + "uninstall_script_ref": "c4fbbcfd", + "sha256": "843068991daaa1f73ad9f6239bce4d0f6a07a51f18c37ea2a867e9beca71295c", "default_categories": [ "Developer tools" ] } ], "refs": { - "5077ddcb": "# Uninstalls the Microsoft Visual C++ Redistributable WiX \"burn\" bundle.\n#\n# The redistributable installs as a burn bootstrapper that registers a *bundle*\n# ARP entry (keyed by the bundle ProductCode) alongside several MSI component\n# entries (\"...X64 Minimum Runtime...\", \"...Additional Runtime...\"). Only the\n# bundle entry removes the whole redistributable, and it uninstalls by running\n# its cached bootstrapper .exe with /uninstall -- never via msiexec. We target\n# the bundle by its ProductCode (injected by the ingester) and fall back to the\n# cached bootstrapper in the Package Cache.\n\n$productCode = '{c157798c-9519-4e56-98d9-f696f78f4a61}'\n\nfunction Invoke-Uninstaller {\n param([string]$exe, [string]$exeArgs)\n if ($exeArgs -notmatch '/uninstall') { $exeArgs = \"/uninstall $exeArgs\" }\n if ($exeArgs -notmatch '/quiet') { $exeArgs = \"$exeArgs /quiet\" }\n if ($exeArgs -notmatch '/norestart') { $exeArgs = \"$exeArgs /norestart\" }\n $exeArgs = $exeArgs.Trim()\n Write-Host \"Uninstall command: $exe\"\n Write-Host \"Uninstall args: $exeArgs\"\n $process = Start-Process -FilePath $exe -ArgumentList $exeArgs -NoNewWindow -PassThru -Wait\n return $process.ExitCode\n}\n\n$exitCode = $null\n\n# 1) Preferred: the bundle ARP entry, looked up by the bundle ProductCode. Its\n# UninstallString/QuietUninstallString points to the cached bootstrapper .exe.\n$keys = @(\n \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\",\n \"HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\"\n)\n\nforeach ($key in $keys) {\n if (-not (Test-Path $key)) { continue }\n $entry = Get-ItemProperty $key -ErrorAction SilentlyContinue\n if (-not $entry) { continue }\n\n $raw = $entry.QuietUninstallString\n if (-not $raw) { $raw = $entry.UninstallString }\n if (-not $raw) { continue }\n\n # Parse into executable + args, handling quoted/unquoted/bare shapes.\n if ($raw -match '^\\s*\"([^\"]+)\"\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } elseif ($raw -match '(?i)^\\s*(.+?\\.exe)\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } else {\n $exe = $raw; $exeArgs = \"\"\n }\n\n $exitCode = Invoke-Uninstaller -exe $exe -exeArgs $exeArgs\n break\n}\n\n# 2) Fallback: run the cached bootstrapper directly from the Package Cache, which\n# burn names after the bundle ProductCode.\nif ($null -eq $exitCode) {\n $cached = Get-ChildItem -Path \"C:\\ProgramData\\Package Cache\\$productCode\" -Filter *.exe -ErrorAction SilentlyContinue | Select-Object -First 1\n if ($cached) {\n $exitCode = Invoke-Uninstaller -exe $cached.FullName -exeArgs \"\"\n }\n}\n\nif ($null -eq $exitCode) {\n Write-Host \"Uninstall entry not found for product code: $productCode\"\n Exit 0\n}\n\nWrite-Host \"Uninstall exit code: $exitCode\"\n# 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }\nExit $exitCode\n", - "65654cc8": "# Learn more about .exe install scripts:\n# http://fleetdm.com/learn-more-about/exe-install-scripts\n#\n# The Visual C++ Redistributable ships as a WiX \"burn\" bootstrapper (.exe). It\n# installs machine-wide and registers its own ARP entry. Silent switches come\n# from the winget installer manifest (burn bundles use /quiet /norestart).\n\n$exeFilePath = \"${env:INSTALLER_PATH}\"\n\ntry {\n if (-not (Test-Path $exeFilePath)) {\n Write-Host \"Error: Installer file not found at: $exeFilePath\"\n Exit 1\n }\n\n $processOptions = @{\n FilePath = \"$exeFilePath\"\n ArgumentList = \"/quiet /norestart\"\n PassThru = $true\n Wait = $true\n NoNewWindow = $true\n }\n\n $process = Start-Process @processOptions\n $exitCode = $process.ExitCode\n Write-Host \"Install exit code: $exitCode\"\n\n # 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\n if ($exitCode -eq 3010 -or $exitCode -eq 1641) {\n Exit 0\n }\n\n Exit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" + "65654cc8": "# Learn more about .exe install scripts:\n# http://fleetdm.com/learn-more-about/exe-install-scripts\n#\n# The Visual C++ Redistributable ships as a WiX \"burn\" bootstrapper (.exe). It\n# installs machine-wide and registers its own ARP entry. Silent switches come\n# from the winget installer manifest (burn bundles use /quiet /norestart).\n\n$exeFilePath = \"${env:INSTALLER_PATH}\"\n\ntry {\n if (-not (Test-Path $exeFilePath)) {\n Write-Host \"Error: Installer file not found at: $exeFilePath\"\n Exit 1\n }\n\n $processOptions = @{\n FilePath = \"$exeFilePath\"\n ArgumentList = \"/quiet /norestart\"\n PassThru = $true\n Wait = $true\n NoNewWindow = $true\n }\n\n $process = Start-Process @processOptions\n $exitCode = $process.ExitCode\n Write-Host \"Install exit code: $exitCode\"\n\n # 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\n if ($exitCode -eq 3010 -or $exitCode -eq 1641) {\n Exit 0\n }\n\n Exit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", + "c4fbbcfd": "# Uninstalls the Microsoft Visual C++ Redistributable WiX \"burn\" bundle.\n#\n# The redistributable installs as a burn bootstrapper that registers a *bundle*\n# ARP entry (keyed by the bundle ProductCode) alongside several MSI component\n# entries (\"...X64 Minimum Runtime...\", \"...Additional Runtime...\"). Only the\n# bundle entry removes the whole redistributable, and it uninstalls by running\n# its cached bootstrapper .exe with /uninstall -- never via msiexec. We target\n# the bundle by its ProductCode (injected by the ingester) and fall back to the\n# cached bootstrapper in the Package Cache.\n\n$productCode = '{0e3bb569-69d6-4c34-bff9-c2f81db5e5f0}'\n\nfunction Invoke-Uninstaller {\n param([string]$exe, [string]$exeArgs)\n if ($exeArgs -notmatch '/uninstall') { $exeArgs = \"/uninstall $exeArgs\" }\n if ($exeArgs -notmatch '/quiet') { $exeArgs = \"$exeArgs /quiet\" }\n if ($exeArgs -notmatch '/norestart') { $exeArgs = \"$exeArgs /norestart\" }\n $exeArgs = $exeArgs.Trim()\n Write-Host \"Uninstall command: $exe\"\n Write-Host \"Uninstall args: $exeArgs\"\n $process = Start-Process -FilePath $exe -ArgumentList $exeArgs -NoNewWindow -PassThru -Wait\n return $process.ExitCode\n}\n\n$exitCode = $null\n\n# 1) Preferred: the bundle ARP entry, looked up by the bundle ProductCode. Its\n# UninstallString/QuietUninstallString points to the cached bootstrapper .exe.\n$keys = @(\n \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\",\n \"HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\"\n)\n\nforeach ($key in $keys) {\n if (-not (Test-Path $key)) { continue }\n $entry = Get-ItemProperty $key -ErrorAction SilentlyContinue\n if (-not $entry) { continue }\n\n $raw = $entry.QuietUninstallString\n if (-not $raw) { $raw = $entry.UninstallString }\n if (-not $raw) { continue }\n\n # Parse into executable + args, handling quoted/unquoted/bare shapes.\n if ($raw -match '^\\s*\"([^\"]+)\"\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } elseif ($raw -match '(?i)^\\s*(.+?\\.exe)\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } else {\n $exe = $raw; $exeArgs = \"\"\n }\n\n $exitCode = Invoke-Uninstaller -exe $exe -exeArgs $exeArgs\n break\n}\n\n# 2) Fallback: run the cached bootstrapper directly from the Package Cache, which\n# burn names after the bundle ProductCode.\nif ($null -eq $exitCode) {\n $cached = Get-ChildItem -Path \"C:\\ProgramData\\Package Cache\\$productCode\" -Filter *.exe -ErrorAction SilentlyContinue | Select-Object -First 1\n if ($cached) {\n $exitCode = Invoke-Uninstaller -exe $cached.FullName -exeArgs \"\"\n }\n}\n\nif ($null -eq $exitCode) {\n Write-Host \"Uninstall entry not found for product code: $productCode\"\n Exit 0\n}\n\nWrite-Host \"Uninstall exit code: $exitCode\"\n# 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }\nExit $exitCode\n" } }