Switch scripts to bash and update refs (#44853)
Replace /bin/sh shebangs with /bin/bash across numerous Homebrew input scripts to support bash-specific constructs (local, arrays, [[ ]], etc.). Update darwin.json refs for multiple apps (notably 1password, adobe-acrobat-pro, adobe-creative-cloud) to point to new install/uninstall script refs and replace inline script bodies with bash variants. Also remove ee/maintained-apps/outputs/docker/darwin.json. Changes affect ee/maintained-apps/inputs/homebrew/scripts/* and corresponding ee/maintained-apps/outputs/* darwin.json entries.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_app() {
|
||||
b="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_app() {
|
||||
b="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
LOGGED_IN_USER=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
LOGGED_IN_USER=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
APPDIR="/Applications/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# variables
|
||||
LOGGED_IN_USER=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
quit_application() {
|
||||
local bundle_id="$1"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.1password.1password' AND version_compare(bundle_short_version, '8.12.12') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.1password.com/mac/1Password.pkg",
|
||||
"install_script_ref": "90335256",
|
||||
"install_script_ref": "ef2a17ff",
|
||||
"uninstall_script_ref": "f58c31b3",
|
||||
"sha256": "no_check",
|
||||
"default_categories": [
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"90335256": "#!/bin/sh\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.1password.1password'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n",
|
||||
"ef2a17ff": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.1password.1password'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n",
|
||||
"f58c31b3": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/1Password.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.1password*'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.1password-launcher'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Application Support/1Password'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Arc/User Data/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.1password.1password.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/1Password*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Mozilla/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Vivaldi/NativeMessagingHosts/com.1password.1password.json'\ntrash $LOGGED_IN_USER '~/Library/Containers/2BUA8C4S2C.com.1password.browser-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.1password*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.1password.browser-support'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.1password'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/2BUA8C4S2C.com.agilebits'\ntrash $LOGGED_IN_USER '~/Library/Logs/1Password'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.1password.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/group.com.1password.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.1password.1password.savedState'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,8 +7,8 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.acc.AdobeCreativeCloud' AND version_compare(bundle_short_version, '6.9.1.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://ccmdls.adobe.com/AdobeProducts/StandaloneBuilds/ACCC/ESD/6.9.1/1/macarm64/ACCCx6_9_1_1.dmg",
|
||||
"install_script_ref": "1ad8f626",
|
||||
"uninstall_script_ref": "0f729ae8",
|
||||
"install_script_ref": "a331ea84",
|
||||
"uninstall_script_ref": "e002ddef",
|
||||
"sha256": "3a5c62f6e0be6bf38c7fa169744bc6545b3d9a1512974cb2acff80df315a1a91",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"0f729ae8": "#!/bin/sh\n\nquit_app() {\n b=\"$1\"\n # try a friendly quit if a GUI user is active\n if osascript -e \"application id \\\"$b\\\" is running\" >/dev/null 2>&1; then\n cu=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -ne 0 ] || [ \"$cu\" != \"root\" ]; then\n i=0\n while [ \"$i\" -lt 10 ]; do\n osascript -e \"tell application id \\\"$b\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$b\" >/dev/null 2>&1; then break; fi\n i=$((i+1))\n sleep 1\n done\n fi\n fi\n # hard stop fallback\n pkill -f \"$b\" >/dev/null 2>&1 || true\n}\n\nBUNDLE_ID=\"com.adobe.acc.AdobeCreativeCloud\"\nquit_app \"$BUNDLE_ID\"\n\n# Try the official Adobe Creative Cloud Uninstaller.app first\nUNINST_APP=\"\"\nfor p in \\\n \"/Applications/Utilities/Adobe Creative Cloud/Utils/Creative Cloud Uninstaller.app\" \\\n \"/Applications/Adobe Creative Cloud/Utils/Creative Cloud Uninstaller.app\" \\\n \"/Applications/Utilities/Adobe Creative Cloud/Creative Cloud Uninstaller.app\"\ndo\n [ -d \"$p\" ] && { UNINST_APP=\"$p\"; break; }\ndone\n[ -z \"$UNINST_APP\" ] && UNINST_APP=\"$(/usr/bin/find /Applications /Applications/Utilities -maxdepth 5 -type d -iname '*creative*cloud*uninstaller*.app' -print -quit 2>/dev/null)\"\n\nif [ -n \"$UNINST_APP\" ] && [ -d \"$UNINST_APP\" ]; then\n BIN=\"$(/usr/bin/find \"$UNINST_APP/Contents/MacOS\" -maxdepth 1 -type f -perm -111 -print -quit 2>/dev/null)\"\n [ -n \"$BIN\" ] && { \"$BIN\" -uninstall --force >/dev/null 2>&1 || \"$BIN\" >/dev/null 2>&1 || true; }\nfi\n\n# Remove app bundles\nrm -rf \"/Applications/Adobe Creative Cloud.app\" \\\n \"/Applications/Creative Cloud.app\" \\\n \"/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app\" >/dev/null 2>&1 || true\n\n# System support files\nrm -rf \"/Library/Application Support/Adobe/Creative Cloud\" \\\n \"/Library/Application Support/Adobe/Adobe Desktop Common\" >/dev/null 2>&1 || true\nrm -f \"/Library/Preferences/com.adobe.acc.AdobeCreativeCloud.plist\" >/dev/null 2>&1 || true\nrm -f /var/db/receipts/com.adobe.acc*.bom /var/db/receipts/com.adobe.acc*.plist >/dev/null 2>&1 || true\n\n# Per-user cleanup\nfor udir in /Users/* /var/root; do\n [ -d \"$udir/Library\" ] || continue\n rm -rf \"$udir/Library/Application Support/Adobe/Creative Cloud\" \\\n \"$udir/Library/Caches/com.adobe.acc.AdobeCreativeCloud\" \\\n \"$udir/Library/Logs/Adobe/Creative Cloud\" >/dev/null 2>&1 || true\n rm -f \"$udir/Library/Preferences/com.adobe.acc.AdobeCreativeCloud.plist\" >/dev/null 2>&1 || true\ndone\n\necho \"adobe creative cloud uninstalled\"\n",
|
||||
"1ad8f626": "#!/bin/sh\n\nquit_application() {\n bundle_id=\"$1\"\n timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n console_user=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -eq 0 ] && [ \"$console_user\" = \"root\" ]; then\n echo \"Skipping quit for '$bundle_id'.\"\n return\n fi\n echo \"Quitting '$bundle_id'...\"\n i=0\n while [ \"$i\" -lt \"$timeout_duration\" ]; do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"'$bundle_id' quit successfully.\"\n return\n fi\n i=$((i+1))\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[ -n \"$INSTALLER_PATH\" ] && [ -f \"$INSTALLER_PATH\" ] || { echo \"missing installer\"; exit 1; }\n\nquit_application \"com.adobe.acc.AdobeCreativeCloud\"\n\n# Mount to a known path to avoid space-in-volume issues\nMOUNT_POINT=\"$(mktemp -d \"/tmp/adobe_cc.XXXXXX\")\"\nif ! hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" >/dev/null 2>&1; then\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"failed to mount dmg\"\n exit 1\nfi\n\n# Find the installer app (handles Install.app or variants like *Install*.app)\nINSTALL_APP=\"$(/usr/bin/find \"$MOUNT_POINT\" -maxdepth 5 -type d \\( -name \"Install.app\" -o -iname \"*Install*.app\" \\) -print -quit)\"\n\nif [ -z \"$INSTALL_APP\" ] || [ ! -d \"$INSTALL_APP\" ]; then\n hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"Install.app not found\"\n exit 1\nfi\n\n# Prefer Contents/MacOS/Install, fall back to first executable in MacOS\nBIN=\"$INSTALL_APP/Contents/MacOS/Install\"\nif [ ! -x \"$BIN\" ]; then\n BIN=\"$(/usr/bin/find \"$INSTALL_APP/Contents/MacOS\" -type f -perm +111 -print -quit 2>/dev/null)\"\nfi\n[ -n \"$BIN\" ] && [ -x \"$BIN\" ] || { hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true; rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true; echo \"installer binary not found\"; exit 1; }\n\n# Try silent, fall back to normal if needed\n\"$BIN\" --mode=silent >/dev/null 2>&1 || \"$BIN\" >/dev/null 2>&1\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\nrmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"adobe creative cloud installed\"\n"
|
||||
"a331ea84": "#!/bin/bash\n\nquit_application() {\n bundle_id=\"$1\"\n timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n console_user=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -eq 0 ] && [ \"$console_user\" = \"root\" ]; then\n echo \"Skipping quit for '$bundle_id'.\"\n return\n fi\n echo \"Quitting '$bundle_id'...\"\n i=0\n while [ \"$i\" -lt \"$timeout_duration\" ]; do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"'$bundle_id' quit successfully.\"\n return\n fi\n i=$((i+1))\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[ -n \"$INSTALLER_PATH\" ] && [ -f \"$INSTALLER_PATH\" ] || { echo \"missing installer\"; exit 1; }\n\nquit_application \"com.adobe.acc.AdobeCreativeCloud\"\n\n# Mount to a known path to avoid space-in-volume issues\nMOUNT_POINT=\"$(mktemp -d \"/tmp/adobe_cc.XXXXXX\")\"\nif ! hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" >/dev/null 2>&1; then\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"failed to mount dmg\"\n exit 1\nfi\n\n# Find the installer app (handles Install.app or variants like *Install*.app)\nINSTALL_APP=\"$(/usr/bin/find \"$MOUNT_POINT\" -maxdepth 5 -type d \\( -name \"Install.app\" -o -iname \"*Install*.app\" \\) -print -quit)\"\n\nif [ -z \"$INSTALL_APP\" ] || [ ! -d \"$INSTALL_APP\" ]; then\n hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"Install.app not found\"\n exit 1\nfi\n\n# Prefer Contents/MacOS/Install, fall back to first executable in MacOS\nBIN=\"$INSTALL_APP/Contents/MacOS/Install\"\nif [ ! -x \"$BIN\" ]; then\n BIN=\"$(/usr/bin/find \"$INSTALL_APP/Contents/MacOS\" -type f -perm +111 -print -quit 2>/dev/null)\"\nfi\n[ -n \"$BIN\" ] && [ -x \"$BIN\" ] || { hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true; rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true; echo \"installer binary not found\"; exit 1; }\n\n# Try silent, fall back to normal if needed\n\"$BIN\" --mode=silent >/dev/null 2>&1 || \"$BIN\" >/dev/null 2>&1\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\nrmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"adobe creative cloud installed\"\n",
|
||||
"e002ddef": "#!/bin/bash\n\nquit_app() {\n b=\"$1\"\n # try a friendly quit if a GUI user is active\n if osascript -e \"application id \\\"$b\\\" is running\" >/dev/null 2>&1; then\n cu=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -ne 0 ] || [ \"$cu\" != \"root\" ]; then\n i=0\n while [ \"$i\" -lt 10 ]; do\n osascript -e \"tell application id \\\"$b\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$b\" >/dev/null 2>&1; then break; fi\n i=$((i+1))\n sleep 1\n done\n fi\n fi\n # hard stop fallback\n pkill -f \"$b\" >/dev/null 2>&1 || true\n}\n\nBUNDLE_ID=\"com.adobe.acc.AdobeCreativeCloud\"\nquit_app \"$BUNDLE_ID\"\n\n# Try the official Adobe Creative Cloud Uninstaller.app first\nUNINST_APP=\"\"\nfor p in \\\n \"/Applications/Utilities/Adobe Creative Cloud/Utils/Creative Cloud Uninstaller.app\" \\\n \"/Applications/Adobe Creative Cloud/Utils/Creative Cloud Uninstaller.app\" \\\n \"/Applications/Utilities/Adobe Creative Cloud/Creative Cloud Uninstaller.app\"\ndo\n [ -d \"$p\" ] && { UNINST_APP=\"$p\"; break; }\ndone\n[ -z \"$UNINST_APP\" ] && UNINST_APP=\"$(/usr/bin/find /Applications /Applications/Utilities -maxdepth 5 -type d -iname '*creative*cloud*uninstaller*.app' -print -quit 2>/dev/null)\"\n\nif [ -n \"$UNINST_APP\" ] && [ -d \"$UNINST_APP\" ]; then\n BIN=\"$(/usr/bin/find \"$UNINST_APP/Contents/MacOS\" -maxdepth 1 -type f -perm -111 -print -quit 2>/dev/null)\"\n [ -n \"$BIN\" ] && { \"$BIN\" -uninstall --force >/dev/null 2>&1 || \"$BIN\" >/dev/null 2>&1 || true; }\nfi\n\n# Remove app bundles\nrm -rf \"/Applications/Adobe Creative Cloud.app\" \\\n \"/Applications/Creative Cloud.app\" \\\n \"/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app\" >/dev/null 2>&1 || true\n\n# System support files\nrm -rf \"/Library/Application Support/Adobe/Creative Cloud\" \\\n \"/Library/Application Support/Adobe/Adobe Desktop Common\" >/dev/null 2>&1 || true\nrm -f \"/Library/Preferences/com.adobe.acc.AdobeCreativeCloud.plist\" >/dev/null 2>&1 || true\nrm -f /var/db/receipts/com.adobe.acc*.bom /var/db/receipts/com.adobe.acc*.plist >/dev/null 2>&1 || true\n\n# Per-user cleanup\nfor udir in /Users/* /var/root; do\n [ -d \"$udir/Library\" ] || continue\n rm -rf \"$udir/Library/Application Support/Adobe/Creative Cloud\" \\\n \"$udir/Library/Caches/com.adobe.acc.AdobeCreativeCloud\" \\\n \"$udir/Library/Logs/Adobe/Creative Cloud\" >/dev/null 2>&1 || true\n rm -f \"$udir/Library/Preferences/com.adobe.acc.AdobeCreativeCloud.plist\" >/dev/null 2>&1 || true\ndone\n\necho \"adobe creative cloud uninstalled\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.backblaze.bzbmenu';"
|
||||
},
|
||||
"installer_url": "https://secure.backblaze.com/api/install_backblaze?file=bzinstall-mac-10.0.0.1030.dmg",
|
||||
"install_script_ref": "33648251",
|
||||
"uninstall_script_ref": "7417e7ec",
|
||||
"install_script_ref": "17ec084a",
|
||||
"uninstall_script_ref": "019c993c",
|
||||
"sha256": "2e2efda90154bf506fc0185b55b831c4dcf8ad70452798dd4e1c6bc7eb699042",
|
||||
"default_categories": [
|
||||
"Utilities"
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"33648251": "#!/bin/sh\n\nquit_application() {\n bundle_id=\"$1\"\n timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n console_user=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -eq 0 ] && [ \"$console_user\" = \"root\" ]; then\n echo \"Skipping quit for '$bundle_id'.\"\n return\n fi\n echo \"Quitting '$bundle_id'...\"\n i=0\n while [ \"$i\" -lt \"$timeout_duration\" ]; do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"'$bundle_id' quit successfully.\"\n return\n fi\n i=$((i+1))\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[ -n \"$INSTALLER_PATH\" ] && [ -f \"$INSTALLER_PATH\" ] || { echo \"missing installer\"; exit 1; }\n\nquit_application \"com.backblaze.bzbmenu\"\n\n# Mount to a known path to avoid space-in-volume issues\nMOUNT_POINT=\"$(mktemp -d \"/tmp/backblaze.XXXXXX\")\"\nif ! hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" >/dev/null 2>&1; then\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"failed to mount dmg\"\n exit 1\nfi\n\n# Find the Backblaze Installer.app\nINSTALL_APP=\"$(/usr/bin/find \"$MOUNT_POINT\" -maxdepth 3 -type d -name \"Backblaze Installer.app\" -print -quit)\"\n\nif [ -z \"$INSTALL_APP\" ] || [ ! -d \"$INSTALL_APP\" ]; then\n hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"Backblaze Installer.app not found\"\n exit 1\nfi\n\n# Prefer the known binary name, fall back to first executable in MacOS\nBIN=\"$INSTALL_APP/Contents/MacOS/bzinstall_mate\"\nif [ ! -x \"$BIN\" ]; then\n BIN=\"$(/usr/bin/find \"$INSTALL_APP/Contents/MacOS\" -type f -perm +111 -print -quit 2>/dev/null)\"\nfi\n[ -n \"$BIN\" ] && [ -x \"$BIN\" ] || { hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true; rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true; echo \"installer binary not found\"; exit 1; }\n\n# Run the installer with silent/nogui flag\n\"$BIN\" -nogui >/dev/null 2>&1\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\nrmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"backblaze installed\"\n",
|
||||
"7417e7ec": "#!/bin/sh\n\nquit_app() {\n b=\"$1\"\n # try a friendly quit if a GUI user is active\n if osascript -e \"application id \\\"$b\\\" is running\" >/dev/null 2>&1; then\n cu=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -ne 0 ] || [ \"$cu\" != \"root\" ]; then\n i=0\n while [ \"$i\" -lt 10 ]; do\n osascript -e \"tell application id \\\"$b\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$b\" >/dev/null 2>&1; then break; fi\n i=$((i+1))\n sleep 1\n done\n fi\n fi\n # hard stop fallback\n pkill -f \"$b\" >/dev/null 2>&1 || true\n}\n\nBUNDLE_ID=\"com.backblaze.bzbmenu\"\nquit_app \"$BUNDLE_ID\"\n\n# Stop and remove launchctl services\nfor svc in com.backblaze.bzbmenu com.backblaze.bzserv; do\n launchctl bootout \"system/$svc\" >/dev/null 2>&1 || true\n launchctl bootout \"gui/$(id -u)/$svc\" >/dev/null 2>&1 || true\n launchctl remove \"$svc\" >/dev/null 2>&1 || true\ndone\n\n# Remove app bundles and related files\nrm -rf \"/Applications/Backblaze.app\" \\\n \"/Applications/BackblazeRestore.app\" \\\n \"/Library/PreferencePanes/BackblazeBackup.prefPane\" >/dev/null 2>&1 || true\n\n# Remove diagnostic reports\nrm -f /Library/Logs/DiagnosticReports/bzbmenu_*.*_resource.diag >/dev/null 2>&1 || true\n\n# Remove package data and preferences\nrm -rf \"/Library/Backblaze.bzpkg\" >/dev/null 2>&1 || true\n\n# Per-user cleanup\nfor udir in /Users/* /var/root; do\n [ -d \"$udir/Library\" ] || continue\n rm -rf \"$udir/Library/Logs/BackblazeGUIInstaller\" >/dev/null 2>&1 || true\n rm -f \"$udir/Library/Preferences/com.backblaze.bzbmenu.plist\" >/dev/null 2>&1 || true\ndone\n\necho \"backblaze uninstalled\"\n"
|
||||
"17ec084a": "#!/bin/bash\n\nquit_application() {\n bundle_id=\"$1\"\n timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n console_user=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -eq 0 ] && [ \"$console_user\" = \"root\" ]; then\n echo \"Skipping quit for '$bundle_id'.\"\n return\n fi\n echo \"Quitting '$bundle_id'...\"\n i=0\n while [ \"$i\" -lt \"$timeout_duration\" ]; do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"'$bundle_id' quit successfully.\"\n return\n fi\n i=$((i+1))\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[ -n \"$INSTALLER_PATH\" ] && [ -f \"$INSTALLER_PATH\" ] || { echo \"missing installer\"; exit 1; }\n\nquit_application \"com.backblaze.bzbmenu\"\n\n# Mount to a known path to avoid space-in-volume issues\nMOUNT_POINT=\"$(mktemp -d \"/tmp/backblaze.XXXXXX\")\"\nif ! hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" >/dev/null 2>&1; then\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"failed to mount dmg\"\n exit 1\nfi\n\n# Find the Backblaze Installer.app\nINSTALL_APP=\"$(/usr/bin/find \"$MOUNT_POINT\" -maxdepth 3 -type d -name \"Backblaze Installer.app\" -print -quit)\"\n\nif [ -z \"$INSTALL_APP\" ] || [ ! -d \"$INSTALL_APP\" ]; then\n hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n echo \"Backblaze Installer.app not found\"\n exit 1\nfi\n\n# Prefer the known binary name, fall back to first executable in MacOS\nBIN=\"$INSTALL_APP/Contents/MacOS/bzinstall_mate\"\nif [ ! -x \"$BIN\" ]; then\n BIN=\"$(/usr/bin/find \"$INSTALL_APP/Contents/MacOS\" -type f -perm +111 -print -quit 2>/dev/null)\"\nfi\n[ -n \"$BIN\" ] && [ -x \"$BIN\" ] || { hdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true; rmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true; echo \"installer binary not found\"; exit 1; }\n\n# Run the installer with silent/nogui flag\n\"$BIN\" -nogui >/dev/null 2>&1\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\nrmdir \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"backblaze installed\"\n",
|
||||
"019c993c": "#!/bin/bash\n\nquit_app() {\n b=\"$1\"\n # try a friendly quit if a GUI user is active\n if osascript -e \"application id \\\"$b\\\" is running\" >/dev/null 2>&1; then\n cu=\"$(stat -f \"%Su\" /dev/console 2>/dev/null || true)\"\n if [ \"$(id -u)\" -ne 0 ] || [ \"$cu\" != \"root\" ]; then\n i=0\n while [ \"$i\" -lt 10 ]; do\n osascript -e \"tell application id \\\"$b\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$b\" >/dev/null 2>&1; then break; fi\n i=$((i+1))\n sleep 1\n done\n fi\n fi\n # hard stop fallback\n pkill -f \"$b\" >/dev/null 2>&1 || true\n}\n\nBUNDLE_ID=\"com.backblaze.bzbmenu\"\nquit_app \"$BUNDLE_ID\"\n\n# Stop and remove launchctl services\nfor svc in com.backblaze.bzbmenu com.backblaze.bzserv; do\n launchctl bootout \"system/$svc\" >/dev/null 2>&1 || true\n launchctl bootout \"gui/$(id -u)/$svc\" >/dev/null 2>&1 || true\n launchctl remove \"$svc\" >/dev/null 2>&1 || true\ndone\n\n# Remove app bundles and related files\nrm -rf \"/Applications/Backblaze.app\" \\\n \"/Applications/BackblazeRestore.app\" \\\n \"/Library/PreferencePanes/BackblazeBackup.prefPane\" >/dev/null 2>&1 || true\n\n# Remove diagnostic reports\nrm -f /Library/Logs/DiagnosticReports/bzbmenu_*.*_resource.diag >/dev/null 2>&1 || true\n\n# Remove package data and preferences\nrm -rf \"/Library/Backblaze.bzpkg\" >/dev/null 2>&1 || true\n\n# Per-user cleanup\nfor udir in /Users/* /var/root; do\n [ -d \"$udir/Library\" ] || continue\n rm -rf \"$udir/Library/Logs/BackblazeGUIInstaller\" >/dev/null 2>&1 || true\n rm -f \"$udir/Library/Preferences/com.backblaze.bzbmenu.plist\" >/dev/null 2>&1 || true\ndone\n\necho \"backblaze uninstalled\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"installer_url": "https://dl.devmate.com/com.macpaw.CleanMyMac5/50301.0.2601271414/1769524551/CleanMyMac5-50301.0.2601271414.zip",
|
||||
"install_script_ref": "fff893a1",
|
||||
"uninstall_script_ref": "76fe1507",
|
||||
"uninstall_script_ref": "6b7419ac",
|
||||
"sha256": "8b847a21f919b41598fc135f21134ccca7c5c78dea4bcdfd99687eb65455f38a",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"76fe1507": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nremove_launchctl_service 'com.macpaw.CleanMyMac5.HealthMonitor'\nremove_launchctl_service 'com.macpaw.CleanMyMac5.Menu'\nquit_application 'com.macpaw.CleanMyMac5'\nquit_application 'com.macpaw.CleanMyMac5.HealthMonitor'\nquit_application 'com.macpaw.CleanMyMac5.Menu'\nsudo rm -rf '/Library/PrivilegedHelperTools/com.macpaw.CleanMyMac5.Agent'\nsudo rm -rf \"$APPDIR/CleanMyMac_5.app\"\ntrash $LOGGED_IN_USER '/Library/LaunchDaemons/com.macpaw.CleanMyMac5.Agent.plist'\ntrash $LOGGED_IN_USER '/Library/PrivilegedHelperTools/com.macpaw.CleanMyMac5.Agent'\ntrash $LOGGED_IN_USER '/Users/Shared/CleanMyMac_5'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/S8EX82NJP6.com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CleanMyMac_5'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/S8EX82NJP6.com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.macpaw.CleanMyMac5.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.macpaw.CleanMyMac5.Updater.plist'\ntrash $LOGGED_IN_USER '~/Library/Logs/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.macpaw.CleanMyMac5.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.macpaw.CleanMyMac5.savedState'\n",
|
||||
"6b7419ac": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nremove_launchctl_service 'com.macpaw.CleanMyMac5.HealthMonitor'\nremove_launchctl_service 'com.macpaw.CleanMyMac5.Menu'\nquit_application 'com.macpaw.CleanMyMac5'\nquit_application 'com.macpaw.CleanMyMac5.HealthMonitor'\nquit_application 'com.macpaw.CleanMyMac5.Menu'\nsudo rm -rf '/Library/PrivilegedHelperTools/com.macpaw.CleanMyMac5.Agent'\nsudo rm -rf \"$APPDIR/CleanMyMac_5.app\"\ntrash $LOGGED_IN_USER '/Library/LaunchDaemons/com.macpaw.CleanMyMac5.Agent.plist'\ntrash $LOGGED_IN_USER '/Library/PrivilegedHelperTools/com.macpaw.CleanMyMac5.Agent'\ntrash $LOGGED_IN_USER '/Users/Shared/CleanMyMac_5'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/S8EX82NJP6.com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CleanMyMac_5'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/S8EX82NJP6.com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.macpaw.CleanMyMac5.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.macpaw.CleanMyMac5.Updater.plist'\ntrash $LOGGED_IN_USER '~/Library/Logs/com.macpaw.CleanMyMac5'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.macpaw.CleanMyMac5.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.macpaw.CleanMyMac5.savedState'\n",
|
||||
"fff893a1": "#!/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\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'com.macpaw.CleanMyMac5'\nif [ -d \"$APPDIR/CleanMyMac_5.app\" ]; then\n\tsudo mv \"$APPDIR/CleanMyMac_5.app\" \"$TMPDIR/CleanMyMac_5.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/CleanMyMac_5.app\" \"$APPDIR\"\nrelaunch_application 'com.macpaw.CleanMyMac5'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.dbeaver.product.enterprise' AND version_compare(bundle_short_version, '26.0.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.dbeaver.net/enterprise/26.0.0/dbeaver-ee-26.0.0-macos-aarch64.dmg",
|
||||
"install_script_ref": "f2902602",
|
||||
"install_script_ref": "a96abe07",
|
||||
"uninstall_script_ref": "a320a418",
|
||||
"sha256": "f1b5aef7d32ed1536871dd4270455dff3a665249db2f1fbbeba5cd75b3c27969",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"a320a418": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nsend_signal() {\n local signal=\"$1\"\n local bundle_id=\"$2\"\n local logged_in_user=\"$3\"\n local logged_in_uid pids\n\n if [ -z \"$signal\" ] || [ -z \"$bundle_id\" ] || [ -z \"$logged_in_user\" ]; then\n echo \"Usage: uninstall_signal <signal> <bundle_id> <logged_in_user>\"\n return 1\n fi\n\n logged_in_uid=$(id -u \"$logged_in_user\")\n if [ -z \"$logged_in_uid\" ]; then\n echo \"Could not find UID for user '$logged_in_user'.\"\n return 1\n fi\n\n echo \"Signalling '$signal' to application ID '$bundle_id' for user '$logged_in_user'\"\n\n pids=$(/bin/launchctl asuser \"$logged_in_uid\" sudo -iu \"$logged_in_user\" /bin/launchctl list | awk -v bundle_id=\"$bundle_id\" '\n $3 ~ bundle_id { print $1 }')\n\n if [ -z \"$pids\" ]; then\n echo \"No processes found for bundle ID '$bundle_id'.\"\n return 0\n fi\n\n echo \"Unix PIDs are $pids for processes with bundle identifier $bundle_id\"\n for pid in $pids; do\n if kill -s \"$signal\" \"$pid\" 2>/dev/null; then\n echo \"Successfully signaled PID $pid with signal $signal.\"\n else\n echo \"Failed to kill PID $pid with signal $signal. Check permissions.\"\n fi\n done\n\n sleep 3\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsend_signal 'TERM' 'com.dbeaver.product.enterprise' \"$LOGGED_IN_USER\"\nsudo rm -rf \"$APPDIR/DBeaverEE.app\"\ntrash $LOGGED_IN_USER '~/Library/DBeaverData'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dbeaver.product.enterprise.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.dbeaver.product.enterprise.savedState'\n",
|
||||
"f2902602": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.enterprise'\nif [ -d \"$APPDIR/DBeaverEE.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverEE.app\" \"$TMPDIR/DBeaverEE.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverEE.app\" \"$APPDIR\"\n"
|
||||
"a96abe07": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.enterprise'\nif [ -d \"$APPDIR/DBeaverEE.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverEE.app\" \"$TMPDIR/DBeaverEE.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverEE.app\" \"$APPDIR\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.dbeaver.product.lite' AND version_compare(bundle_short_version, '26.0.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.dbeaver.net/lite/26.0.0/dbeaver-le-26.0.0-macos-aarch64.dmg",
|
||||
"install_script_ref": "8204606b",
|
||||
"install_script_ref": "c1cba05a",
|
||||
"uninstall_script_ref": "60a94422",
|
||||
"sha256": "bad4d7121af716f27594674361663de1b392f7ef7861b900845deef5e134084e",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"60a94422": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nsend_signal() {\n local signal=\"$1\"\n local bundle_id=\"$2\"\n local logged_in_user=\"$3\"\n local logged_in_uid pids\n\n if [ -z \"$signal\" ] || [ -z \"$bundle_id\" ] || [ -z \"$logged_in_user\" ]; then\n echo \"Usage: uninstall_signal <signal> <bundle_id> <logged_in_user>\"\n return 1\n fi\n\n logged_in_uid=$(id -u \"$logged_in_user\")\n if [ -z \"$logged_in_uid\" ]; then\n echo \"Could not find UID for user '$logged_in_user'.\"\n return 1\n fi\n\n echo \"Signalling '$signal' to application ID '$bundle_id' for user '$logged_in_user'\"\n\n pids=$(/bin/launchctl asuser \"$logged_in_uid\" sudo -iu \"$logged_in_user\" /bin/launchctl list | awk -v bundle_id=\"$bundle_id\" '\n $3 ~ bundle_id { print $1 }')\n\n if [ -z \"$pids\" ]; then\n echo \"No processes found for bundle ID '$bundle_id'.\"\n return 0\n fi\n\n echo \"Unix PIDs are $pids for processes with bundle identifier $bundle_id\"\n for pid in $pids; do\n if kill -s \"$signal\" \"$pid\" 2>/dev/null; then\n echo \"Successfully signaled PID $pid with signal $signal.\"\n else\n echo \"Failed to kill PID $pid with signal $signal. Check permissions.\"\n fi\n done\n\n sleep 3\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsend_signal 'TERM' 'com.dbeaver.product.lite' \"$LOGGED_IN_USER\"\nsudo rm -rf \"$APPDIR/DBeaverLite.app\"\ntrash $LOGGED_IN_USER '~/Library/DBeaverData'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dbeaver.product.lite.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.dbeaver.product.lite.savedState'\n",
|
||||
"8204606b": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.lite'\nif [ -d \"$APPDIR/DBeaverLite.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverLite.app\" \"$TMPDIR/DBeaverLite.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverLite.app\" \"$APPDIR\"\n"
|
||||
"c1cba05a": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.lite'\nif [ -d \"$APPDIR/DBeaverLite.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverLite.app\" \"$TMPDIR/DBeaverLite.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverLite.app\" \"$APPDIR\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.dbeaver.product.ultimate' AND version_compare(bundle_short_version, '26.0.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.dbeaver.net/ultimate/26.0.0/dbeaver-ue-26.0.0-macos-aarch64.dmg",
|
||||
"install_script_ref": "604c7581",
|
||||
"install_script_ref": "0a44a77f",
|
||||
"uninstall_script_ref": "94cf328c",
|
||||
"sha256": "0d633329c98a84c339b0e94b84cea77e3de953659354547bb333ed4321e4b449",
|
||||
"default_categories": [
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"604c7581": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.ultimate'\nif [ -d \"$APPDIR/DBeaverUltimate.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverUltimate.app\" \"$TMPDIR/DBeaverUltimate.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverUltimate.app\" \"$APPDIR\"\n",
|
||||
"0a44a77f": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.dbeaver.product.ultimate'\nif [ -d \"$APPDIR/DBeaverUltimate.app\" ]; then\n\tsudo mv \"$APPDIR/DBeaverUltimate.app\" \"$TMPDIR/DBeaverUltimate.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DBeaverUltimate.app\" \"$APPDIR\"\n",
|
||||
"94cf328c": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nsend_signal() {\n local signal=\"$1\"\n local bundle_id=\"$2\"\n local logged_in_user=\"$3\"\n local logged_in_uid pids\n\n if [ -z \"$signal\" ] || [ -z \"$bundle_id\" ] || [ -z \"$logged_in_user\" ]; then\n echo \"Usage: uninstall_signal <signal> <bundle_id> <logged_in_user>\"\n return 1\n fi\n\n logged_in_uid=$(id -u \"$logged_in_user\")\n if [ -z \"$logged_in_uid\" ]; then\n echo \"Could not find UID for user '$logged_in_user'.\"\n return 1\n fi\n\n echo \"Signalling '$signal' to application ID '$bundle_id' for user '$logged_in_user'\"\n\n pids=$(/bin/launchctl asuser \"$logged_in_uid\" sudo -iu \"$logged_in_user\" /bin/launchctl list | awk -v bundle_id=\"$bundle_id\" '\n $3 ~ bundle_id { print $1 }')\n\n if [ -z \"$pids\" ]; then\n echo \"No processes found for bundle ID '$bundle_id'.\"\n return 0\n fi\n\n echo \"Unix PIDs are $pids for processes with bundle identifier $bundle_id\"\n for pid in $pids; do\n if kill -s \"$signal\" \"$pid\" 2>/dev/null; then\n echo \"Successfully signaled PID $pid with signal $signal.\"\n else\n echo \"Failed to kill PID $pid with signal $signal. Check permissions.\"\n fi\n done\n\n sleep 3\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsend_signal 'TERM' 'com.dbeaver.product.ultimate' \"$LOGGED_IN_USER\"\nsudo rm -rf \"$APPDIR/DBeaverUltimate.app\"\ntrash $LOGGED_IN_USER '~/Library/DBeaverData'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.dbeaver.product.ultimate.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.dbeaver.product.ultimate.savedState'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -6,8 +6,8 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.evernote.Evernote';"
|
||||
},
|
||||
"installer_url": "https://mac.desktop.evernote.com/builds/Evernote-latest.dmg",
|
||||
"install_script_ref": "c4c66da7",
|
||||
"uninstall_script_ref": "7be36873",
|
||||
"install_script_ref": "a83831d7",
|
||||
"uninstall_script_ref": "31b95715",
|
||||
"sha256": "no_check",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"7be36873": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.evernote.Evernote'\nquit_application 'com.evernote.EvernoteHelper'\nsudo rm -rf \"$APPDIR/Evernote.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Caches/evernote-client-updater'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.evernote.Evernote'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.evernote.EvernoteHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Evernote'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.evernote.Evernote'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.evernote.Evernote.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/Evernote'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.evernote.Evernote.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.evernote.EvernoteHelper.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.evernote.Evernote.savedState'\n",
|
||||
"c4c66da7": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n\n# copy to the applications folder\nquit_application 'com.evernote.Evernote'\nif [ -d \"$APPDIR/Evernote.app\" ]; then\n\tsudo mv \"$APPDIR/Evernote.app\" \"$TMPDIR/Evernote.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Evernote.app\" \"$APPDIR\"\n\n"
|
||||
"31b95715": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.evernote.Evernote'\nquit_application 'com.evernote.EvernoteHelper'\nsudo rm -rf \"$APPDIR/Evernote.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Caches/evernote-client-updater'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.evernote.Evernote'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.evernote.EvernoteHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Evernote'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.evernote.Evernote'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.evernote.Evernote.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/Evernote'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.evernote.Evernote.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.evernote.EvernoteHelper.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.evernote.Evernote.savedState'\n",
|
||||
"a83831d7": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n\n# copy to the applications folder\nquit_application 'com.evernote.Evernote'\nif [ -d \"$APPDIR/Evernote.app\" ]; then\n\tsudo mv \"$APPDIR/Evernote.app\" \"$TMPDIR/Evernote.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Evernote.app\" \"$APPDIR\"\n\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.expressvpn.ExpressVPN' AND version_compare(bundle_short_version, '14.1.0.13058') < 0);"
|
||||
},
|
||||
"installer_url": "https://www.expressvpn.works/clients/mac/expressvpn-macos-universal-14.1.0.13058_release.zip",
|
||||
"install_script_ref": "ebbdc77b",
|
||||
"install_script_ref": "c5afbbfa",
|
||||
"uninstall_script_ref": "185b88d3",
|
||||
"sha256": "4395df575fd2282c345a436dbd11aa8399567768ad8d562de92f440d38c0f7e1",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"185b88d3": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nremove_launchctl_service 'com.express.vpn.client'\nremove_launchctl_service 'com.express.vpn.daemon'\nremove_launchctl_service 'com.express.vpn.installhelper'\nquit_application 'com.express.vpn'\nsudo rm -rf '/Applications/ExpressVPN.app'\ntrash $LOGGED_IN_USER '/Library/Application Support/com.express.vpn'\ntrash $LOGGED_IN_USER '/Library/Preferences/com.express.vpn'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.express.vpn'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.express.vpn'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.express.vpn'\n",
|
||||
"ebbdc77b": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(mktemp -d)\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n\n# discover the installer app by finding any .app that contains an installer executable\nINSTALLER_APP=\"\"\nfor app in \"$TMPDIR\"/*.app; do\n if [ -d \"$app\" ] && [ -d \"$app/Contents/MacOS\" ]; then\n INSTALLER_APP=\"$app\"\n break\n fi\ndone\n\nif [ -z \"$INSTALLER_APP\" ] || [ ! -d \"$INSTALLER_APP\" ]; then\n echo \"Error: Installer app not found in $TMPDIR\"\n exit 1\nfi\n\nquit_application 'com.expressvpn.ExpressVPN'\n\n# Remove quarantine attributes so Gatekeeper won't block binaries during install\nsudo xattr -r -d com.apple.quarantine \"$INSTALLER_APP\" 2>/dev/null || true\n\n# Run the bundled installer script which handles copying to /Applications,\n# setting permissions, creating groups, installing the LaunchDaemon, and\n# starting the daemon\nINSTALLER_SCRIPT=\"$INSTALLER_APP/Contents/Resources/vpn-installer.sh\"\nif [ ! -f \"$INSTALLER_SCRIPT\" ]; then\n echo \"Error: vpn-installer.sh not found in $INSTALLER_APP/Contents/Resources\"\n exit 1\nfi\n\nchmod +x \"$INSTALLER_SCRIPT\"\nsudo bash \"$INSTALLER_SCRIPT\"\nEXIT_CODE=$?\n\nif [ $EXIT_CODE -ne 0 ]; then\n echo \"Error: Installer exited with code $EXIT_CODE\"\n exit $EXIT_CODE\nfi\n\n"
|
||||
"c5afbbfa": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(mktemp -d)\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n\n# discover the installer app by finding any .app that contains an installer executable\nINSTALLER_APP=\"\"\nfor app in \"$TMPDIR\"/*.app; do\n if [ -d \"$app\" ] && [ -d \"$app/Contents/MacOS\" ]; then\n INSTALLER_APP=\"$app\"\n break\n fi\ndone\n\nif [ -z \"$INSTALLER_APP\" ] || [ ! -d \"$INSTALLER_APP\" ]; then\n echo \"Error: Installer app not found in $TMPDIR\"\n exit 1\nfi\n\nquit_application 'com.expressvpn.ExpressVPN'\n\n# Remove quarantine attributes so Gatekeeper won't block binaries during install\nsudo xattr -r -d com.apple.quarantine \"$INSTALLER_APP\" 2>/dev/null || true\n\n# Run the bundled installer script which handles copying to /Applications,\n# setting permissions, creating groups, installing the LaunchDaemon, and\n# starting the daemon\nINSTALLER_SCRIPT=\"$INSTALLER_APP/Contents/Resources/vpn-installer.sh\"\nif [ ! -f \"$INSTALLER_SCRIPT\" ]; then\n echo \"Error: vpn-installer.sh not found in $INSTALLER_APP/Contents/Resources\"\n exit 1\nfi\n\nchmod +x \"$INSTALLER_SCRIPT\"\nsudo bash \"$INSTALLER_SCRIPT\"\nEXIT_CODE=$?\n\nif [ $EXIT_CODE -ne 0 ]; then\n echo \"Error: Installer exited with code $EXIT_CODE\"\n exit $EXIT_CODE\nfi\n\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.filemaker.client.pro12' AND version_compare(bundle_short_version, '22.0.5') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.claris.com/esd/fmp_22.0.5.500.dmg",
|
||||
"install_script_ref": "72d274ec",
|
||||
"uninstall_script_ref": "f4f1edf6",
|
||||
"install_script_ref": "387db5f0",
|
||||
"uninstall_script_ref": "ab29479d",
|
||||
"sha256": "414d11c60cc46f1a1b1fd3700340b01840d23aad019265e67f9d1cf5eeb1e102",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"72d274ec": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.filemaker.client.pro12'\nif [ -d \"$APPDIR/FileMaker Pro.app\" ]; then\n\tsudo mv \"$APPDIR/FileMaker Pro.app\" \"$TMPDIR/FileMaker Pro.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/FileMaker Pro.app\" \"$APPDIR\"\nrelaunch_application 'com.filemaker.client.pro12'\n",
|
||||
"f4f1edf6": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/FileMaker Pro.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.filemaker.client.pro12'\ntrash $LOGGED_IN_USER '~/Library/Caches/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.filemaker.client.pro12'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.filemaker.client.pro12.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.filemaker.client.pro12.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.filemaker.client.pro12'\n"
|
||||
"387db5f0": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.filemaker.client.pro12'\nif [ -d \"$APPDIR/FileMaker Pro.app\" ]; then\n\tsudo mv \"$APPDIR/FileMaker Pro.app\" \"$TMPDIR/FileMaker Pro.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/FileMaker Pro.app\" \"$APPDIR\"\nrelaunch_application 'com.filemaker.client.pro12'\n",
|
||||
"ab29479d": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/FileMaker Pro.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.filemaker.client.pro12'\ntrash $LOGGED_IN_USER '~/Library/Caches/FileMaker'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.filemaker.client.pro12'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.filemaker.client.pro12.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.filemaker.client.pro12.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.filemaker.client.pro12'\n"
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.github.GitHubClient' AND version_compare(bundle_short_version, '3.5.8') < 0);"
|
||||
},
|
||||
"installer_url": "https://desktop.githubusercontent.com/releases/3.5.8-b1d863ab/GitHubDesktop-arm64.zip",
|
||||
"install_script_ref": "37511289",
|
||||
"install_script_ref": "98ab6ed8",
|
||||
"uninstall_script_ref": "ab6a6ca8",
|
||||
"sha256": "7b1278f06231ea4a429da5055ccef44347b4c06f6b5bde35d97bba898911fbda",
|
||||
"default_categories": [
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"37511289": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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\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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n# Extract with ditto and --noqtn so extracted files do NOT get quarantine.\nditto -xk --noqtn \"$INSTALLER_PATH\" \"$TMPDIR\"\n\n# copy to the applications folder (do not modify the app bundle after extraction)\nquit_and_track_application 'com.github.GitHubClient'\nif [ -d \"$APPDIR/GitHub Desktop.app\" ]; then\n sudo mv \"$APPDIR/GitHub Desktop.app\" \"$TMPDIR/GitHub Desktop.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/GitHub Desktop.app\" \"$APPDIR\"\n\nrelaunch_application 'com.github.GitHubClient'\n\nmkdir -p .\n/bin/ln -h -f -s -- \"$APPDIR/GitHub Desktop.app/Contents/Resources/app/static/github.sh\" \"github\"\n",
|
||||
"98ab6ed8": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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\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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n# Extract with ditto and --noqtn so extracted files do NOT get quarantine.\nditto -xk --noqtn \"$INSTALLER_PATH\" \"$TMPDIR\"\n\n# copy to the applications folder (do not modify the app bundle after extraction)\nquit_and_track_application 'com.github.GitHubClient'\nif [ -d \"$APPDIR/GitHub Desktop.app\" ]; then\n sudo mv \"$APPDIR/GitHub Desktop.app\" \"$TMPDIR/GitHub Desktop.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/GitHub Desktop.app\" \"$APPDIR\"\n\nrelaunch_application 'com.github.GitHubClient'\n\nmkdir -p .\n/bin/ln -h -f -s -- \"$APPDIR/GitHub Desktop.app/Contents/Resources/app/static/github.sh\" \"github\"\n",
|
||||
"ab6a6ca8": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/GitHub Desktop.app\"\nsudo rm -rf 'github'\nsudo rmdir '~/.config/git'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.github.GitHubClient.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.github.GitHubClient'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.github.GitHubClient.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/Application Support/GitHub Desktop'\ntrash $LOGGED_IN_USER '~/Library/Application Support/ShipIt_stderr.log'\ntrash $LOGGED_IN_USER '~/Library/Application Support/ShipIt_stdout.log'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.github.GitHubClient'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.github.GitHubClient.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.github.GitHubClient'\ntrash $LOGGED_IN_USER '~/Library/Logs/GitHub Desktop'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/com.github.GitHubClient.ShipIt.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.github.GitHubClient.helper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.github.GitHubClient.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.github.GitHubClient.savedState'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.Chrome' AND version_compare(bundle_short_version, '148.0.7778.97') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.google.com/dl/chrome/mac/universal/stable/gcem/GoogleChrome.pkg",
|
||||
"install_script_ref": "0eca52a6",
|
||||
"install_script_ref": "6981ff84",
|
||||
"uninstall_script_ref": "dcd249c9",
|
||||
"sha256": "no_check",
|
||||
"default_categories": [
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"0eca52a6": "#!/bin/sh\n\nquit_application() {\n local bundle_id=\"$1\"\n local console_user=\"$2\"\n local timeout_duration=10\n\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nrestart_chrome() {\n local console_user=\"$1\"\n \n if [[ -n \"$console_user\" && \"$console_user\" != \"root\" ]]; then\n echo \"Restarting Chrome for user: $console_user\"\n sudo -u \"$console_user\" open -a \"Google Chrome\" --args --restore-last-session\n else\n echo \"No console user found, attempting direct Chrome start...\"\n open -a \"Google Chrome\" --args --restore-last-session\n fi\n}\n\n# Get console user once (used by both quit and restart)\nCONSOLE_USER=$(stat -f \"%Su\" /dev/console 2>/dev/null || echo \"\")\n\n# Check if Chrome is running (only check once)\nCHROME_WAS_RUNNING=false\nif osascript -e \"application id \\\"com.google.Chrome\\\" is running\" 2>/dev/null; then\n CHROME_WAS_RUNNING=true\n quit_application 'com.google.Chrome' \"$CONSOLE_USER\"\nfi\n\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n# Restart Chrome if it was running before installation\nif [[ \"$CHROME_WAS_RUNNING\" == \"true\" ]]; then\n sleep 2\n restart_chrome \"$CONSOLE_USER\" || true\nfi",
|
||||
"6981ff84": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local console_user=\"$2\"\n local timeout_duration=10\n\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nrestart_chrome() {\n local console_user=\"$1\"\n \n if [[ -n \"$console_user\" && \"$console_user\" != \"root\" ]]; then\n echo \"Restarting Chrome for user: $console_user\"\n sudo -u \"$console_user\" open -a \"Google Chrome\" --args --restore-last-session\n else\n echo \"No console user found, attempting direct Chrome start...\"\n open -a \"Google Chrome\" --args --restore-last-session\n fi\n}\n\n# Get console user once (used by both quit and restart)\nCONSOLE_USER=$(stat -f \"%Su\" /dev/console 2>/dev/null || echo \"\")\n\n# Check if Chrome is running (only check once)\nCHROME_WAS_RUNNING=false\nif osascript -e \"application id \\\"com.google.Chrome\\\" is running\" 2>/dev/null; then\n CHROME_WAS_RUNNING=true\n quit_application 'com.google.Chrome' \"$CONSOLE_USER\"\nfi\n\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n# Restart Chrome if it was running before installation\nif [[ \"$CHROME_WAS_RUNNING\" == \"true\" ]]; then\n sleep 2\n restart_chrome \"$CONSOLE_USER\" || true\nfi",
|
||||
"dcd249c9": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Google Chrome.app\"\nremove_launchctl_service 'com.google.keystone.agent'\nremove_launchctl_service 'com.google.keystone.daemon'\nsudo rmdir '/Library/Google'\nsudo rmdir '~/Library/Application Support/Google'\nsudo rmdir '~/Library/Caches/Google'\nsudo rmdir '~/Library/Google'\ntrash $LOGGED_IN_USER '/Library/Caches/com.google.SoftwareUpdate.*'\ntrash $LOGGED_IN_USER '/Library/Google/Google Chrome Brand.plist'\ntrash $LOGGED_IN_USER '/Library/Google/GoogleSoftwareUpdate'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.google.chrome.app.*.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.google.chrome.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Google/Chrome'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.google.Chrome'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.google.Chrome.helper.*'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.google.Keystone'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.google.Keystone.Agent'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.google.SoftwareUpdate'\ntrash $LOGGED_IN_USER '~/Library/Caches/Google/Chrome'\ntrash $LOGGED_IN_USER '~/Library/Google/Google Chrome Brand.plist'\ntrash $LOGGED_IN_USER '~/Library/Google/GoogleSoftwareUpdate'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.google.keystone.agent.plist'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.google.keystone.xpcservice.plist'\ntrash $LOGGED_IN_USER '~/Library/Logs/GoogleSoftwareUpdateAgent.log'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.google.Chrome.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.google.Keystone.Agent.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.google.Chrome.app.*.savedState'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.google.Chrome.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.google.Chrome'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama' AND version_compare(bundle_short_version, '1.164.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://download-mac.grammarly.com/versions/1.164.0.0/Grammarly.dmg",
|
||||
"install_script_ref": "2787b849",
|
||||
"install_script_ref": "20d5bd8f",
|
||||
"uninstall_script_ref": "162661bf",
|
||||
"sha256": "1576b13666c9194134a768cbb1ea7005e1f4e2f4658842cbb2b341fc56d491c4",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"162661bf": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Grammarly Desktop.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.grammarly.ProjectLlama'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.grammarly.ProjectLlama'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.grammarly.GRLlamaOnboarding.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.grammarly.ProjectLlama'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.grammarly.ProjectLlama.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.grammarly.ProjectLlama.Shepherd.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.grammarly.ProjectLlama.plist'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.grammarly.GRLlamaOnboarding'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.grammarly.ProjectLlama'\n",
|
||||
"2787b849": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n\n# copy to the applications folder\n# Homebrew uses: app \"Grammarly Installer.app\", target: \"Grammarly Desktop.app\"\n# This means we extract \"Grammarly Installer.app\" and copy it to \"/Applications/Grammarly Desktop.app\"\nquit_application 'com.grammarly.ProjectLlama'\n\n# Remove existing app if present\nif [ -d \"$APPDIR/Grammarly Desktop.app\" ]; then\n\tsudo rm -rf \"$APPDIR/Grammarly Desktop.app\"\nfi\n\n# Copy Grammarly Installer.app from temp directory to Applications as Grammarly Desktop.app\nif [ -d \"$TMPDIR/Grammarly Installer.app\" ]; then\n\tsudo cp -R \"$TMPDIR/Grammarly Installer.app\" \"$APPDIR/Grammarly Desktop.app\"\n\techo \"Installation verified\"\nelse\n\techo \"Error: Grammarly Installer.app not found in extracted files\"\n\texit 1\nfi\n\n"
|
||||
"20d5bd8f": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n\n# copy to the applications folder\n# Homebrew uses: app \"Grammarly Installer.app\", target: \"Grammarly Desktop.app\"\n# This means we extract \"Grammarly Installer.app\" and copy it to \"/Applications/Grammarly Desktop.app\"\nquit_application 'com.grammarly.ProjectLlama'\n\n# Remove existing app if present\nif [ -d \"$APPDIR/Grammarly Desktop.app\" ]; then\n\tsudo rm -rf \"$APPDIR/Grammarly Desktop.app\"\nfi\n\n# Copy Grammarly Installer.app from temp directory to Applications as Grammarly Desktop.app\nif [ -d \"$TMPDIR/Grammarly Installer.app\" ]; then\n\tsudo cp -R \"$TMPDIR/Grammarly Installer.app\" \"$APPDIR/Grammarly Desktop.app\"\n\techo \"Installation verified\"\nelse\n\techo \"Error: Grammarly Installer.app not found in extracted files\"\n\texit 1\nfi\n\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager';"
|
||||
},
|
||||
"installer_url": "https://keepersecurity.com/desktop_electron/Darwin/KeeperSetup.dmg",
|
||||
"install_script_ref": "b8bbdf14",
|
||||
"uninstall_script_ref": "12611891",
|
||||
"install_script_ref": "451e3989",
|
||||
"uninstall_script_ref": "21a57d3e",
|
||||
"sha256": "no_check",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"12611891": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Keeper Password Manager.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.keepersecurity.passwordmanager.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Keeper Password Manager'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.keepersecurity.passwordmanager.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.keepersecurity.passwordmanager.savedState'\n",
|
||||
"b8bbdf14": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.keepersecurity.passwordmanager'\nif [ -d \"$APPDIR/Keeper Password Manager.app\" ]; then\n\tsudo mv \"$APPDIR/Keeper Password Manager.app\" \"$TMPDIR/Keeper Password Manager.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Keeper Password Manager.app\" \"$APPDIR\"\nrelaunch_application 'com.keepersecurity.passwordmanager'\n"
|
||||
"21a57d3e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Keeper Password Manager.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.keepersecurity.passwordmanager.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Keeper Password Manager'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.keepersecurity.passwordmanager.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.keepersecurity.passwordmanager.savedState'\n",
|
||||
"451e3989": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.keepersecurity.passwordmanager'\nif [ -d \"$APPDIR/Keeper Password Manager.app\" ]; then\n\tsudo mv \"$APPDIR/Keeper Password Manager.app\" \"$TMPDIR/Keeper Password Manager.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Keeper Password Manager.app\" \"$APPDIR\"\nrelaunch_application 'com.keepersecurity.passwordmanager'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.edgemac' AND version_compare(bundle_short_version, '147.0.3912.98') < 0);"
|
||||
},
|
||||
"installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/3c7e1edd-f94e-4d94-8a36-e1d06fef510c/MicrosoftEdge-147.0.3912.98.dmg",
|
||||
"install_script_ref": "a4fedc24",
|
||||
"install_script_ref": "caf6f785",
|
||||
"uninstall_script_ref": "81159c4c",
|
||||
"sha256": "885170fa7a5afb7c966a18be3759455bb5fe745b83d8747b7e80e54e598a461f",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"81159c4c": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nremove_launchctl_service 'com.microsoft.EdgeUpdater.wake'\nsudo rm -rf \"$APPDIR/Microsoft Edge.app\"\nsudo rmdir '~/Library/Application Support/Microsoft'\nsudo rmdir '~/Library/Microsoft'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.edgemac.wdgExtension'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft Edge'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft/EdgeUpdater'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.edgemac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.EdgeUpdater'\ntrash $LOGGED_IN_USER '~/Library/Caches/Microsoft Edge'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.edgemac.wdgExtension'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.microsoft.edgemac'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.microsoft.EdgeUpdater'\ntrash $LOGGED_IN_USER '~/Library/LaunchAgents/com.microsoft.EdgeUpdater.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Microsoft/MicrosoftSoftwareUpdate/Actives/com.microsoft.edgemac'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.edgemac.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.microsoft.edgemac.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.microsoft.edgemac'\n",
|
||||
"a4fedc24": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n\n# Clean up any backup files that might exist from previous failed installations\n# This ensures we start with a clean slate\ncleanup_backup_files() {\n # Clean up backup in the installer's temp directory\n if [ -d \"$TMPDIR/Microsoft Edge.app.bkp\" ]; then\n echo \"Removing existing backup file: $TMPDIR/Microsoft Edge.app.bkp\"\n sudo rm -rf \"$TMPDIR/Microsoft Edge.app.bkp\" 2>/dev/null || true\n fi\n\n # Search for backup files in all common temp locations\n # Use -exec to avoid pipe subshell issues\n for search_base in /tmp /var/folders /private/var/folders; do\n if [ -d \"$search_base\" ]; then\n find \"$search_base\" -type d -name \"Microsoft Edge.app.bkp\" -exec sudo rm -rf {} + 2>/dev/null || true\n fi\n done\n}\n\n# copy to the applications folder\nquit_application 'com.microsoft.edgemac'\n\n# Clean up any existing backup files before creating a new one\ncleanup_backup_files\n\n# Remove existing app if present (like Homebrew does)\nif [ -d \"$APPDIR/Microsoft Edge.app\" ]; then\n\tsudo rm -rf \"$APPDIR/Microsoft Edge.app\"\nfi\n\n# Install the new app\nsudo cp -R \"$TMPDIR/Microsoft Edge.app\" \"$APPDIR\"\n\n# Verify installation and do final cleanup\nif [ -d \"$APPDIR/Microsoft Edge.app\" ]; then\n\t# Installation successful - ensure no backup files remain\n\tcleanup_backup_files\n\techo \"Installation verified\"\nelse\n\techo \"Installation failed\"\n\texit 1\nfi\n\n\n"
|
||||
"caf6f785": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n\n# Clean up any backup files that might exist from previous failed installations\n# This ensures we start with a clean slate\ncleanup_backup_files() {\n # Clean up backup in the installer's temp directory\n if [ -d \"$TMPDIR/Microsoft Edge.app.bkp\" ]; then\n echo \"Removing existing backup file: $TMPDIR/Microsoft Edge.app.bkp\"\n sudo rm -rf \"$TMPDIR/Microsoft Edge.app.bkp\" 2>/dev/null || true\n fi\n\n # Search for backup files in all common temp locations\n # Use -exec to avoid pipe subshell issues\n for search_base in /tmp /var/folders /private/var/folders; do\n if [ -d \"$search_base\" ]; then\n find \"$search_base\" -type d -name \"Microsoft Edge.app.bkp\" -exec sudo rm -rf {} + 2>/dev/null || true\n fi\n done\n}\n\n# copy to the applications folder\nquit_application 'com.microsoft.edgemac'\n\n# Clean up any existing backup files before creating a new one\ncleanup_backup_files\n\n# Remove existing app if present (like Homebrew does)\nif [ -d \"$APPDIR/Microsoft Edge.app\" ]; then\n\tsudo rm -rf \"$APPDIR/Microsoft Edge.app\"\nfi\n\n# Install the new app\nsudo cp -R \"$TMPDIR/Microsoft Edge.app\" \"$APPDIR\"\n\n# Verify installation and do final cleanup\nif [ -d \"$APPDIR/Microsoft Edge.app\" ]; then\n\t# Installation successful - ensure no backup files remain\n\tcleanup_backup_files\n\techo \"Installation verified\"\nelse\n\techo \"Installation failed\"\n\texit 1\nfi\n\n\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.omnigroup.OmniGraffle7' AND version_compare(bundle_short_version, '7.25.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.omnigroup.com/software/macOS/12/OmniGraffle-7.25.2.dmg",
|
||||
"install_script_ref": "ef22700e",
|
||||
"install_script_ref": "d2d63787",
|
||||
"uninstall_script_ref": "81081b86",
|
||||
"sha256": "9dc0895b1c3b7abf51c25c2ac8ad1aff0ab8c8a036d979ad23d9b8a21a97eb97",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"81081b86": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/OmniGraffle.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.omnigroup.OmniGraffle7'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CloudDocs/session/containers/iCloud.com.omnigroup.OmniGraffle'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CloudDocs/session/containers/iCloud.com.omnigroup.OmniGraffle.plist'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.omnigroup.omnigraffle7.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.omnigroup.OmniGraffle7'\ntrash $LOGGED_IN_USER '~/Library/Mobile Documents/iCloud~com~omnigroup~OmniGraffle'\n",
|
||||
"ef22700e": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n\n# copy to the applications folder\nquit_application 'com.omnigroup.OmniGraffle7'\nif [ -d \"$APPDIR/OmniGraffle.app\" ]; then\n\tsudo mv \"$APPDIR/OmniGraffle.app\" \"$TMPDIR/OmniGraffle.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/OmniGraffle.app\" \"$APPDIR\"\n\n"
|
||||
"d2d63787": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n\n# copy to the applications folder\nquit_application 'com.omnigroup.OmniGraffle7'\nif [ -d \"$APPDIR/OmniGraffle.app\" ]; then\n\tsudo mv \"$APPDIR/OmniGraffle.app\" \"$TMPDIR/OmniGraffle.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/OmniGraffle.app\" \"$APPDIR\"\n\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.perforce.p4v' AND version_compare(bundle_short_version, '2026.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://filehost.perforce.com/perforce/r26.1/bin.macosx12u/P4V.dmg",
|
||||
"install_script_ref": "804d7fe0",
|
||||
"uninstall_script_ref": "6f04fef2",
|
||||
"install_script_ref": "bbe80cf5",
|
||||
"uninstall_script_ref": "428bb3f6",
|
||||
"sha256": "b4ce469dcbdb3dbdc63b40f9c0510ea996e45ac000b5b1908d5502ab952937e5",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"6f04fef2": "#!/bin/sh\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n local console_user; console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then return; fi\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then break; fi\n sleep 1\n done\n}\n\nfor id in \"com.perforce.p4v\" \"com.perforce.p4merge\" \"com.perforce.p4admin\"; do\n quit_application \"$id\"\ndone\n\nrm -rf \"/Applications/p4v.app\" \"/Applications/p4merge.app\" \"/Applications/p4admin.app\" >/dev/null 2>&1 || true\n\n# Remove p4vc command line binary\nrm -f /usr/local/bin/p4vc >/dev/null 2>&1 || true\n\nfor udir in /Users/* /var/root; do\n [[ -d \"$udir/Library\" ]] || continue\n rm -f \"$udir/Library/Preferences/com.perforce.p4v.plist\" \\\n \"$udir/Library/Preferences/com.perforce.p4merge.plist\" \\\n \"$udir/Library/Preferences/com.perforce.p4admin.plist\" >/dev/null 2>&1 || true\n rm -rf \"$udir/Library/Caches/com.perforce.p4v\" \\\n \"$udir/Library/Caches/com.perforce.p4merge\" \\\n \"$udir/Library/Caches/com.perforce.p4admin\" >/dev/null 2>&1 || true\n rm -rf \"$udir/Library/Application Support/Perforce\" \\\n \"$udir/Library/Application Support/P4V\" >/dev/null 2>&1 || true\ndone\n\necho \"p4v suite uninstalled\"\n",
|
||||
"804d7fe0": "#!/bin/sh\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n local console_user; console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then echo \"Skipping quit for '$bundle_id'.\"; return; fi\n echo \"Quitting '$bundle_id'...\"\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then echo \"'$bundle_id' quit successfully.\"; return; fi\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[[ -n \"$INSTALLER_PATH\" && -f \"$INSTALLER_PATH\" ]] || { echo \"missing installer\"; exit 1; }\n\nAPPDIR=\"/Applications\"\n\nquit_application \"com.perforce.p4v\"\nquit_application \"com.perforce.p4merge\"\nquit_application \"com.perforce.p4admin\"\n\nMOUNT_POINT=\"$(hdiutil attach -nobrowse -readonly \"$INSTALLER_PATH\" | awk '/\\/Volumes\\//{print $3; exit}')\"\n[[ -n \"$MOUNT_POINT\" ]] || { echo \"failed to mount dmg\"; exit 1; }\n\nfor app in p4v.app p4merge.app p4admin.app; do\n if [[ -d \"$MOUNT_POINT/$app\" ]]; then\n rm -rf \"$APPDIR/$app\" >/dev/null 2>&1 || true\n ditto \"$MOUNT_POINT/$app\" \"$APPDIR/$app\" >/dev/null 2>&1\n fi\ndone\n\n# Install p4vc command line binary to /usr/local/bin\nif [[ -f \"$MOUNT_POINT/p4vc\" ]]; then\n cp \"$MOUNT_POINT/p4vc\" /usr/local/bin/p4vc\n chmod +x /usr/local/bin/p4vc\n chown root:wheel /usr/local/bin/p4vc\nfi\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"p4v installed\"\n"
|
||||
"428bb3f6": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n local console_user; console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then return; fi\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then break; fi\n sleep 1\n done\n}\n\nfor id in \"com.perforce.p4v\" \"com.perforce.p4merge\" \"com.perforce.p4admin\"; do\n quit_application \"$id\"\ndone\n\nrm -rf \"/Applications/p4v.app\" \"/Applications/p4merge.app\" \"/Applications/p4admin.app\" >/dev/null 2>&1 || true\n\n# Remove p4vc command line binary\nrm -f /usr/local/bin/p4vc >/dev/null 2>&1 || true\n\nfor udir in /Users/* /var/root; do\n [[ -d \"$udir/Library\" ]] || continue\n rm -f \"$udir/Library/Preferences/com.perforce.p4v.plist\" \\\n \"$udir/Library/Preferences/com.perforce.p4merge.plist\" \\\n \"$udir/Library/Preferences/com.perforce.p4admin.plist\" >/dev/null 2>&1 || true\n rm -rf \"$udir/Library/Caches/com.perforce.p4v\" \\\n \"$udir/Library/Caches/com.perforce.p4merge\" \\\n \"$udir/Library/Caches/com.perforce.p4admin\" >/dev/null 2>&1 || true\n rm -rf \"$udir/Library/Application Support/Perforce\" \\\n \"$udir/Library/Application Support/P4V\" >/dev/null 2>&1 || true\ndone\n\necho \"p4v suite uninstalled\"\n",
|
||||
"bbe80cf5": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" >/dev/null 2>&1; then return; fi\n local console_user; console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then echo \"Skipping quit for '$bundle_id'.\"; return; fi\n echo \"Quitting '$bundle_id'...\"\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1 || true\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then echo \"'$bundle_id' quit successfully.\"; return; fi\n sleep 1\n done\n echo \"'$bundle_id' did not quit.\"\n}\n\n[[ -n \"$INSTALLER_PATH\" && -f \"$INSTALLER_PATH\" ]] || { echo \"missing installer\"; exit 1; }\n\nAPPDIR=\"/Applications\"\n\nquit_application \"com.perforce.p4v\"\nquit_application \"com.perforce.p4merge\"\nquit_application \"com.perforce.p4admin\"\n\nMOUNT_POINT=\"$(hdiutil attach -nobrowse -readonly \"$INSTALLER_PATH\" | awk '/\\/Volumes\\//{print $3; exit}')\"\n[[ -n \"$MOUNT_POINT\" ]] || { echo \"failed to mount dmg\"; exit 1; }\n\nfor app in p4v.app p4merge.app p4admin.app; do\n if [[ -d \"$MOUNT_POINT/$app\" ]]; then\n rm -rf \"$APPDIR/$app\" >/dev/null 2>&1 || true\n ditto \"$MOUNT_POINT/$app\" \"$APPDIR/$app\" >/dev/null 2>&1\n fi\ndone\n\n# Install p4vc command line binary to /usr/local/bin\nif [[ -f \"$MOUNT_POINT/p4vc\" ]]; then\n cp \"$MOUNT_POINT/p4vc\" /usr/local/bin/p4vc\n chmod +x /usr/local/bin/p4vc\n chown root:wheel /usr/local/bin/p4vc\nfi\n\nhdiutil detach \"$MOUNT_POINT\" >/dev/null 2>&1 || true\n\necho \"p4v installed\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.quip.Desktop';"
|
||||
},
|
||||
"installer_url": "https://quip-clients.com/macosx_9.32.7.dmg",
|
||||
"install_script_ref": "f98672c5",
|
||||
"uninstall_script_ref": "dd5d6524",
|
||||
"install_script_ref": "c9758472",
|
||||
"uninstall_script_ref": "0c770e6a",
|
||||
"sha256": "6ced18c92925f75a8cc32f17d83d9d444956105dac582377eda75bf17452e843",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"dd5d6524": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Quip.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.quip.Desktop.Quick-Look-Preview'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.quip.Desktop'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.quip.Desktop'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.quip.Desktop.Quick-Look-Preview'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.quip.Desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.quip.Desktop'\n",
|
||||
"f98672c5": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.quip.Desktop'\nif [ -d \"$APPDIR/Quip.app\" ]; then\n\tsudo mv \"$APPDIR/Quip.app\" \"$TMPDIR/Quip.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Quip.app\" \"$APPDIR\"\nrelaunch_application 'com.quip.Desktop'\n"
|
||||
"0c770e6a": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Quip.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.quip.Desktop.Quick-Look-Preview'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.quip.Desktop'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.quip.Desktop'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.quip.Desktop.Quick-Look-Preview'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.quip.Desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.quip.Desktop'\n",
|
||||
"c9758472": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_and_track_application 'com.quip.Desktop'\nif [ -d \"$APPDIR/Quip.app\" ]; then\n\tsudo mv \"$APPDIR/Quip.app\" \"$TMPDIR/Quip.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Quip.app\" \"$APPDIR\"\nrelaunch_application 'com.quip.Desktop'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.lemonmojo.RoyalTSX.App' AND version_compare(bundle_short_version, '6.4.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://royaltsx-v6.royalapps.com/updates/royaltsx_6.4.2.1000.dmg",
|
||||
"install_script_ref": "dde89f92",
|
||||
"install_script_ref": "8a40c4cb",
|
||||
"uninstall_script_ref": "56f7cc97",
|
||||
"sha256": "ebb86257e41684f35f8cb2d2d8d779920ae379073e004b1281740a5c465f276b",
|
||||
"default_categories": [
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"56f7cc97": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Royal TSX.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.lemonmojo.RoyalTSX.App'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Royal TSX'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.lemonmojo.RoyalTSX.App'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.lemonmojo.RoyalTSX.App.plist'\n",
|
||||
"dde89f92": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.lemonmojo.RoyalTSX.App'\nif [ -d \"$APPDIR/Royal TSX.app\" ]; then\n\tsudo mv \"$APPDIR/Royal TSX.app\" \"$TMPDIR/Royal TSX.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Royal TSX.app\" \"$APPDIR\"\n"
|
||||
"8a40c4cb": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n# extract contents\n# Use 'yes' to automatically accept license agreement when mounting DMG\n# This replicates Homebrew's behavior for DMG files with license agreements\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\n# copy to the applications folder\nquit_application 'com.lemonmojo.RoyalTSX.App'\nif [ -d \"$APPDIR/Royal TSX.app\" ]; then\n\tsudo mv \"$APPDIR/Royal TSX.app\" \"$TMPDIR/Royal TSX.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Royal TSX.app\" \"$APPDIR\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyspeck.slackmacgap' AND version_compare(bundle_short_version, '4.49.89') < 0);"
|
||||
},
|
||||
"installer_url": "https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal",
|
||||
"install_script_ref": "17356f4e",
|
||||
"install_script_ref": "6025885d",
|
||||
"uninstall_script_ref": "cacd5357",
|
||||
"sha256": "no_check",
|
||||
"default_categories": [
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"17356f4e": "#!/bin/sh\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.tinyspeck.slackmacgap'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n",
|
||||
"6025885d": "#!/bin/bash\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\nquit_application 'com.tinyspeck.slackmacgap'\ninstaller -pkg \"$INSTALLER_PATH\" -target /\n\n",
|
||||
"cacd5357": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.tinyspeck.slackmacgap'\nsudo rm -rf \"$APPDIR/Slack.app\"\ntrash $LOGGED_IN_USER '/Library/Logs/DiagnosticReports/Slack_*'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.tinyspeck.slackmacgap'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.tinyspeck.slackmacgap.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Slack'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.tinyspeck.slackmacgap*'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.tinyspeck.slackmacgap*'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.tinyspeck.slackmacgap.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.tinyspeck.slackmacgap'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.slack'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.tinyspeck.slackmacgap*'\ntrash $LOGGED_IN_USER '~/Library/Logs/Slack'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/com.tinyspeck.slackmacgap.ShipIt.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.tinyspeck.slackmacgap*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.tinyspeck.slackmacgap.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.tinyspeck.slackmacgap'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'ru.keepcoder.Telegram';"
|
||||
},
|
||||
"installer_url": "https://osx.telegram.org/updates/Telegram-12.4.2.278481.app.zip",
|
||||
"install_script_ref": "60ca098a",
|
||||
"uninstall_script_ref": "a39fa3ea",
|
||||
"install_script_ref": "16c0d6bd",
|
||||
"uninstall_script_ref": "ab69ee4f",
|
||||
"sha256": "3ca9936341858e9b8b03862e80e6fdc96df93b2c7d6f817cd0ad67dc18fa4bb5",
|
||||
"default_categories": [
|
||||
"Communication"
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"60ca098a": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; 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\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'ru.keepcoder.Telegram'\nif [ -d \"$APPDIR/Telegram.app\" ]; then\n\tsudo mv \"$APPDIR/Telegram.app\" \"$TMPDIR/Telegram.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Telegram.app\" \"$APPDIR\"\nrelaunch_application 'ru.keepcoder.Telegram'\n",
|
||||
"a39fa3ea": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'ru.keepcoder.Telegram'\nsudo rm -rf \"$APPDIR/Telegram.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Application Support/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Caches/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Containers/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Containers/ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Cookies/ru.keepcoder.Telegram.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ru.keepcoder.Telegram.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/ru.keepcoder.Telegram.savedState'\n"
|
||||
"16c0d6bd": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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 # Try to launch the application\n if osascript -e \"tell application id \\\"$bundle_id\\\" to activate\" >/dev/null 2>&1; 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\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'ru.keepcoder.Telegram'\nif [ -d \"$APPDIR/Telegram.app\" ]; then\n\tsudo mv \"$APPDIR/Telegram.app\" \"$TMPDIR/Telegram.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Telegram.app\" \"$APPDIR\"\nrelaunch_application 'ru.keepcoder.Telegram'\n",
|
||||
"ab69ee4f": "#!/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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'ru.keepcoder.Telegram'\nsudo rm -rf \"$APPDIR/Telegram.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Application Support/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Caches/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Containers/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Containers/ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/Cookies/ru.keepcoder.Telegram.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.ru.keepcoder.Telegram.TelegramShare'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/ru.keepcoder.Telegram'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ru.keepcoder.Telegram.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/ru.keepcoder.Telegram.savedState'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"installer_url": "https://cdn.teleport.dev/teleport-18.7.6.pkg",
|
||||
"install_script_ref": "3ac40527",
|
||||
"uninstall_script_ref": "42474e69",
|
||||
"uninstall_script_ref": "343cb8f4",
|
||||
"sha256": "a7fe57ea1633d25a879126076845c1604ccf47e8982c062d8b172ee72ab5c2ad",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"3ac40527": "#!/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.gravitational.teleport.tsh'\nsudo installer -pkg \"$TMPDIR/teleport-18.7.6.pkg\" -target /\nrelaunch_application 'com.gravitational.teleport.tsh'\n",
|
||||
"42474e69": "#!/bin/sh\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 # Convert (.*) to .* for regex matching to handle patterns like (.*).com.example.app\n local regex_pattern=$(echo \"$prefix\" | sed 's/(\\.\\*)/.*/g')\n echo \"Expanding wildcard for PKGID: $PKGID (pattern: ^${regex_pattern})\"\n for receipt in $(pkgutil --pkgs | grep -E \"^${regex_pattern}\"); 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\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 '/<key>volume<\\/key>/ {getline; gsub(/.*<string>|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/<key>install-location<\\/key>/ {getline; gsub(/.*<string>|<\\/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|^|${FULL_INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n# Remove teleport-suite packages (handles wildcard patterns with (.*))\nremove_pkg_files '(.*).com.gravitational.teleport.tctl'\nforget_pkg '(.*).com.gravitational.teleport.tctl'\nremove_pkg_files '(.*).com.gravitational.teleport.tsh'\nforget_pkg '(.*).com.gravitational.teleport.tsh'\nremove_pkg_files 'com.gravitational.teleport'\nforget_pkg 'com.gravitational.teleport'\n\n# Explicitly remove apps from /Applications (in case pkgutil removal didn't catch them)\nsudo rm -rf '/Applications/tctl.app'\nsudo rm -rf '/Applications/tsh.app'\n\n# Remove binaries\nsudo rm -rf '/usr/local/bin/fdpass-teleport'\nsudo rm -rf '/usr/local/bin/tbot'\nsudo rm -rf '/usr/local/bin/tctl'\nsudo rm -rf '/usr/local/bin/teleport'\nsudo rm -rf '/usr/local/bin/tsh'\n\n# Remove user data\ntrash $LOGGED_IN_USER '~/.tsh'\n\n"
|
||||
"343cb8f4": "#!/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 # Convert (.*) to .* for regex matching to handle patterns like (.*).com.example.app\n local regex_pattern=$(echo \"$prefix\" | sed 's/(\\.\\*)/.*/g')\n echo \"Expanding wildcard for PKGID: $PKGID (pattern: ^${regex_pattern})\"\n for receipt in $(pkgutil --pkgs | grep -E \"^${regex_pattern}\"); 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\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 '/<key>volume<\\/key>/ {getline; gsub(/.*<string>|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/<key>install-location<\\/key>/ {getline; gsub(/.*<string>|<\\/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|^|${FULL_INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n# Remove teleport-suite packages (handles wildcard patterns with (.*))\nremove_pkg_files '(.*).com.gravitational.teleport.tctl'\nforget_pkg '(.*).com.gravitational.teleport.tctl'\nremove_pkg_files '(.*).com.gravitational.teleport.tsh'\nforget_pkg '(.*).com.gravitational.teleport.tsh'\nremove_pkg_files 'com.gravitational.teleport'\nforget_pkg 'com.gravitational.teleport'\n\n# Explicitly remove apps from /Applications (in case pkgutil removal didn't catch them)\nsudo rm -rf '/Applications/tctl.app'\nsudo rm -rf '/Applications/tsh.app'\n\n# Remove binaries\nsudo rm -rf '/usr/local/bin/fdpass-teleport'\nsudo rm -rf '/usr/local/bin/tbot'\nsudo rm -rf '/usr/local/bin/tctl'\nsudo rm -rf '/usr/local/bin/teleport'\nsudo rm -rf '/usr/local/bin/tsh'\n\n# Remove user data\ntrash $LOGGED_IN_USER '~/.tsh'\n\n",
|
||||
"3ac40527": "#!/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.gravitational.teleport.tsh'\nsudo installer -pkg \"$TMPDIR/teleport-18.7.6.pkg\" -target /\nrelaunch_application 'com.gravitational.teleport.tsh'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user