Adobe CC & Acrobat

Comment déployer les applications Adobe (Creative Cloud, Acrobat) sur des appareils macOS via Relution et les maintenir à jour avec le Remote Update Manager.

Les applications Adobe ne peuvent pas être installées via Relution comme une application native classique. La raison : les paquets Adobe ne sont pas de simples installateurs silencieux — ils démarrent pendant l’installation leurs propres processus en arrière-plan (Creative Cloud Desktop / HyperDrive). Ceux-ci ne s’exécutent pas de manière fiable dans le contexte restreint de la commande MDM native — le téléversement du PKG réussit, mais l’installation se bloque ou échoue.

L’installation s’effectue donc via un script (macOS Companion). Les mises à jour sont gérées de manière centralisée via le Remote Update Manager.


Pourquoi un script est nécessaire

  • Installation : installer -pkg … -target / s’exécute avec les pleins droits root, comme documenté par Adobe. L’utilisateur connecté n’a pas besoin de droits administrateur.
  • Pas de transfert de fichier : le macOS Companion ne livre aucun fichier. Le PKG doit donc être récupéré (téléchargé) via le réseau.
  • Mises à jour : dans le paquet géré, la mise à jour automatique pour les utilisateurs finaux est désactivée. Les mises à jour s’effectuent via une tâche de mise à jour récurrente qui appelle le Remote Update Manager (RUM) — voir Mises à jour continues.

Préparer le paquet Adobe

Créer le paquet dans l’Admin Console #

  1. Connectez-vous à l’Adobe Admin Console et accédez à Packages.
  2. Créez un Managed Package. Sélectionnez toutes les applications à installer sur les appareils — plusieurs applications (par ex. Photoshop, Illustrator, Acrobat) sont regroupées dans un seul PKG.
  3. Dans les options de gestion, activez Remote Update Manager (RUM). Le binaire RUM est ainsi livré avec le PKG sur les appareils et sera disponible pour les mises à jour ultérieures.
  4. Téléchargez le paquet une fois terminé. L’installateur se trouve dans le dossier du paquet sous Build/<NomDuPaquet>_Install.pkg.

Remarque sur la répartition : si tous les utilisateurs reçoivent le même ensemble d’applications, un paquet combiné suffit. Si différents groupes doivent recevoir des applications différentes, créez un paquet distinct par application ou par ensemble et attribuez-le au groupe d’appareils correspondant. La tâche de mise à jour (voir ci-dessous) reste la même dans les deux cas.


Déployer le PKG

Comme le Companion ne livre aucun fichier, le PKG doit être hébergé à un emplacement accessible par le réseau, à partir duquel le script le télécharge — par ex. un serveur web interne ou un stockage cloud.

Important : utilisez un emplacement de stockage permanent. Le lien de téléchargement de l’Adobe Admin Console est temporaire et lié à la session ; il ne convient pas comme source fixe. Téléchargez le paquet une seule fois et hébergez-le vous-même. Veillez également à ce que le nom de fichier ne contienne aucun espace.


Scripts d’automatisation

Le déploiement se compose de deux tâches Relution : une installation initiale unique et une tâche de mise à jour récurrente.

Installation initiale (recommandée)

Les paquets Adobe pèsent souvent plusieurs gigaoctets. Un téléchargement direct dans un script Relution peut dépasser le délai d’expiration du script et être alors interrompu. Le script suivant contourne ce problème : il installe un LaunchDaemon qui exécute le téléchargement, l’installation et la première mise à jour de manière découplée en arrière-plan. Le script Relution lui-même se termine en quelques secondes.

Pour chaque paquet, définissez simplement PKG_URL et APP_LABEL.

#!/bin/bash
#
# Déploiement géré Adobe – TÂCHE 1 : Installation initiale
# Exécution via le Relution macOS Companion.

set -e

# --- Configuration (à adapter par paquet) ---
PKG_URL="https://votre-partage.example/Photoshop_Install.pkg"
APP_LABEL="photoshop"   # uniquement pour le nom du journal/daemon

LABEL="io.relution.adobe.${APP_LABEL}"
WORKER="/usr/local/relution/${LABEL}.sh"
PLIST="/Library/LaunchDaemons/${LABEL}.plist"
LOG="/var/log/relution_adobe_deploy.log"

