Comment les applications MacOS installées à partir de paquets .dmg utilisent-elles les bibliothèques communes comme les .dll-s de Windows ou les .so/autres de Linux ? Est-ce que les applications MacOS installées avec la taille optimale et ne font pas de doublons des bibliothèques/codes communs ?


Eh bien, un DMG est juste une image disque. Cela signifie qu'il n'y a pas d'installateur inhérent à appeler, donc généralement quand un DMG est utilisé, le contenu est un dossier qui a tout ce dont il a besoin pour fonctionner, stocké dans la structure .application. Ces dossiers ressemblent et se comportent comme des applications, mais ce sont des dossiers qui contiennent beaucoup de bibliothèques et d'applications, et diverses aides nécessaires au fonctionnement de l'application. En tant que tels, vous ne les installez pas réellement, vous les copiez.


J'ai vu certains fichiers DMG qui contiennent des fichiers PKG. Ceux-ci peuvent également inclure des installateurs us ainsi. Un fichier PKG est un paquet d'installation standard qui peut faire plus de choses dans le cadre de l'installation, et est généralement utilisé par les anciennes applications, ou celles qui veulent utiliser le format de paquet 📦 à des fins de personnalisation. Dans ce cas, ils peuvent offrir à l'utilisateur des options pour des bibliothèques tierces, mais cela casse vraiment le modèle Mac où tout est simple et autonome. Si vous installez une application qui nécessite une bibliothèque tierce, vous êtes à la merci de l'application tierce. C'est l'enfer du versionnage des DLL que nous avons avec Windows et le versionnage des SharedObjects que nous avons avec Linux. Il est vrai que quiconque sait ce qu'il fait peut contourner ce problème, mais les Macs essaient de s'adresser à tout le monde, et ils devraient être faciles à utiliser pour les personnes qui ne savent pas ce qu'est un fichier SO ou DLL. Donc, pour cette raison, la plupart des bonnes applications utiliseront simplement un DMG, ou si elles utilisent un PKG, elles l'utilisent pour simplement l'installer, ou le personnaliser, et non pour optimiser le stockage en utilisant des bibliothèques de tierce partie.