Skip to content

Commit

Permalink
feat: FMAv2 initial file setup (#26791)
Browse files Browse the repository at this point in the history
> 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
  • Loading branch information
jahzielv authored Mar 4, 2025
1 parent e7b1409 commit d8dad02
Show file tree
Hide file tree
Showing 21 changed files with 524 additions and 0 deletions.
145 changes: 145 additions & 0 deletions ee/maintained-apps/outputs/apps.json
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions ee/maintained-apps/outputs/darwin/1password.json
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions ee/maintained-apps/outputs/darwin/adobe-acrobat-reader.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
Loading

0 comments on commit d8dad02

Please sign in to comment.