if [ "$(id -u)" -ne 0 ]; then
    echo "ERREUR : doit être exécuté en tant que root." >&2
    exit 1
fi

mkdir -p "$(dirname "$WORKER")"

cat > "$WORKER" <<WORKEOF
#!/bin/bash
PKG_URL="${PKG_URL}"
APP_LABEL="${APP_LABEL}"
RUM_BIN="/usr/local/bin/RemoteUpdateManager"
PLIST="${PLIST}"
WORKER="${WORKER}"
LOG="${LOG}"

log() { echo "\$(date '+%Y-%m-%d %H:%M:%S') [\$APP_LABEL] \$1" | tee -a "\$LOG"; }
log "=== Installation initiale démarrée ==="

BEFORE="\$(find /Applications -maxdepth 2 -iname "Adobe*.app" 2>/dev/null | wc -l | tr -d ' ')"

TMP="\$(mktemp -d /tmp/adobe.XXXXXX)"
PKG="\$TMP/install.pkg"
log "Téléchargement du PKG : \$PKG_URL"
if caffeinate -i curl -fL --retry 4 --retry-delay 10 -C - "\$PKG_URL" -o "\$PKG" >>"\$LOG" 2>&1; then
    log "Téléchargement réussi. Installation..."
    installer -pkg "\$PKG" -target / >>"\$LOG" 2>&1 && log "installer réussi." || log "ERREUR : installer (\$?)."
else
    log "ERREUR : téléchargement échoué (\$?)."
fi
rm -rf "\$TMP"

if [ -x "\$RUM_BIN" ]; then
    log "Démarrage de RemoteUpdateManager..."
    "\$RUM_BIN" --action=install >>"\$LOG" 2>&1
    log "RUM terminé (RC \$?)."
else
    log "AVERTISSEMENT : RUM introuvable."
fi

AFTER="\$(find /Applications -maxdepth 2 -iname "Adobe*.app" 2>/dev/null | wc -l | tr -d ' ')"
log "Applications Adobe : avant \$BEFORE, après \$AFTER"
find /Applications -maxdepth 2 -iname "Adobe*.app" 2>/dev/null | while read -r a; do
    mdimport "\$a" 2>/dev/null || true
    VER="\$(defaults read "\$a/Contents/Info.plist" CFBundleShortVersionString 2>/dev/null || echo '?')"
    log "  - \$a (version \$VER)"
done

log "=== Terminé, nettoyage ==="
launchctl bootout system "\$PLIST" 2>/dev/null || true
rm -f "\$PLIST" "\$WORKER"
WORKEOF

chmod 700 "$WORKER"

cat > "$PLIST" <<PLISTEOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key><string>${LABEL}</string>
    <key>ProgramArguments</key>
    <array><string>/bin/bash</string><string>${WORKER}</string></array>
    <key>RunAtLoad</key><true/>
    <key>StandardErrorPath</key><string>${LOG}</string>
</dict>
</plist>
PLISTEOF

chown root:wheel "$PLIST"
chmod 644 "$PLIST"

launchctl bootout system "$PLIST" 2>/dev/null || true
launchctl bootstrap system "$PLIST"
echo "Bootstrap ok : $LABEL démarré."
exit 0

Le résultat est journalisé dans /var/log/relution_adobe_deploy.log.

Mises à jour continues #

Configurez ce script comme une tâche Relution récurrente (par ex. hebdomadaire). Il ne nécessite aucun téléchargement — le Remote Update Manager récupère les mises à jour directement auprès d’Adobe. Sans indication de produits, toutes les applications Adobe installées sont mises à jour ensemble ; une tâche distincte par application n’est pas nécessaire.

#!/bin/bash
RUM_BIN="/usr/local/bin/RemoteUpdateManager"
RUM_PRODUCTS=""   # vide = toutes les applications ; sinon codes SAP, par ex. "APRO,PHSP"
LOG="/var/log/relution_adobe_update.log"

log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG"; }

if [ ! -x "$RUM_BIN" ]; then
    log "ERREUR : RUM introuvable – une application Adobe est-elle installée ?"
    exit 2
fi

log "=== Mise à jour RUM démarrée ==="
if [ -n "$RUM_PRODUCTS" ]; then
    "$RUM_BIN" --action=install --productVersions="$RUM_PRODUCTS" >>"$LOG" 2>&1
