mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 17:08:53 +00:00
feat: FMAv2 initial file setup (#26791)
> For #26080 # Checklist for submitter If some of the following don't apply, delete the relevant line. <!-- Note that API documentation changes are now addressed by the product design team. --> - [x] Manual QA for all new/changed functionality
This commit is contained in:
parent
e7b1409e1c
commit
d8dad02c75
21 changed files with 524 additions and 0 deletions
145
ee/maintained-apps/outputs/apps.json
Normal file
145
ee/maintained-apps/outputs/apps.json
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
{
|
||||
"version": 2,
|
||||
"apps": [
|
||||
{
|
||||
"name": "1Password",
|
||||
"slug": "1password/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.1password.1password",
|
||||
"description": "Password manager that keeps all passwords secure behind one password"
|
||||
},
|
||||
{
|
||||
"name": "Adobe Acrobat Reader",
|
||||
"slug": "adobe-acrobat-reader/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.adobe.Reader",
|
||||
"description": "Adobe Acrobat Reader is the industry-standard tool for viewing, printing, and commenting on PDF documents."
|
||||
},
|
||||
{
|
||||
"name": "Box Drive",
|
||||
"slug": "box-drive/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.box.desktop",
|
||||
"description": "Box Drive is the desktop client for Box Cloud, enabling seamless access to your files without taking up local storage."
|
||||
},
|
||||
{
|
||||
"name": "Brave",
|
||||
"slug": "brave-browser/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.brave.Browser",
|
||||
"description": "Brave is a web browser designed with privacy, blocking ads and trackers by default while maintaining fast speed."
|
||||
},
|
||||
{
|
||||
"name": "Cloudflare WARP",
|
||||
"slug": "cloudflare-warp/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.cloudflare.1dot1dot1dot1.macos",
|
||||
"description": "Cloudflare WARP enhances internet safety and performance by encrypting your data and optimizing connections for privacy."
|
||||
},
|
||||
{
|
||||
"name": "Docker Desktop",
|
||||
"slug": "docker/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.docker.docker",
|
||||
"description": "Docker Desktop provides a seamless environment for building, sharing, and running containerized applications and microservices."
|
||||
},
|
||||
{
|
||||
"name": "Figma",
|
||||
"slug": "figma/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.figma.Desktop",
|
||||
"description": "Figma is a collaborative design tool for teams to create, prototype, and share designs in real time."
|
||||
},
|
||||
{
|
||||
"name": "Mozilla Firefox",
|
||||
"slug": "firefox/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "org.mozilla.firefox",
|
||||
"description": "Firefox is a powerful, open-source web browser built for speed, privacy, and customization."
|
||||
},
|
||||
{
|
||||
"name": "Google Chrome",
|
||||
"slug": "google-chrome/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.google.Chrome",
|
||||
"description": "Google Chrome is a fast, reliable web browser built for performance and compatibility across platforms."
|
||||
},
|
||||
{
|
||||
"name": "Microsoft Edge",
|
||||
"slug": "microsoft-edge/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.microsoft.edgemac",
|
||||
"description": "Microsoft Edge is a secure, fast, and modern web browser built for productivity and compatibility."
|
||||
},
|
||||
{
|
||||
"name": "Microsoft Excel",
|
||||
"slug": "microsoft-excel/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.microsoft.Excel",
|
||||
"description": "Microsoft Excel is the industry-standard spreadsheet software, perfect for data analysis, reporting, and visualization."
|
||||
},
|
||||
{
|
||||
"name": "Microsoft Teams",
|
||||
"slug": "microsoft-teams/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.microsoft.teams2",
|
||||
"description": "Microsoft Teams is an all-in-one collaboration platform for meetings, chats, calls, and document sharing."
|
||||
},
|
||||
{
|
||||
"name": "Microsoft Word",
|
||||
"slug": "microsoft-word/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.microsoft.Word",
|
||||
"description": "Microsoft Word is the industry-standard word processor for creating, editing, and sharing professional documents."
|
||||
},
|
||||
{
|
||||
"name": "Notion",
|
||||
"slug": "notion/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "notion.id",
|
||||
"description": "Notion is an all-in-one workspace for writing, planning, collaborating, and organizing."
|
||||
},
|
||||
{
|
||||
"name": "Postman",
|
||||
"slug": "postman/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.postmanlabs.mac",
|
||||
"description": "Postman is a collaboration platform for API development that simplifies building, testing, and sharing APIs."
|
||||
},
|
||||
{
|
||||
"name": "Slack",
|
||||
"slug": "slack/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.tinyspeck.slackmacgap",
|
||||
"description": "Slack is a team communication and collaboration software for modern workplaces"
|
||||
},
|
||||
{
|
||||
"name": "TeamViewer",
|
||||
"slug": "teamviewer/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.teamviewer.TeamViewer",
|
||||
"description": "TeamViewer is a versatile remote access and connectivity platform trusted for secure remote desktop control, support, and collaboration."
|
||||
},
|
||||
{
|
||||
"name": "Microsoft Visual Studio Code",
|
||||
"slug": "visual-studio-code/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.microsoft.VSCode",
|
||||
"description": "Microsoft Visual Studio Code (VS Code) is an open-source, lightweight, and powerful code editor."
|
||||
},
|
||||
{
|
||||
"name": "WhatsApp",
|
||||
"slug": "whatsapp/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "net.whatsapp.WhatsApp",
|
||||
"description": "WhatsApp's native desktop client for seamless messaging and calling on macOS."
|
||||
},
|
||||
{
|
||||
"name": "Zoom for IT Admins",
|
||||
"slug": "zoom-for-it-admins/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "us.zoom.xos",
|
||||
"description": "Zoom is a leading video communication platform for meetings, webinars, and collaboration."
|
||||
}
|
||||
]
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/1password.json
Normal file
19
ee/maintained-apps/outputs/darwin/1password.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "8.10.60",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.1password.1password';"
|
||||
},
|
||||
"installer_url": "https://downloads.1password.com/mac/1Password-8.10.60-aarch64.zip",
|
||||
"unique_identifier": "com.1password.1password",
|
||||
"install_script_ref": "19ababc1-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19abb6e2-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "76b26233c12250cdcce78f8a3d074bbc09927c11f960fa90935e328c7ce806d3"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ababc1-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_application 'com.1password.1password'\nsudo [ -d \"$APPDIR/1Password.app\" ] && sudo mv \"$APPDIR/1Password.app\" \"$TMPDIR/1Password.app.bkp\"\nsudo cp -R \"$TMPDIR/1Password.app\" \"$APPDIR\"\n",
|
||||
"19abb6e2-ed65-11ef-8c2d-0242ac12000a": "#!/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/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"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/adobe-acrobat-reader.json
Normal file
19
ee/maintained-apps/outputs/darwin/adobe-acrobat-reader.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "8.10.60",
|
||||
"installer_url": "https://downloads.1password.com/mac/1Password-8.10.60-aarch64.zip",
|
||||
"unique_identifier": "com.adobe.Reader",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Reader';"
|
||||
},
|
||||
"install_script_ref": "19abc536-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19abc828-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "37fa04f8e633085a36f598ea94cb1da0245b2fc9eca898f7198880026dad5bd1"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19abc536-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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# install pkg files\nsudo installer -pkg \"$TMPDIR/AcroRdrDC_2400520400_MUI.pkg\" -target /\n",
|
||||
"19abc828-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.adobe.ARMDC.Communicator'\nremove_launchctl_service 'com.adobe.ARMDC.SMJobBlessHelper'\nremove_launchctl_service 'com.adobe.ARMDCHelper.cc24aef4a1b90ed56a725c38014c95072f92651fb65e1bf9c8e43c37a23d420d'\nquit_application 'com.adobe.AdobeRdrCEF'\nquit_application 'com.adobe.AdobeRdrCEFHelper'\nquit_application 'com.adobe.Reader'\nsudo pkgutil --forget 'com.adobe.acrobat.DC.reader.*'\nsudo pkgutil --forget 'com.adobe.armdc.app.pkg'\nsudo pkgutil --forget 'com.adobe.RdrServicesUpdater'\nsudo rm -rf '/Applications/Adobe Acrobat Reader.app'\nsudo rm -rf '/Library/Preferences/com.adobe.reader.DC.WebResource.plist'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.adobe.Reader'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.adobe.Reader.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.adobe.AdobeRdrCEFHelper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.adobe.crashreporter.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.adobe.Reader.plist'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/box-drive.json
Normal file
19
ee/maintained-apps/outputs/darwin/box-drive.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.43.205",
|
||||
"installer_url": "https://e3.boxcdn.net/desktop/releases/mac/BoxDrive-2.43.205.pkg",
|
||||
"unique_identifier": "com.box.desktop",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.box.desktop';"
|
||||
},
|
||||
"install_script_ref": "19abd092-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19abd303-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "200c5fa6d8eec5516924938d46e7fa6122fdc189044fd935e8c155faa5beaf3d"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19abd092-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\nsudo installer -pkg \"$TMPDIR/BoxDrive-2.43.205.pkg\" -target /\n",
|
||||
"19abd303-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER fileproviderctl domain remove -A com.box.desktop.boxfileprovider)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-archive-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-preserve-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; defaults delete com.box.desktop)\necho \"${LOGGED_IN_USER} ALL = (root) NOPASSWD: /Library/Application\\ Support/Box/uninstall_box_drive_r\" >> /etc/sudoers.d/box_uninstall\nremove_launchctl_service 'com.box.desktop.helper'\nquit_application 'com.box.Box-Local-Com-Server'\nquit_application 'com.box.desktop'\nquit_application 'com.box.desktop.findersyncext'\nquit_application 'com.box.desktop.helper'\nquit_application 'com.box.desktop.ui'\n(cd /Users/$LOGGED_IN_USER && sudo -u \"$LOGGED_IN_USER\" '/Library/Application Support/Box/uninstall_box_drive')\nsudo pkgutil --forget 'com.box.desktop.installer.*'\nrm /etc/sudoers.d/box_uninstall\ntrash $LOGGED_IN_USER '~/.Box_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.box.desktop.boxfileprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.box.desktop.findersyncext'\ntrash $LOGGED_IN_USER '~/Library/Logs/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.ui.plist'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/brave-browser.json
Normal file
19
ee/maintained-apps/outputs/darwin/brave-browser.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.75.178.0",
|
||||
"installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/175.178/Brave-Browser-arm64.dmg",
|
||||
"unique_identifier": "com.brave.Browser",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser';"
|
||||
},
|
||||
"install_script_ref": "19abe0bf-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19abe347-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "87fbadfa852feea93caca5b3f6b8061257d9210c66ecee97408e4d3eb38dec5d"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19abe0bf-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\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_application 'com.brave.Browser'\nsudo [ -d \"$APPDIR/Brave Browser.app\" ] && sudo mv \"$APPDIR/Brave Browser.app\" \"$TMPDIR/Brave Browser.app.bkp\"\nsudo cp -R \"$TMPDIR/Brave Browser.app\" \"$APPDIR\"\n",
|
||||
"19abe347-ed65-11ef-8c2d-0242ac12000a": "#!/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/Brave Browser.app\"\nsudo rmdir '~/Library/Application Support/BraveSoftware'\nsudo rmdir '~/Library/Caches/BraveSoftware'\ntrash $LOGGED_IN_USER '~/Library/Application Support/BraveSoftware/Brave-Browser'\ntrash $LOGGED_IN_USER '~/Library/Caches/BraveSoftware/Brave-Browser'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.brave.Browser'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.brave.Browser'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.brave.Browser.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.brave.Browser.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/cloudflare-warp.json
Normal file
19
ee/maintained-apps/outputs/darwin/cloudflare-warp.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2024.12.554.0",
|
||||
"installer_url": "https://downloads.cloudflareclient.com/v1/download/macos/version/2024.12.554.0",
|
||||
"unique_identifier": "com.cloudflare.1dot1dot1dot1.macos",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.cloudflare.1dot1dot1dot1.macos';"
|
||||
},
|
||||
"install_script_ref": "19ac0ea2-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac110b-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "1cc6d8a35452216165000266e13a03ac893dfc6b13302ea226fea6357c907a6d"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac0ea2-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\nsudo installer -pkg \"$TMPDIR/Cloudflare_WARP_2024.12.554.0.pkg\" -target /\n",
|
||||
"19ac110b-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.cloudflare.1dot1dot1dot1.macos.loginlauncherapp'\nremove_launchctl_service 'com.cloudflare.1dot1dot1dot1.macos.warp.daemon'\nquit_application 'com.cloudflare.1dot1dot1dot1.macos'\n(cd /Users/$LOGGED_IN_USER && sudo -u \"$LOGGED_IN_USER\" '/Applications/Cloudflare WARP.app/Contents/Resources/uninstall.sh')\n(cd /Users/$LOGGED_IN_USER && sudo -u \"$LOGGED_IN_USER\" '%!s(bool=true)')\nsudo pkgutil --forget 'com.cloudflare.1dot1dot1dot1.macos'\nsudo rm -rf '/usr/local/bin/warp-cli'\nsudo rm -rf '/usr/local/bin/warp-dex'\nsudo rm -rf '/usr/local/bin/warp-diag'\n/Applications/Cloudflare\\ WARP.app/Contents/Resources/uninstall.sh\ntrash $LOGGED_IN_USER '/Library/LaunchDaemons/com.cloudflare.1dot1dot1dot1.macos.warp.daemon.plist'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.cloudflare.1dot1dot1dot1.macos.loginlauncherapp'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.cloudflare.1dot1dot1dot1.macos'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.cloudflare.1dot1dot1dot1.macos'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.cloudflare.1dot1dot1dot1.macos'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.cloudflare.1dot1dot1dot1.macos.loginlauncherapp'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.cloudflare.1dot1dot1dot1.macos'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.cloudflare.1dot1dot1dot1.macos.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.cloudflare.1dot1dot1dot1.macos.plist'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.cloudflare.1dot1dot1dot1.macos'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/docker.json
Normal file
19
ee/maintained-apps/outputs/darwin/docker.json
Normal file
File diff suppressed because one or more lines are too long
19
ee/maintained-apps/outputs/darwin/figma.json
Normal file
19
ee/maintained-apps/outputs/darwin/figma.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "125.0.8",
|
||||
"installer_url": "https://desktop.figma.com/mac-arm/Figma-125.0.8.zip",
|
||||
"unique_identifier": "com.figma.Desktop",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.figma.Desktop';"
|
||||
},
|
||||
"install_script_ref": "19ac251c-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac26a9-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "eb765f11a1526e3f98d12d8eff1c1f587058291418fd5f2e1e6d5f25e941d9bc"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac251c-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_application 'com.figma.Desktop'\nsudo [ -d \"$APPDIR/Figma.app\" ] && sudo mv \"$APPDIR/Figma.app\" \"$TMPDIR/Figma.app.bkp\"\nsudo cp -R \"$TMPDIR/Figma.app\" \"$APPDIR\"\n",
|
||||
"19ac26a9-ed65-11ef-8c2d-0242ac12000a": "#!/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/Figma.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Figma'\ntrash $LOGGED_IN_USER '~/Library/Application Support/figma-desktop'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.figma.agent'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.figma.Desktop'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.figma.Desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.figma.Desktop.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/firefox.json
Normal file
19
ee/maintained-apps/outputs/darwin/firefox.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "135.0",
|
||||
"installer_url": "https://download-installer.cdn.mozilla.net/pub/firefox/releases/135.0/mac/en-US/Firefox%20135.0.dmg",
|
||||
"unique_identifier": "org.mozilla.firefox",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefox';"
|
||||
},
|
||||
"install_script_ref": "19ac3c87-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac3e07-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "e55e24e6b2a4980f4b9091900835977b282f599dcdd5e38b753d95bad8a11da9"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac3c87-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\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_application 'org.mozilla.firefox'\nsudo [ -d \"$APPDIR/Firefox.app\" ] && sudo mv \"$APPDIR/Firefox.app\" \"$TMPDIR/Firefox.app.bkp\"\nsudo cp -R \"$TMPDIR/Firefox.app\" \"$APPDIR\"\n",
|
||||
"19ac3e07-ed65-11ef-8c2d-0242ac12000a": "#!/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 'org.mozilla.firefox'\nsudo rm -rf \"$APPDIR/Firefox.app\"\nsudo rm -rf 'firefox'\nsudo rmdir '~/Library/Application Support/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla/updates'\nsudo rmdir '~/Library/Caches/Mozilla/updates/Applications'\ntrash $LOGGED_IN_USER '/Library/Logs/DiagnosticReports/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.mozilla.firefox.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Mozilla/updates/Applications/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.crashreporter'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.firefox'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.crashreporter.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.firefox.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/org.mozilla.firefox.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/org.mozilla.firefox'\n"
|
||||
}
|
||||
}
|
||||
18
ee/maintained-apps/outputs/darwin/google-chrome.json
Normal file
18
ee/maintained-apps/outputs/darwin/google-chrome.json
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "133.0.6943.99",
|
||||
"installer_url": "https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg",
|
||||
"unique_identifier": "com.google.Chrome",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.Chrome';"
|
||||
},
|
||||
"install_script_ref": "19ac440a-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac467c-ed65-11ef-8c2d-0242ac12000a"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac440a-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\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_application 'com.google.Chrome'\nsudo [ -d \"$APPDIR/Google Chrome.app\" ] && sudo mv \"$APPDIR/Google Chrome.app\" \"$TMPDIR/Google Chrome.app.bkp\"\nsudo cp -R \"$TMPDIR/Google Chrome.app\" \"$APPDIR\"\n",
|
||||
"19ac467c-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/microsoft-edge.json
Normal file
19
ee/maintained-apps/outputs/darwin/microsoft-edge.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "133.0.3065.69,1f23240b-ab7b-4f22-9b0f-dd3fc2639c09",
|
||||
"installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/1f23240b-ab7b-4f22-9b0f-dd3fc2639c09/MicrosoftEdge-133.0.3065.69.pkg",
|
||||
"unique_identifier": "com.microsoft.edgemac",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.edgemac';"
|
||||
},
|
||||
"install_script_ref": "19ac4c3d-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac4dd7-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "5ea3058eb400e8d92d7861ce303a9b58f30d28c64b05945d5e5f0513e6dc8b6b"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac4c3d-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n <array>\n <dict>\n <key>attributeSetting</key>\n <integer>0</integer>\n <key>choiceAttribute</key>\n <string>selected</string>\n <key>choiceIdentifier</key>\n <string>com.microsoft.package.Microsoft_AutoUpdate.app</string>\n </dict>\n </array>\n</plist>\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/MicrosoftEdge-133.0.3065.69.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\n",
|
||||
"19ac4dd7-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\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.update-internal.109.0.1518.89.system'\nremove_launchctl_service 'com.microsoft.EdgeUpdater.update.system'\nremove_launchctl_service 'com.microsoft.EdgeUpdater.wake.system'\nsudo pkgutil --forget 'com.microsoft.edgemac'\nsudo rm -rf '/Library/Application Support/Microsoft/EdgeUpdater'\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/Caches/com.microsoft.edgemac'\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/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"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/microsoft-excel.json
Normal file
19
ee/maintained-apps/outputs/darwin/microsoft-excel.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.94.25020927",
|
||||
"installer_url": "https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Excel_16.94.25020927_Installer.pkg",
|
||||
"unique_identifier": "com.microsoft.Excel",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Excel';"
|
||||
},
|
||||
"install_script_ref": "19ac51c7-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac532e-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "7ba1fd596243a955975a111242877cc5c5a08fb184fe40db9ed7a5aad6923d27"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac51c7-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n <array>\n <dict>\n <key>attributeSetting</key>\n <integer>0</integer>\n <key>choiceAttribute</key>\n <string>selected</string>\n <key>choiceIdentifier</key>\n <string>com.microsoft.autoupdate</string>\n </dict>\n </array>\n</plist>\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/Microsoft_Excel_16.94.25020927_Installer.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\n",
|
||||
"19ac532e-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.office.licensingV2.helper'\nquit_application 'com.microsoft.autoupdate2'\nsudo pkgutil --forget 'com.microsoft.package.Microsoft_Excel.app'\nsudo pkgutil --forget 'com.microsoft.pkg.licensing'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.Excel'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.microsoft.excel.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.Excel'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.Excel'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.Excel.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.microsoft.Excel.savedState'\ntrash $LOGGED_IN_USER '~/Library/Webkit/com.microsoft.Excel'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/microsoft-teams.json
Normal file
19
ee/maintained-apps/outputs/darwin/microsoft-teams.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "25016.1904.3401.2239",
|
||||
"installer_url": "https://statics.teams.cdn.office.net/production-osx/25016.1904.3401.2239/MicrosoftTeams.pkg",
|
||||
"unique_identifier": "com.microsoft.teams2",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.teams2';"
|
||||
},
|
||||
"install_script_ref": "19ac6a43-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac6e5f-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "63a283bf5a022a221478df5630fb3e2b160bc20f3a7c13f09f350241cbf2b16e"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac6a43-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n <array>\n <dict>\n <key>attributeSetting</key>\n <integer>0</integer>\n <key>choiceAttribute</key>\n <string>selected</string>\n <key>choiceIdentifier</key>\n <string>com.microsoft.autoupdate</string>\n </dict>\n </array>\n</plist>\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/MicrosoftTeams.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\n",
|
||||
"19ac6e5f-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.teams.TeamsUpdaterDaemon'\nquit_application 'com.microsoft.autoupdate2'\nsudo pkgutil --forget 'com.microsoft.MSTeamsAudioDevice'\nsudo pkgutil --forget 'com.microsoft.package.Microsoft_AutoUpdate.app'\nsudo pkgutil --forget 'com.microsoft.teams2'\nsudo rm -rf '/Applications/Microsoft Teams.app'\nsudo rm -rf '/Library/Application Support/Microsoft/TeamsUpdaterDaemon'\nsudo rm -rf '/Library/Logs/Microsoft/MSTeams'\nsudo rm -rf '/Library/Logs/Microsoft/Teams'\nsudo rm -rf '/Library/Preferences/com.microsoft.teams.plist'\nsudo rmdir '~/Library/Application Support/Microsoft'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.com.microsoft.teams'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.teams*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.microsoft.teams'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Microsoft/Teams'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Teams'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.teams'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.teams*'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.microsoft.teams.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.microsoft.teams'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.microsoft.teams'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.microsoft.teams.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/Microsoft Teams Helper (Renderer)'\ntrash $LOGGED_IN_USER '~/Library/Logs/Microsoft Teams'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.teams*.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.microsoft.teams*.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.microsoft.teams'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/microsoft-word.json
Normal file
19
ee/maintained-apps/outputs/darwin/microsoft-word.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.94.25020927",
|
||||
"installer_url": "https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Word_16.94.25020927_Installer.pkg",
|
||||
"unique_identifier": "com.microsoft.Word",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Word';"
|
||||
},
|
||||
"install_script_ref": "19ac7579-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac7675-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "77864ce4f0033ef33d3c9bfdd901522cebf85b1c834d991923e8a287bf302cb9"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac7579-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n <array>\n <dict>\n <key>attributeSetting</key>\n <integer>0</integer>\n <key>choiceAttribute</key>\n <string>selected</string>\n <key>choiceIdentifier</key>\n <string>com.microsoft.autoupdate</string>\n </dict>\n </array>\n</plist>\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/Microsoft_Word_16.94.25020927_Installer.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\n",
|
||||
"19ac7675-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.office.licensingV2.helper'\nquit_application 'com.microsoft.autoupdate2'\nsudo pkgutil --forget 'com.microsoft.package.Microsoft_Word.app'\nsudo pkgutil --forget 'com.microsoft.pkg.licensing'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.Word'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.microsoft.word.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Microsoft Word_*.plist'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.Word'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.Word.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.microsoft.Word.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/notion.json
Normal file
19
ee/maintained-apps/outputs/darwin/notion.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "4.5.0",
|
||||
"installer_url": "https://desktop-release.notion-static.com/Notion-4.5.0-arm64.dmg",
|
||||
"unique_identifier": "notion.id",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'notion.id';"
|
||||
},
|
||||
"install_script_ref": "19ac79e9-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac7ba1-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "0dfd1598e04501104c8e304477a248c61956fc95d94d436f21f4704b0d4e4a90"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac79e9-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\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_application 'notion.id'\nsudo [ -d \"$APPDIR/Notion.app\" ] && sudo mv \"$APPDIR/Notion.app\" \"$TMPDIR/Notion.app.bkp\"\nsudo cp -R \"$TMPDIR/Notion.app\" \"$APPDIR\"\n",
|
||||
"19ac7ba1-ed65-11ef-8c2d-0242ac12000a": "#!/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/Notion.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Caches/notion-updater'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/notion.id.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Notion'\ntrash $LOGGED_IN_USER '~/Library/Caches/notion.id*'\ntrash $LOGGED_IN_USER '~/Library/Logs/Notion'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Preferences/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/notion.id.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/notion.id'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/postman.json
Normal file
19
ee/maintained-apps/outputs/darwin/postman.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "11.33.0",
|
||||
"installer_url": "https://dl.pstmn.io/download/version/11.33.0/osx_arm64",
|
||||
"unique_identifier": "com.postmanlabs.mac",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac';"
|
||||
},
|
||||
"install_script_ref": "19ac8c6f-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac8ee9-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "d890a56a301b4678be5bfe9ecdc0ba00f4205695aee16f21fea8166cdbd9681e"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac8c6f-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_application 'com.postmanlabs.mac'\nsudo [ -d \"$APPDIR/Postman.app\" ] && sudo mv \"$APPDIR/Postman.app\" \"$TMPDIR/Postman.app.bkp\"\nsudo cp -R \"$TMPDIR/Postman.app\" \"$APPDIR\"\n",
|
||||
"19ac8ee9-ed65-11ef-8c2d-0242ac12000a": "#!/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/Postman.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.postmanlabs.mac.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Postman'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.postmanlabs.mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.postmanlabs.mac.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/Caches/Postman'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.postmanlabs.mac'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/com.postmanlabs.mac.ShipIt.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.postmanlabs.mac.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.postmanlabs.mac.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/slack.json
Normal file
19
ee/maintained-apps/outputs/darwin/slack.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "4.42.117",
|
||||
"installer_url": "https://downloads.slack-edge.com/desktop-releases/mac/arm64/4.42.117/Slack-4.42.117-macOS.dmg",
|
||||
"unique_identifier": "com.tinyspeck.slackmacgap",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyspeck.slackmacgap';"
|
||||
},
|
||||
"install_script_ref": "19ac9218-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac9342-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "93e8406c6b515815889c63f99e26d1de485aaf820471a107c8f41da4a219d1db"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac9218-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\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_application 'com.tinyspeck.slackmacgap'\nsudo [ -d \"$APPDIR/Slack.app\" ] && sudo mv \"$APPDIR/Slack.app\" \"$TMPDIR/Slack.app.bkp\"\nsudo cp -R \"$TMPDIR/Slack.app\" \"$APPDIR\"\n",
|
||||
"19ac9342-ed65-11ef-8c2d-0242ac12000a": "#!/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.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"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/teamviewer.json
Normal file
19
ee/maintained-apps/outputs/darwin/teamviewer.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "15.62.4",
|
||||
"installer_url": "https://dl.teamviewer.com/download/version_15x/update/15.62.4/TeamViewer.pkg",
|
||||
"unique_identifier": "com.teamviewer.TeamViewer",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.teamviewer.TeamViewer';"
|
||||
},
|
||||
"install_script_ref": "19ac975b-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac985e-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "9a631df3413128b64485e837fdeef683f152a73c643eb1d611f5ccacd58dbf16"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac975b-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\nsudo installer -pkg \"$TMPDIR/TeamViewer.pkg\" -target /\n",
|
||||
"19ac985e-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\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 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\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.teamviewer.desktop'\nremove_launchctl_service 'com.teamviewer.Helper'\nremove_launchctl_service 'com.teamviewer.service'\nremove_launchctl_service 'com.teamviewer.teamviewer'\nremove_launchctl_service 'com.teamviewer.teamviewer_desktop'\nremove_launchctl_service 'com.teamviewer.teamviewer_service'\nremove_launchctl_service 'com.teamviewer.UninstallerHelper'\nremove_launchctl_service 'com.teamviewer.UninstallerWatcher'\nquit_application 'com.teamviewer.TeamViewer'\nquit_application 'com.teamviewer.TeamViewerUninstaller'\nsudo pkgutil --forget 'com.teamviewer.AuthorizationPlugin'\nsudo pkgutil --forget 'com.teamviewer.AuthorizationResources'\nsudo pkgutil --forget 'com.teamviewer.remoteaudiodriver'\nsudo pkgutil --forget 'com.teamviewer.teamviewer.*'\nsudo pkgutil --forget 'TeamViewerUninstaller'\nsudo rm -rf '/Applications/TeamViewer.app'\nsudo rm -rf '/Library/Preferences/com.teamviewer*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/TeamViewer'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.teamviewer.TeamViewer'\ntrash $LOGGED_IN_USER '~/Library/Caches/TeamViewer'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.teamviewer.TeamViewer.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/TeamViewer'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.teamviewer*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.teamviewer.TeamViewer.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/visual-studio-code.json
Normal file
19
ee/maintained-apps/outputs/darwin/visual-studio-code.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.97.2",
|
||||
"installer_url": "https://update.code.visualstudio.com/1.97.2/darwin-arm64/stable",
|
||||
"unique_identifier": "com.microsoft.VSCode",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.VSCode';"
|
||||
},
|
||||
"install_script_ref": "19ac9d72-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19ac9e40-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "567ba4fae5545586a0bff02eea263d59873fcf488368a9a9ccf3d4c22dfa8ebc"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19ac9d72-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_application 'com.microsoft.VSCode'\nsudo [ -d \"$APPDIR/Visual Studio Code.app\" ] && sudo mv \"$APPDIR/Visual Studio Code.app\" \"$TMPDIR/Visual Studio Code.app.bkp\"\nsudo cp -R \"$TMPDIR/Visual Studio Code.app\" \"$APPDIR\"\n",
|
||||
"19ac9e40-ed65-11ef-8c2d-0242ac12000a": "#!/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\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.VSCode.ShipIt'\nquit_application 'com.microsoft.VSCode'\nsudo rm -rf \"$APPDIR/Visual Studio Code.app\"\ntrash $LOGGED_IN_USER '~/.vscode'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Code'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.microsoft.vscode.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.VSCode'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.microsoft.VSCode.ShipIt'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.microsoft.VSCode'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/com.microsoft.VSCode.ShipIt.*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.VSCode.helper.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.microsoft.VSCode.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.microsoft.VSCode.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/whatsapp.json
Normal file
19
ee/maintained-apps/outputs/darwin/whatsapp.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.25.1.83",
|
||||
"installer_url": "https://web.whatsapp.com/desktop/mac_native/release/?version=2.25.1.83&extension=zip&configuration=Release&branch=relbranch",
|
||||
"unique_identifier": "net.whatsapp.WhatsApp",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.whatsapp.WhatsApp';"
|
||||
},
|
||||
"install_script_ref": "19acafbf-ed65-11ef-8c2d-0242ac12000a",
|
||||
"uninstall_script_ref": "19acb0c6-ed65-11ef-8c2d-0242ac12000a",
|
||||
"sha256": "1844b54471bd62f8182760b03e3fe65751a5825bedf65441fd97fed24453124d"
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"19acafbf-ed65-11ef-8c2d-0242ac12000a": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\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\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_application 'net.whatsapp.WhatsApp'\nsudo [ -d \"$APPDIR/WhatsApp.app\" ] && sudo mv \"$APPDIR/WhatsApp.app\" \"$TMPDIR/WhatsApp.app.bkp\"\nsudo cp -R \"$TMPDIR/WhatsApp.app\" \"$APPDIR\"\n",
|
||||
"19acb0c6-ed65-11ef-8c2d-0242ac12000a": "#!/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/WhatsApp.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/net.whatsapp.WhatsApp*'\ntrash $LOGGED_IN_USER '~/Library/Caches/net.whatsapp.WhatsApp'\ntrash $LOGGED_IN_USER '~/Library/Containers/net.whatsapp.WhatsApp*'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/group.com.facebook.family'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/group.net.whatsapp*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/net.whatsapp.WhatsApp.savedState'\n"
|
||||
}
|
||||
}
|
||||
19
ee/maintained-apps/outputs/darwin/zoom-for-it-admins.json
Normal file
19
ee/maintained-apps/outputs/darwin/zoom-for-it-admins.json
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue