HOME

TheInfoList



OR:

In
NeXTSTEP NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
,
OPENSTEP OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
, and their lineal descendants
macOS macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
iOS Ios, Io or Nio (, ; ; locally Nios, Νιός) is a Greek island in the Cyclades group in the Aegean Sea. Ios is a hilly island with cliffs down to the sea on most sides. It is situated halfway between Naxos and Santorini. It is about long an ...
,
iPadOS iPadOS is a mobile operating system developed by Apple for its iPad line of tablet computers. It was given a name distinct from iOS, the operating system used by Apple's iPhones to reflect the diverging features of the two product lines, suc ...
,
tvOS tvOS (formerly Apple TV Software) is an operating system developed by Apple for the Apple TV, a digital media player. In the first-generation Apple TV, Apple TV Software was based on Mac OS X. The software for the second-generation and later ...
,
watchOS watchOS is the operating system of the Apple Watch, developed by Apple Inc., Apple. It is based on iOS, the operating system used by the iPhone, and has many similar features. It was released on April 24, 2015, along with the Apple Watch, the o ...
, and
visionOS visionOS is a mixed reality operating system derived primarily from iPadOS and its core frameworks (including UIKit, SwiftUI, ARKit and RealityKit), and MR-specific frameworks for foveated rendering and real-time interaction. It was develope ...
, and in
GNUstep GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project. GNUst ...
, a bundle is a file directory with a defined structure and file extension, allowing related files to be grouped together as a conceptually single item. Examples of bundles that contain executable code include
applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a ...
, frameworks, and plugins. This kind of bundle usually contains one file representing executable code, and files that represent resources such as nibs, templates, images, sounds, and other media. On some other systems, such as
Microsoft Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, these resources are usually included directly in the executable file itself at compile time. On older Macintoshes, a similar technique is used, where additional
metadata Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including: * Descriptive ...
can be added to a file's
resource fork A resource fork is a fork of a file on Apple's classic Mac OS operating system that is used to store structured data. It is one of the two forks of a file, along with the data fork, which stores data that the operating system treats as unstruct ...
. Similar in concept are the application directories used in
RISC OS RISC OS () is an operating system designed to run on ARM architecture, ARM computers. Originally designed in 1987 by Acorn Computers of England, it was made for use in its new line of ARM-based Acorn Archimedes, Archimedes personal computers an ...
and on the
ROX Desktop The ROX Desktop is a discontinued graphical desktop environment for the X Window System. It is based on the ROX-Filer, a drag and drop spatial file manager. It is free software released under the GPL-2.0-or-later. The environment was inspire ...
. Examples of bundles that do not contain executable code include document packages (
iWork iWork is an office suite of applications created by Apple Inc., Apple for its macOS, iPadOS, and iOS operating systems, and also available cross-platform through the iCloud website. iWork includes the presentation program, presentation applicat ...
documents) and media libraries (
iPhoto iPhoto is a discontinued image editing software application developed by Apple Inc. for use on its Mac OS X operating system. It was included with every Mac computer from 2002 to 2015, when it was replaced with Apple's Photos application in ...
Library). Bundles are programmatically accessed with the NSBundle class in Cocoa, NeXTSTEP and GNUstep's Foundation frameworks, and with CFBundle in
Core Foundation Core Foundation (also called CF) is a C application programming interface (API) written by Apple Inc. for its operating systems, and is a mix of low-level routines and wrapper functions. Most Core Foundation routines follow a certain naming c ...
. Bundles often include an file for metadata. The Uniform Type Identifier (UTI) for an Apple bundle is com.apple.bundle.


Application bundles

Application bundles are directory hierarchies, with the top-level directory having a name that ends with a .app extension. In a macOS application bundle, the first directory in the bundle underneath the top-level directory is usually named Contents. Within Contents there is usually another directory, called MacOS, which contains the application's executable code. The Contents folder contains a file named Info.plist, which contains application information, such as the software vendor's name, name of the files that contain the applications executable and icon, the version of the application, permissions requested, etc. Within the Contents folder there is usually also a directory called Resources, which contains the resources of the application. Among other things, the Resources folder contains localized versions of the application's nib files. Other common subdirectories include PlugIns, Frameworks, _CodeSignature and Shared Frameworks. The Frameworks directory contains frameworks used by the application, and are used even if another version of the framework exists on the system. The Shared Frameworks directory contains frameworks that can be used both by the application that contains them, and other applications; they are used only if a newer version does not exist elsewhere on the system. PlugIns contains extensible code used by the application. The _CodeSignature folder contains information used by the system to validate that the package to establish that the package originates from a trusted party, and has not been tampered with. By default, the Finder displays application bundles, which can also be referred to as packages, as opaque files with no underlying structure; the contents of the bundle can be shown with the "Show Package Contents"
context menu A context menu (also called contextual, shortcut, and pop up or pop-up menu) is a menu in a graphical user interface (GUI) that appears upon user interaction, such as a right-click mouse operation. A context menu offers a limited set of choic ...
item. GNUstep by default uses the name of the application to name the folder that contains application code. An alternative is to name them by the computer architecture and OS the code is intended for to form a fat binary, so the application can be opened on many platforms.