else
    "$RUM_BIN" --action=install >>"$LOG" 2>&1
fi
log "RUM terminé (RC $?)."

Codes SAP pour la mise à jour ciblée d’applications individuelles : APRO (Acrobat), PHSP (Photoshop), ILST (Illustrator), IDSN (InDesign), PPRO (Premiere Pro), AEFT (After Effects).

Alternative : libre-service #

Si les utilisateurs doivent installer leurs applications Adobe eux-mêmes, plutôt que via un déploiement centralisé, créez à la place un paquet Self-Service dans l’Admin Console (ou activez dans le paquet les options « Enable self-service install » et « Allow non-admins to update and install apps »). Le script installe alors uniquement l’application Creative Cloud Desktop ; les utilisateurs choisissent et installent ensuite eux-mêmes les applications proprement dites. Cela nécessite une licence Named User avec des profils de produits adaptés. Une tâche de mise à jour centralisée n’est pas nécessaire, les mises à jour passant par l’application Desktop.

#!/bin/bash
#
# Libre-service – installe uniquement l'application Creative Cloud Desktop.
# Les utilisateurs installent ensuite eux-mêmes les applications proprement dites.

PKG_URL="https://votre-partage.example/CreativeCloud_Install.pkg"

if [ "$(id -u)" -ne 0 ]; then
    echo "ERREUR : doit être exécuté en tant que root." >&2
    exit 1
fi

TMP="$(mktemp -d /tmp/ccda.XXXXXX)"
PKG="$TMP/install.pkg"

echo "Téléchargement de l'application Creative Cloud Desktop..."
if caffeinate -i curl -fL --retry 4 --retry-delay 10 -C - "$PKG_URL" -o "$PKG"; then
    installer -pkg "$PKG" -target /
    RC=$?
else
    echo "ERREUR : téléchargement échoué."
    rm -rf "$TMP"
    exit 1
fi
rm -rf "$TMP"

if [ "$RC" -eq 0 ]; then
    echo "Application Creative Cloud Desktop installée."
    exit 0
else
    echo "ERREUR : installation échouée (RC $RC)."
    exit 1
fi

Remarque : si le paquet est très volumineux et que le téléchargement direct dépasse le délai d’expiration du script, utilisez la variante LaunchDaemon découplée de l’installation initiale — définissez simplement PKG_URL sur le paquet de l’application Creative Cloud Desktop et omettez l’étape RUM.


Surveillance du statut via la Conformité de l’application #

Dans cette configuration, l’installation s’effectue via le scriptaucun PKG n’est téléversé dans Relution. La Conformité de l’application ne sert donc pas à la distribution, mais à la surveillance du statut : vous ajoutez l’application manuellement et définissez l’identifiant de bundle choisi précédemment comme règle de détection.

  1. Ajoutez manuellement une application dans la Conformité de l’application (sans téléversement de PKG).
  2. Définissez l’identifiant de bundle comme règle de détection, par ex. com.adobe.acc.AdobeCreativeCloud.
  3. Relution vérifie régulièrement, à partir de cet identifiant, si l’application est présente sur l’appareil.
  4. Les appareils sans l’application sont marqués comme Non conformes. Le script d’installation peut ensuite y être (ré)exécuté.

Détection spécifique à une application (par ex. seulement Photoshop) : l’inventaire ne fournit pas de marqueur dédié pour cela. Dans ce cas, seule la preuve CC générique peut être utilisée, qui confirme le paquet (et non l’application individuelle).


Remarques #

  • Licence (Named User Licensing) : après l’installation, l’utilisateur se connecte avec son identifiant Adobe au premier lancement. Chaque application nécessite un profil de produit correspondant dans l’Admin Console — sans droit d’accès, l’application est installée mais inutilisable.
  • Montées de version majeures : le Remote Update Manager ne met à jour qu’au sein de la version majeure installée (mises à jour de base et de sécurité). Le passage à une nouvelle génération annuelle nécessite un nouveau paquet.
  • Environnements éducatifs : pour les clients Adobe Éducation, la mise à jour automatique pour les utilisateurs finaux n’est pas disponible ; la gestion via le Remote Update Manager est ici la voie prévue.
  • Spotlight : le script d’installation initiale indexe les applications installées via mdimport, afin qu’elles soient immédiatement trouvables via la recherche Spotlight — et pas seulement dans le Finder.

Top