fleet/ee/maintained-apps/outputs/hyper/darwin.json
Allen Houchins a05d990417
Update macOS FMAs (F - I) (#37892)
This pull request updates the macOS install scripts for several
maintained applications to improve the user experience during upgrades.
The main enhancement is that the installer now tracks whether the
application was running before installation, attempts to quit it, and
then relaunches it after the installation if it was previously running.
2026-01-06 10:23:31 -06:00

21 lines
4.8 KiB
JSON

{
"versions": [
{
"version": "3.4.1",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'co.zeit.hyper';"
},
"installer_url": "https://github.com/vercel/hyper/releases/download/v3.4.1/Hyper-3.4.1-mac-arm64.zip",
"install_script_ref": "6d758042",
"uninstall_script_ref": "524382b3",
"sha256": "7d2440fdd93fde4101e603fe2de46732b54292a868ad17dbcb55288e6f8430a8",
"default_categories": [
"Productivity"
]
}
],
"refs": {
"524382b3": "#!/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/Hyper.app\"\ntrash $LOGGED_IN_USER '~/.hyper.js'\ntrash $LOGGED_IN_USER '~/.hyper_plugins'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/co.zeit.hyper.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Hyper'\ntrash $LOGGED_IN_USER '~/Library/Caches/co.zeit.hyper'\ntrash $LOGGED_IN_USER '~/Library/Caches/co.zeit.hyper.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/Cookies/co.zeit.hyper.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/Hyper'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/co.zeit.hyper.ShipIt.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/co.zeit.hyper.helper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/co.zeit.hyper.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/co.zeit.hyper.savedState'\n",
"6d758042": "#!/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 'co.zeit.hyper'\nif [ -d \"$APPDIR/Hyper.app\" ]; then\n\tsudo mv \"$APPDIR/Hyper.app\" \"$TMPDIR/Hyper.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Hyper.app\" \"$APPDIR\"\nrelaunch_application 'co.zeit.hyper'\n"
}
}