10 points par GN⁺ 2025-12-09 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Les applications macOS possèdent des composants plus complexes que les programmes en ligne de commande, avec des ressources d’interface comme les fenêtres et les menus gérées dans une structure distincte
  • Sous Classic Mac OS, le code exécutable et les ressources étaient stockés dans le resource fork du fichier, mais à partir de Mac OS X, cela a été remplacé par une structure en bundle
  • Un bundle d’app est organisé autour du répertoire Contents, avec des sous-dossiers comme MacOS, Resources, Frameworks et des fichiers clés comme Info.plist
  • Par la suite, la signature de code, les reçus App Store et la notarisation ont été ajoutés, faisant évoluer cette structure pour renforcer la sécurité et l’intégrité
  • Cette structure autonome de bundle d’application est devenue une base essentielle pour simplifier l’installation, la mise à jour et la suppression, tout en améliorant la sécurité et l’efficacité de maintenance

Structure des apps dans Classic Mac OS

  • Dans les premières versions de Mac OS, les ressources d’interface comme les fenêtres et les menus étaient séparées de l’exécutable et stockées dans le resource fork
    • Par exemple, les ressources de QuarkXPress 4.11 apparaissent dans ResEdit
    • Le code exécutable est contenu dans les ressources CODE, et les informations de type et de creator du fichier y sont également stockées pour que le Finder puisse l’identifier

Structure en bundle dans Mac OS X

  • Mac OS X a introduit la structure en bundle héritée de NeXTSTEP
    • Une app prend la forme d’un répertoire avec l’extension .app, contenant un dossier Contents
    • Le dossier MacOS contient l’exécutable de l’app graphique ainsi que les outils en ligne de commande
    • Le dossier Resources stocke les fichiers de ressources tels que l’icône de l’app et les composants de l’interface graphique
    • Certaines apps incluent un dossier Frameworks pour embarquer des dylib (bibliothèques dynamiques)
  • Le fichier Info.plist est obligatoire et définit le nom de l’exécutable, l’icône, la version minimale de macOS, les types de documents, le numéro de version, etc.
  • Le fichier PkgInfo conserve les informations de type et de creator héritées de Classic Mac OS, mais n’est pas obligatoire
  • Lors du lancement d’une app, launchd démarre le code exécutable, tandis que LaunchServices et RunningBoard effectuent la procédure d’initialisation à partir des informations de Info.plist

Sécurité et extensions dans macOS

  • À partir de Mac OS X 10.5 Leopard (2007), la signature de code a été introduite, avec l’ajout du dossier _CodeSignature
    • Le fichier CodeResources contient le hash du répertoire de code (CDHash) pour vérifier l’intégrité de l’app
  • Les apps distribuées via l’App Store incluent un reçu du Store dans le dossier _MASReceipt
  • Depuis 2018, la notarisation a été introduite, permettant à Apple d’émettre un ticket pouvant être « staple » au bundle via le fichier CodeResources
  • Les bundles d’app modernes intègrent eux-mêmes des composants qui, autrefois, étaient installés dans des dossiers système
    • Dossier Library : LaunchDaemons, LoginItems, etc.
    • Dossier XPCServices : services exécutables séparés utilisés par l’app
    • Dossiers Plugins / Extensions : fonctionnalités d’extension de l’app et App Intents
    • Certaines apps contiennent également un fichier version.plist

Avantages du bundle d’application

  • Le fait de regrouper tous les composants dans le bundle simplifie l’installation, la mise à jour et la suppression
  • Le risque d’absence de composants diminue, et la sécurité est renforcée grâce à la protection par signature et notarisation
  • Les apps App Store ajoutent en plus des reçus et des tickets de notarisation pour renforcer la confiance
  • Il n’existe pas de différence structurelle entre les architectures Intel et Arm : l’exécutable Mach-O est stocké sous forme de binaire universel (fat binary) contenant le code pour les deux plateformes
    • Les signatures propres à chaque architecture sont également présentes dans le même fichier

Vue d’ensemble visuelle de la structure d’une app

  • Dans le diagramme, le jaune pâle désigne les composants obligatoires ou présents dans presque toutes les apps
  • Le vert désigne les éléments présents uniquement dans les apps distribuées via l’App Store, et le bleu correspond au ticket de notarisation optionnel
  • Des éléments supplémentaires comme des workflows Automator ou des scripts peuvent aussi être inclus
  • Dans l’ensemble, les apps macOS ont évolué vers une structure autonome centrée sur la sécurité

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.