macOS framework bundles

macOS frameworks are also stored as bundles; the top-level directory of a framework bundle has a name that is the name of the framework followed by the extension .framework. In the top-level directory is a Versions directory, with subdirectories for one or more versions of the framework, each subdirectory containing the dynamic library code for the framework, in a file whose name is the same as the name of the framework, possibly with a Headers folder containing
header file An include directive instructs a text file processor to replace the directive text with the content of a specified file. The act of including may be logical in nature. The processor may simply process the include file content at the location of ...
s for the framework, and other subfolders such as Resources. The Versions directory also contains a symbolic link Current to the directory for the current version of the framework. In the top-level directory are symbolic links to the contents of Versions/Current. The Finder displays framework bundles as directories rather than as opaque files. Although GNUstep uses frameworks, they are not usually stored as bundles. This is because the full semantics of framework loading are considered too alien to other platforms.


Loadable bundles

Loadable bundles are bundles which contain code that can be loaded at runtime. Loadable bundles usually have the extension .bundle, and are most often used as plug-ins. On macOS, there is a way to load bundles even into applications that do not support them, allowing for third party hacks for popular applications, such as
Safari A safari (; originally ) is an overland journey to observe wildlife, wild animals, especially in East Africa. The so-called big five game, "Big Five" game animals of Africa – lion, African leopard, leopard, rhinoceros, African elephant, elep ...
and
Apple Mail Mail, also known as Apple Mail, is an email client included by Apple Inc. with its operating systems macOS, iOS, iPadOS, watchOS, and visionOS. Mail grew out of NeXTMail, which was originally developed by NeXT as part of its NeXTSTEP operating ...
. A feature inherited from NeXTSTEP, GNUstep has the interface too. By default, the Finder displays loadable bundles, which can also be referred to as packages, as opaque files with no underlying structure; the contents of the bundle can be shown with the "Show Package Contents"
context menu A context menu (also called contextual, shortcut, and pop up or pop-up menu) is a menu in a graphical user interface (GUI) that appears upon user interaction, such as a right-click mouse operation. A context menu offers a limited set of choic ...
item.


Other bundle formats

There are many macOS applications which utilize their own custom bundle format (e.g., CandyBar .iContainer,
Aperture In optics, the aperture of an optical system (including a system consisting of a single lens) is the hole or opening that primarily limits light propagated through the system. More specifically, the entrance pupil as the front side image o ...
.aplibrary,
VMware Fusion VMware Fusion is a software hypervisor developed by VMware for macOS systems. It allows Macs with Intel or Apple M series CPUs to run virtual machines with guest operating systems, such as Microsoft Windows, Linux, or macOS, within the host m ...
.vmwarevm, etc.).


.lproj

An .lproj file is a bundle that contains localization files for OpenStep, macOS, or GNUstep software. It typically contains the .nib files for a given language along with .strings files and images if needed (for example,
ReadMe In software distribution and software development, a README file (computing), file contains information about the other files in a directory (file systems), directory or archive (computing), archive of computer software. A form of Software doc ...
or license files). These localized files are used by installer makers to customize install packages. They are also included in an application bundle.


See also

* Application Directory — the
RISC OS RISC OS () is an operating system designed to run on ARM architecture, ARM computers. Originally designed in 1987 by Acorn Computers of England, it was made for use in its new line of ARM-based Acorn Archimedes, Archimedes personal computers an ...
analogue to an application bundle * AppImage — A Linux application that makes use of similar principles * App — A HarmonyOS application that makes use of similar principles * Rich Text Format Directory — the RTF extension by Apple using bundles


References


External links


Bundle Programming Guide
at Apple Developer Connection

from the GNUstep project
Platypus
— a tool to create application bundles around scripts
File extension details
{{DEFAULTSORT:Application Bundle NeXT MacOS MacOS development GNUstep