Sommaire
ToggleContexte
Dans un environnement Modern Workplace, le déploiement d’applications macOS via Microsoft Intune est une pratique courante.
Cependant, de nombreuses applications macOS, comme Visual Studio Code, sont distribuées sous forme de fichiers .dmg contenant un bundle .app.
Ce format pose des contraintes spécifiques en environnement entreprise, notamment pour les utilisateurs standards.
Problématique
Contrairement à Windows, une application macOS est un bundle signé.
Toute modification de ce bundle peut entraîner :
- Une invalidation de la signature
- Un blocage par Gatekeeper
- Un message : “application endommagée”
Lors d’un déploiement via Intune, une mauvaise méthode de packaging peut donc rendre l’application inutilisable.
L’objectif est donc de :
- préserver l’intégrité du bundle
- permettre une installation pour utilisateurs standards
- garantir la compatibilité avec Intune
Prérequis
- Microsoft Intune configuré
- Appareils macOS enrôlés
- Accès administrateur
- Outil de packaging : Packages.app
- http://s.sudre.free.fr/Software/files/Packages.dmg
- DMG officiel de Visual Studio Code
Étape 1 – Télécharger et préparer l’application
Télécharger le DMG officiel depuis Microsoft.
Monter le DMG, puis :
- Copier l’intégralité du .app
- Ne jamais modifier ou ouvrir le contenu du bundle

Contenu du DMG avec Visual Studio Code.app
Étape 2 – Identifier les informations de l’application
Ouvrir le fichier :
Visual Studio Code.app/Contents/Info.plist
Récupérer :
- CFBundleIdentifier
- CFBundleShortVersionString
Ces informations seront utilisées dans le package.



Info.plist avec Bundle ID et version
Étape 3 – Créer un projet dans Packages.app
Ouvrir Packages.app :
- Créer un New Raw Package
- Structure attendue :
Project├ Settings├ Payload└ Scripts


Création du projet Raw Package
Activer :
- Remove .DS_Store
- Optimize nib files
Ne PAS activer :
- Remove SCM metadata
Cela peut casser la signature.
Étape 3.a – Configurer Settings
Copier les valeurs du Info.plist

Étape 4 – Configurer le Payload
Dans l’onglet Payload :
Glisser Visual Studio Code.app dans :
/Applications
Résultat attendu :
/Applications/Visual Studio Code.app
Aucun sous-dossier supplémentaire ne doit être créé.

Structure Payload correcte
Étape 5 – Configurer les permissions
Configurer les permissions du bundle :
- Owner : root
- Group : wheel
- Permissions : drwxr-xr-x
Permet aux utilisateurs standards d’exécuter l’application.
Étape 6 – (Optionnel) Script post-installation
Dans certains cas, macOS applique un attribut de quarantaine.
Script possible :
#!/bin/bashAPP="/Applications/Visual Studio Code.app"if [ -d "$APP" ]; then xattr -dr com.apple.quarantine "$APP" 2>/dev/nullfiexit 0

Ajout du script dans l’onglet Scripts
Étape 7 – Build du package
Compiler le projet :
Command + B
Résultat :
VSCode.pkg
Étape 8 – Vérifier la signature du .app (chemin à adapter)
spctl --assess --verbose '/Users/jonathan.duthil/Desktop/Visual Studio Code.app'
Résultat attendu :
acceptedsource=Notarized Developer ID

Vérification codesign / spctl
Étape 9 – Déploiement dans Intune
- Upload du .pkg
- Type : macOS LOB app
- Assignation : utilisateurs ou devices
Intune installe via :
/usr/sbin/installer
Vérification
Sur le poste :
- Application présente dans /Applications
- Lancement sans droits admin
Points d’attention / Troubleshooting
Application “endommagée”
- Bundle modifié
- Signature cassée
Structure incorrecte
.app dans un autre .app
Vérifier la structure
ls -la '/Applications/Visual Studio Code.app'
Structure attendue

Signature invalide
codesign --verify "app_path"
Gatekeeper bloque
spctl --assess "app_path"
Toujours :
- Ne pas modifier contents
- Ne pas supprimer des fichiers internes
- Tester localement avant Intune
Conclusion
Le déploiement d’applications macOS via Intune nécessite une bonne compréhension :
- du fonctionnement des bundles .app
- de la signature applicative
- des contraintes de sécurité macOS
Une approche rigoureuse permet de garantir un déploiement fiable, même pour des utilisateurs standards.
Auteur :
Jonathan Duthil
Administrateur Modern Workplace – Metsys Expertise : Intune | Entra ID | macOS Management

