I’m coming at this from the Windows world… On Windows, we have Windows Installer packages (MSI files) that are processed by a system component (Windows Installer) to install applications (the idea being that this system component tracks references to libraries and implements transactional installation, theoretically avoiding botched installations)…
Could someone explain the architecture and process of how an application gets installed on OSX? Is there a corresponding component to Windows Installer? And if so, how would I go about using it for my applications?
Applications are normally packaged into “bundles” with the
.appextension. These bundles contain the binary (usually Mach-O) and any other resources the application needs to run; these usually include:These bundles are normally kept in the
/Applications/folder, although they can be moved around and placed anywhere on the filesystem (the bundle format makes moving these applications around easier).The common method to install an application is to download an Apple Disk Image file (extension
.dmg) which is mounted as a disk drive on the user’s OS; the application is then actually installed in two main ways:.pkg) which provides a “Wizard” installation procedure, and is used when the installation is configurable (where the user can choose which extra dependencies to install etc). The free Apple toolPackageMakercan be used to create these packages.