diff --git a/ee/maintained-apps/outputs/franz/darwin.json b/ee/maintained-apps/outputs/franz/darwin.json index 12636dba662..370059d96b8 100644 --- a/ee/maintained-apps/outputs/franz/darwin.json +++ b/ee/maintained-apps/outputs/franz/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "6.5.3", + "version": "6.6.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.meetfranz.franz';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.meetfranz.franz' AND version_compare(bundle_short_version, '6.5.3') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.meetfranz.franz' AND version_compare(bundle_short_version, '6.6.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.meetfranz.franz');" }, - "installer_url": "https://github.com/meetfranz/franz-6/releases/download/v6.5.3/Franz-arm64.dmg", + "installer_url": "https://github.com/meetfranz/franz-6/releases/download/v6.6.0/Franz-arm64.dmg", "install_script_ref": "7e8d07b5", "uninstall_script_ref": "9366c954", - "sha256": "59cbe3dcd1fb1db62f88496730eca9fac4b8540bc527adbb3707ad19e7f41267", + "sha256": "e6c8c9a4544fc49fab13e8e77382b3a6a5a74456dec35c4d925de19a99a6d22a", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/omnissa-horizon-client/darwin.json b/ee/maintained-apps/outputs/omnissa-horizon-client/darwin.json index 3f8377fc03e..4cc52afe834 100644 --- a/ee/maintained-apps/outputs/omnissa-horizon-client/darwin.json +++ b/ee/maintained-apps/outputs/omnissa-horizon-client/darwin.json @@ -1,23 +1,23 @@ { "versions": [ { - "version": "8.16.0", + "version": "8.18.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.omnissa.horizon.client.mac';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.omnissa.horizon.client.mac' AND version_compare(bundle_short_version, '8.16.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.omnissa.horizon.client.mac' AND version_compare(bundle_short_version, '8.18.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.omnissa.horizon.client.mac');" }, - "installer_url": "https://download3.omnissa.com/software/CART26FQ2_MAC_2506/Omnissa-Horizon-Client-2506-8.16.0-16536825094.dmg", + "installer_url": "https://download3.omnissa.com/software/CART27FQ1_MAC_2603/Omnissa-Horizon-Client-2603-8.18.0-24230061568.dmg", "install_script_ref": "bc7a1a69", - "uninstall_script_ref": "7812402a", - "sha256": "45bb7a2ec1b309e9bf93ccda155ab78890c12eabe52cff3e57cd900662a100c0", + "uninstall_script_ref": "9ced4cfc", + "sha256": "303f3f302cfdad7765d6534ab00b557bb791f5bd3ee0c8e0352e72922cace75f", "default_categories": [ "Productivity" ] } ], "refs": { - "7812402a": "#!/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.omnissa.horizon.CDSHelper'\nremove_launchctl_service 'com.ws1.deem.MacUIEvents'\nremove_launchctl_service 'com.ws1.deemd'\nremove_launchctl_service 'com.ws1.ws1etlm'\nremove_launchctl_service 'com.ws1.ws1etlmu'\nquit_application 'com.omnissa.horizonapp'\nremove_pkg_files 'com.omnissa.horizon.client.mac'\nforget_pkg 'com.omnissa.horizon.client.mac'\nremove_pkg_files 'com.ws1.Deem'\nforget_pkg 'com.ws1.Deem'\nremove_pkg_files 'com.ws1.Deem.InstallerHelper'\nforget_pkg 'com.ws1.Deem.InstallerHelper'\nremove_pkg_files 'com.ws1.EndpointTelemetryService'\nforget_pkg 'com.ws1.EndpointTelemetryService'\ntrash $LOGGED_IN_USER '/Applications/Omnissa Horizon Client.app'\ntrash $LOGGED_IN_USER '/Library/Application Support/Omnissa'\ntrash $LOGGED_IN_USER '/Library/LaunchDaemons/com.omnissa.horizon.CDSHelper.plist'\ntrash $LOGGED_IN_USER '/Library/Preferences/com.omnissa.horizon.client.mac.plist'\ntrash $LOGGED_IN_USER '/Library/PrivilegedHelperTools/com.omnissa.horizon.CDSHelper'\ntrash $LOGGED_IN_USER '~/.omnissa'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Omnissa Horizon Client'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.omnissa.horizon.client.mac'\ntrash $LOGGED_IN_USER '~/Library/Logs/Omnissa Horizon Client'\ntrash $LOGGED_IN_USER '~/Library/Logs/Omnissa'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.omnissa.horizon.client.mac.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.omnissa.horizon.keyboard.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.omnissa.horizon.client.mac.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.omnissa.horizon.client.mac'\n", + "9ced4cfc": "#!/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.omnissa.horizon.CDSHelper'\nremove_launchctl_service 'com.ws1.deem.MacUIEvents'\nremove_launchctl_service 'com.ws1.deemd'\nremove_launchctl_service 'com.ws1.ws1etlm'\nremove_launchctl_service 'com.ws1.ws1etlmu'\nquit_application 'com.omnissa.horizonapp'\nremove_pkg_files 'com.omnissa.horizon.client.mac'\nforget_pkg 'com.omnissa.horizon.client.mac'\nremove_pkg_files 'com.omnissa.html5videoplayer'\nforget_pkg 'com.omnissa.html5videoplayer'\nremove_pkg_files 'com.ws1.Deem'\nforget_pkg 'com.ws1.Deem'\nremove_pkg_files 'com.ws1.Deem.InstallerHelper'\nforget_pkg 'com.ws1.Deem.InstallerHelper'\nremove_pkg_files 'com.ws1.EndpointTelemetryService'\nforget_pkg 'com.ws1.EndpointTelemetryService'\ntrash $LOGGED_IN_USER '/Applications/Omnissa Horizon Client.app'\ntrash $LOGGED_IN_USER '/Library/Application Support/Omnissa'\ntrash $LOGGED_IN_USER '/Library/LaunchDaemons/com.omnissa.horizon.CDSHelper.plist'\ntrash $LOGGED_IN_USER '/Library/Preferences/com.omnissa.horizon.client.mac.plist'\ntrash $LOGGED_IN_USER '/Library/PrivilegedHelperTools/com.omnissa.horizon.CDSHelper'\ntrash $LOGGED_IN_USER '~/.omnissa'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Omnissa Horizon Client'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.omnissa.horizon.client.mac'\ntrash $LOGGED_IN_USER '~/Library/Logs/Omnissa Horizon Client'\ntrash $LOGGED_IN_USER '~/Library/Logs/Omnissa'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.omnissa.horizon.client.mac.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.omnissa.horizon.keyboard.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.omnissa.horizon.client.mac.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.omnissa.horizon.client.mac'\n", "bc7a1a69": "#!/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# install pkg files\nquit_and_track_application 'com.omnissa.horizon.client.mac'\nsudo installer -pkg \"$TMPDIR/Omnissa Horizon Client.pkg\" -target / || exit $?\nrelaunch_application 'com.omnissa.horizon.client.mac'\n" } } diff --git a/ee/maintained-apps/outputs/python-3.13/windows.json b/ee/maintained-apps/outputs/python-3.13/windows.json index 4b0293dba94..86805709448 100644 --- a/ee/maintained-apps/outputs/python-3.13/windows.json +++ b/ee/maintained-apps/outputs/python-3.13/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3.13.14", + "version": "3.13.15", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Python 3.13.% (64-bit)' AND publisher = 'Python Software Foundation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Python 3.13.% (64-bit)' AND publisher = 'Python Software Foundation' AND version_compare(version, '3.13.14150.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Python 3.13.% (64-bit)' AND publisher = 'Python Software Foundation' AND version_compare(version, '3.13.15150.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'python 3.13.exe');" }, - "installer_url": "https://www.python.org/ftp/python/3.13.14/python-3.13.14-amd64.exe", + "installer_url": "https://www.python.org/ftp/python/3.13.15/python-3.13.15-amd64.exe", "install_script_ref": "8272e48d", "uninstall_script_ref": "c408078d", - "sha256": "c54d9b9bbb8a36e6489363ddd01139707fd781d72f1f9e90c7ec65d0061368e0", + "sha256": "edec09c4853aeae9ac36efb8c9f95b6b8e2fee65eee56d9767a8b7c69c574403", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/reqable/windows.json b/ee/maintained-apps/outputs/reqable/windows.json index aa7f16ddaa5..18bfdcdcc41 100644 --- a/ee/maintained-apps/outputs/reqable/windows.json +++ b/ee/maintained-apps/outputs/reqable/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3.2.21", + "version": "3.2.22", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Reqable' AND publisher = 'Reqqable Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Reqable' AND publisher = 'Reqqable Inc.' AND version_compare(version, '3.2.21') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Reqable' AND publisher = 'Reqqable Inc.' AND version_compare(version, '3.2.22') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'reqable.exe');" }, - "installer_url": "https://github.com/reqable/reqable-app/releases/download/3.2.21/reqable-app-windows-x86_64.exe", + "installer_url": "https://github.com/reqable/reqable-app/releases/download/3.2.22/reqable-app-windows-x86_64.exe", "install_script_ref": "d2ffec58", "uninstall_script_ref": "b33fc442", - "sha256": "7b74c09b1f8cc263eae4019f6d2df000af05c79f3249ff9e8b834ab0df606c9a", + "sha256": "495677b9bb58f03015e9570db656ff2d369c615364de71305c77a2b06066702d", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/shapr3d/darwin.json b/ee/maintained-apps/outputs/shapr3d/darwin.json index 61a561e260c..9b0b3bade5f 100644 --- a/ee/maintained-apps/outputs/shapr3d/darwin.json +++ b/ee/maintained-apps/outputs/shapr3d/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.141.0.11474", + "version": "26.142.0.11496", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr' AND version_compare(bundle_short_version, '26.141.0.11474') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr' AND version_compare(bundle_short_version, '26.142.0.11496') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.shapr3d.shapr');" }, - "installer_url": "https://download.shapr3d.com/mac/Shapr3D-26.141.0.11474.dmg", + "installer_url": "https://download.shapr3d.com/mac/Shapr3D-26.142.0.11496.dmg", "install_script_ref": "aa7e3fbc", "uninstall_script_ref": "261544b8", - "sha256": "e5abdf4679812b7b2e7b94437d2a2b06346dc7ed05eb9a286f98c12bb68d9128", + "sha256": "b8c2fa6644856c631d942f61d2f4922185f3344325d66d1f1bdfb3e1ea68244a", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/yacreader/darwin.json b/ee/maintained-apps/outputs/yacreader/darwin.json index 08e40843ca6..763feaca8b3 100644 --- a/ee/maintained-apps/outputs/yacreader/darwin.json +++ b/ee/maintained-apps/outputs/yacreader/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "10.1.0.260703260", + "version": "10.2.0.260808325", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.yacreader.YACReader';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.yacreader.YACReader' AND version_compare(bundle_short_version, '10.1.0.260703260') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.yacreader.YACReader' AND version_compare(bundle_short_version, '10.2.0.260808325') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.yacreader.YACReader');" }, - "installer_url": "https://github.com/YACReader/yacreader/releases/download/10.1.0/YACReader-10.1.0.260703260.MacOSX-U.Qt6.dmg", + "installer_url": "https://github.com/YACReader/yacreader/releases/download/10.2.0/YACReader-10.2.0.260808325.MacOSX-U.Qt6.dmg", "install_script_ref": "3eb3ceee", "uninstall_script_ref": "3ff4171c", - "sha256": "ae1b1886987b6f7e3af84cf9c155f69804f801cb6b51f0383708257e230ae71f", + "sha256": "58d20981a80844e5e68f3ddc77d500a4370830b45b4df54f070da1e184904c91", "default_categories": [ "Productivity" ]