# Adobe Creative Cloud Deployment

> Deploy Adobe Creative Cloud Desktop silently to macOS Devices with an Applivery Script that verifies Adobe's checksum and code signature.

Source: https://docs.applivery.com/en/device-management/apple/macos/app-management/adobe-creative-cloud-deployment/  •  Last updated: 2026-11-12

---

[Adobe Creative Cloud Desktop](https://www.adobe.com/creativecloud/desktop-app.html) is the App your users need to sign in to Adobe and install Photoshop, Illustrator, Premiere Pro, and the rest of the Creative Cloud catalog. Deploying it from Applivery means it's ready on every macOS Device without manual installation and without giving admin rights to the end user.

You can do this with a Bash **Script** that downloads the latest Adobe installer from Adobe's servers, verifies its checksum and Adobe's code signature, and runs Adobe's own silent installer. You don't need to install anything else on the Device beforehand, not even Homebrew.

## Requirements

Before deploying Adobe Creative Cloud on macOS Devices through Applivery, make sure you have the following:

-   macOS Devices enrolled in Applivery and assigned to a **Policy**.
    
-   The **Applivery MDM Agent** enabled in that Policy. Scripts are run by the Agent. Learn more about the [macOS Agent](https://docs.applivery.com/en/device-management/apple/apple-policies/agent/#agent-app-for-macos-devices).
    
-   Outbound HTTPS access from the Devices to:
    
    -   `formulae.brew.sh`: public index maintained by the Homebrew project. The Script only reads the current Adobe installer URL and its SHA-256 checksum from it. Homebrew itself isn't installed or used.
        
    -   `ccmdls.adobe.com`: Adobe's download server. The installer is always downloaded from here.
        
-   The `install-adobe-cc.sh` Script, included at the [end of this guide](#script).
    

:::info
The Script installs the **Creative Cloud Desktop App** only. Users install individual Apps such as Photoshop or Illustrator afterwards from Creative Cloud, once they sign in with their Adobe ID. If you need to pre-install specific Adobe Apps or manage licensing centrally, check the [Alternative: Adobe Admin Console package](#alternative-adobe-admin-console-package) section below.
:::

## How the Script works

1.  Exits right away if Creative Cloud is already installed, so it's safe to keep in the Policy.
    
2.  Looks up the latest Adobe download URL and its SHA-256 checksum for the Device architecture (Apple silicon or Intel). This avoids hard-coding a version that becomes outdated with every Adobe release.
    
3.  Stops if the download URL doesn't point to `ccmdls.adobe.com`, so the installer can only come from Adobe.
    
4.  Downloads the installer, verifies the checksum, and mounts the disk image.
    
5.  Stops unless the installer is signed by **Adobe Inc.** (Apple Developer Team ID `JQ525L2MZD`).
    
6.  Runs Adobe's installer with `--mode=silent`.
    
7.  Writes a log to `/var/log/applivery-adobe-cc.log` and returns `0` on success or `1` on failure, so the result is reported correctly in Applivery.
    

:::info
The Script needs root privileges to install the App. If it runs without them, it stops with `Must run as root` and makes no changes.
:::

## Upload the Script to Applivery

Once in the [**Applivery Dashboard**](https://dashboard.applivery.io), go to the **Resources** section 1. Select the **Scripts** tab 2 and click the **\+ Create Script** 3 button.

![scripts](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/5a234d58-528b-40f4-94a8-c829ddb1d4fe.png)

Fill in the form as follows:

-   **Name**: `Install-AdobeCreativeCloud` (or any name you prefer).
    
-   **Description**: optional, for example _Unattended install of Adobe Creative Cloud Desktop_.
    
-   **Language**: **Bash**.
    

Then click **Load from file** and select the `install-adobe-cc.sh` file, or paste the Script content directly into the editor. Click **Create** to save the Script.

![adobe-cc-script-form](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/d90a511d-5cc9-4615-a61a-53ce262bd622.png)

## Add the Script to your macOS Policy

Next, go to the **Policies** 1 section and select the Policy assigned to your macOS Devices, or [create a new one](https://docs.applivery.com/en/device-management/general-settings/create-policies/). From the left-hand menu, select the **Scripts** 2 section.

:::warning
Scripts are only available for macOS Devices and require the **Applivery MDM Agent** to be enabled in the Policy. If it isn't enabled yet, go to the **Agent** section of the Policy and enable it before continuing.
:::

Click the **\+ Add Script** 3 button.

![add script to policy](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/7bfe0b61-736c-4b67-9fe8-54b438a4f4f2.png)

In the modal view, search for and select the **Install-AdobeCreativeCloud** Script you created in the previous step. Set the **Execution method** to **Once** so the Script runs a single time per Device. No arguments are needed. Click **Add**.

![adobe-cc-add-script-once](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/a3273d19-b15d-4e68-b788-30a217beed7b.png)

The Script now appears in the list. Click **Save changes** to publish a new version of the Policy. The Script runs on every Device assigned to the Policy the next time the Agent syncs.

![adobe-cc-save-changes](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/3698a2ec-ef27-4909-af30-85b408b47e03.png)

:::info
Before rolling it out to all your Devices, assign the Script to a pilot Policy with one or two test Devices and check the result as described below. It's also safe to assign it to Devices that already have Creative Cloud: the Script detects it and exits without making any changes.
:::

## Verify the installation

Once the Script has run, open the Device in the Applivery Dashboard, go to the **Scripts** tab, and click the **Execution history** button to see the result and output of the Script. You can learn more about it in **Scripts** by following this [link.](https://docs.applivery.com/en/device-management/apple/macos/scripts/)

:::warning
If an execution fails (for example, because the Device had no internet access at that moment), fix the cause and use the **Repeat execution** option on the Script so it's sent to the Device again.
:::

On the Device itself, Creative Cloud is installed at:

```text
/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app
```

The Script log is saved at `/var/log/applivery-adobe-cc.log`. A successful run looks like this:

```text
2026-11-10 10:57:28 [AdobeCC] Downloading https://ccmdls.adobe.com/AdobeProducts/StandaloneBuilds/ACCC/ESD/6.11.0/478.6/macarm64/ACCCx6_11_0_478_6.dmg
2026-11-10 10:57:40 [AdobeCC] Running silent installer
Starting installer...
Installation successful.
2026-11-10 10:57:46 [AdobeCC] Installed OK
```

If the Script runs again on a Device that already has Creative Cloud, the log shows `Already installed, nothing to do` and nothing changes.

:::info
Adobe's installer may print lines starting with `objc[...]: Class ... is implemented in both ...` in the output. They're harmless warnings from the installer itself and don't mean the installation failed. The last line of the log gives you the result.
:::

## Troubleshooting

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Log message</p></th><th colspan="1" rowspan="1"><p>Cause</p></th><th colspan="1" rowspan="1"><p>What to do</p></th></tr><tr><td colspan="1" rowspan="1"><p><code>Cannot reach cask API</code></p></td><td colspan="1" rowspan="1"><p>The Device can't reach <code>formulae.brew.sh</code>.</p></td><td colspan="1" rowspan="1"><p>Allow the domain in your firewall or proxy.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Could not resolve download URL</code></p></td><td colspan="1" rowspan="1"><p>The installer index returned an unexpected response.</p></td><td colspan="1" rowspan="1"><p>Run the Script again later. If it persists, use the Adobe Admin Console package instead.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Unexpected download host, aborting</code></p></td><td colspan="1" rowspan="1"><p>The index returned a download URL outside <code>ccmdls.adobe.com</code>.</p></td><td colspan="1" rowspan="1"><p>Don't bypass this check. Use the Adobe Admin Console package instead.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Download failed</code></p></td><td colspan="1" rowspan="1"><p>The Device can't reach <code>ccmdls.adobe.com</code>.</p></td><td colspan="1" rowspan="1"><p>Allow Adobe's download domains in your firewall or proxy.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Checksum mismatch, aborting</code></p></td><td colspan="1" rowspan="1"><p>The downloaded file is corrupt or was modified in transit.</p></td><td colspan="1" rowspan="1"><p>Run the Script again. If it persists, check for a proxy that inspects or rewrites downloads.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Mount failed</code></p></td><td colspan="1" rowspan="1"><p>The downloaded disk image couldn't be mounted.</p></td><td colspan="1" rowspan="1"><p>Run the Script again. If it persists, check the rest of the output for the error.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Signature check failed, aborting</code></p></td><td colspan="1" rowspan="1"><p>The downloaded installer isn't signed by Adobe Inc.</p></td><td colspan="1" rowspan="1"><p>Don't run the installer. Check for a proxy that rewrites downloads and try again from another network.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Must run as root</code></p></td><td colspan="1" rowspan="1"><p>The Script ran without root privileges.</p></td><td colspan="1" rowspan="1"><p>Run it through an Applivery Policy or Device assignment, not manually as a standard user.</p></td></tr><tr><td colspan="1" rowspan="1"><p><code>Installer failed (exit N)</code></p></td><td colspan="1" rowspan="1"><p>Adobe's installer returned an error.</p></td><td colspan="1" rowspan="1"><p>Check Adobe's logs in <code>/Library/Logs/Adobe/Installers</code> on the Device.</p></td></tr></tbody></table>

## Uninstall Creative Cloud

To remove Creative Cloud Desktop from a Device, run Adobe's own uninstaller in silent mode as root, for example from another Applivery Script:

```bash
"/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud Uninstaller.app/Contents/MacOS/Creative Cloud Uninstaller" -u
```

:::warning
Adobe's uninstaller removes the App but leaves some components on the Device: the `com.adobe.acc.installer.v2` helper in `/Library/PrivilegedHelperTools` with its LaunchDaemon in `/Library/LaunchDaemons`, and the folders `/Library/Application Support/Adobe` and `/Library/Logs/CreativeCloud`. Remove them separately if you need a clean Device.
:::

## Alternative: Adobe Admin Console package

If your organization manages Adobe licenses through the **Adobe Admin Console**, you can create a managed package there that includes Creative Cloud Desktop and, optionally, specific Apps such as Photoshop or Acrobat with your licensing settings already applied. Adobe provides it as a `.pkg` installer, which you can deploy with Applivery. You can learn how in **PKG Deployment** by following this [link.](https://docs.applivery.com/en/device-management/apple/macos/app-management/pkg-deployment/)

Use the Script in this guide when you only need Creative Cloud Desktop on the Devices and prefer to always install the latest version without rebuilding packages.

:::info
Once Creative Cloud is installed, you can also add it to your users' Dock without locking it. You can learn how in **Add Apps to the Dock** by following this [link.](https://docs.applivery.com/en/device-management/apple/macos/scripts/add-dock-apps/)
:::

## Script

```bash
#!/bin/bash
# Unattended install of Adobe Creative Cloud Desktop for Applivery (runs as root).
# No Homebrew needed: looks up the current Adobe URL + sha256 in the Homebrew cask index,
# only downloads from Adobe's server, checks Adobe's code signature and runs the silent installer.
set -uo pipefail

LOG="/var/log/applivery-adobe-cc.log"
exec > >(tee -a "$LOG") 2>&1
log() { echo "$(date '+%F %T') [AdobeCC] $*"; }

APP="/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app"
API="https://formulae.brew.sh/api/cask/adobe-creative-cloud.json"
ADOBE_HOST="https://ccmdls.adobe.com/"
ADOBE_TEAM_ID="JQ525L2MZD"   # Developer ID Application: Adobe Inc.

[ "$(id -u)" -eq 0 ] || { log "Must run as root"; exit 1; }
[ -d "$APP" ] && { log "Already installed, nothing to do"; exit 0; }

TMP=$(mktemp -d /private/tmp/adobecc.XXXXXX)
MNT="$TMP/mnt"
cleanup() { hdiutil detach "$MNT" -quiet -force 2>/dev/null; rm -rf "$TMP"; }
trap cleanup EXIT

curl --proto '=https' --tlsv1.2 -fsSL --retry 3 "$API" -o "$TMP/cask.json" || { log "Cannot reach cask API"; exit 1; }
get() { plutil -extract "$1" raw -o - "$TMP/cask.json" 2>/dev/null; }

if [ "$(uname -m)" = "arm64" ]; then
    URL=$(get url); SHA=$(get sha256)
else
    # Intel build is listed under macOS codename variations (all point to the same osx10 DMG)
    for k in tahoe sequoia sonoma ventura monterey; do
        URL=$(get "variations.$k.url") && SHA=$(get "variations.$k.sha256") && break
    done
fi
[ -n "${URL:-}" ] && [ -n "${SHA:-}" ] || { log "Could not resolve download URL"; exit 1; }
# The index is third-party: never download from anywhere but Adobe
case "$URL" in "$ADOBE_HOST"*) ;; *) log "Unexpected download host, aborting: $URL"; exit 1 ;; esac
log "Downloading $URL"

curl --proto '=https' --tlsv1.2 -fL --retry 3 -s "$URL" -o "$TMP/acc.dmg" || { log "Download failed"; exit 1; }
[ "$(shasum -a 256 "$TMP/acc.dmg" | awk '{print $1}')" = "$SHA" ] || { log "Checksum mismatch, aborting"; exit 1; }

mkdir -p "$MNT"
hdiutil attach "$TMP/acc.dmg" -nobrowse -readonly -mountpoint "$MNT" -quiet || { log "Mount failed"; exit 1; }

# Only run the installer if it is signed by Adobe (the checksum alone comes from the index)
codesign --verify --deep --strict \
    -R="anchor apple generic and certificate leaf[subject.OU] = \"$ADOBE_TEAM_ID\"" \
    "$MNT/Install.app" 2>/dev/null || { log "Signature check failed, aborting"; exit 1; }

log "Running silent installer"
"$MNT/Install.app/Contents/MacOS/Install" --mode=silent
RC=$?

if [ $RC -eq 0 ] && [ -d "$APP" ]; then
    log "Installed OK"
    exit 0
fi
log "Installer failed (exit $RC). See /Library/Logs/Adobe/Installers and ~/Library/Logs/CreativeCloud"
exit 1
```
