This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Application directory" – news ·newspapers ·books ·scholar ·JSTOR(October 2011) (Learn how and when to remove this message) |

Anapplication directory is a grouping ofsoftwarecode, help files and resources that together comprise a completesoftware package but are presented to the user as a single object.
They are currently used inRISC OS and theROX Desktop, and also form the basis of the Zero Install application distribution system. Similar technology includesVMware ThinApp, and theNEXTSTEP/GNUstep/Mac OS X concept ofapplication bundles. Their heritage lies in the system for automatically launching software stored onfloppy disk onAcorn's earlier 8-bit micros such as theBBC Micro (the!BOOT file).
Bundling various files in this manner allows tools for manipulating applications to be replaced by tools for manipulating thefile system. Applications can often be "installed" simply by dragging them from a distribution medium to a hard disk, and "uninstalled" by deleting the application directory.


In order to support user interaction with application directories, several files have special status.
Launching an application directory causes the included fileAppRun (ROX Desktop) or!Run (RISC OS) to be launched. On RISC OS this is generally an Obey file (a RISC OS command script) which allocates memory and loads OS extension modules andshared libraries before executing the application binary, usually called!RunImage. Under the ROX Desktop, it is not uncommon for it to be ashell script that will launch the correct system binary if available or compile a suitable binary from source otherwise.[citation needed]
Both RISC OS and the ROX Desktop allow the user to view help files associated with an application directory without launching the application. RISC OS relies on a file in the directory named!Help which is launched as if the user double-clicked on it when help is requested (and can be any format the system understands, but plain text and !Draw formats are common), while the ROX Desktop opens the application'sHelp subdirectory.
Similarly, custom icons for the Application Directory may be contained within it—either.DirIcon (in any supported image format) orAppIcon.xpm under the ROX Desktop, or!Sprites and optionally!Sprites22 under RISC OS. The RISC OS Filer automatically loads these sprite files in the absence of a!Boot file, otherwise it is left to the!Boot file to load the appropriate icons.

RISC OS application directories may contain a file named!Boot which is executed by theFiler either explicitly via theFilerBoot command, or when the bundle is first displayed (unless the user heldControl when opening thatFiler window, which defeats application booting[1]).
This allows an application to do tasks such as register supported filetypes (by defining their name, setting command aliases for running or printing them and loading appropriate icons), or choose to load different icons such asASprites (icons with an alpha channel for RISC OS Select),5Sprites (icons with a RISC OS 5 appearance) or theme-specific icons.
!Boot files are the most popular propagationvector for such RISC OSviruses as exist (such as the well-known Extend virus), though they can be defeated simply by holdingControl.
The!Boot feature is not duplicated by the ROX Desktop.
Acorn's early machines allowed a medium to be "booted" (automatically run) by executing a file called!BOOT if present (this action, "booting a disc", was toggled with theShift, and hence became known asshift-booting). This was exploited in the RISC OS disc structure by having an application directory in the root of the default disc called!Boot.
Thisapplication directory is executed (run) when the machine boots (if so configured), therefore causing its !Run file to be executed (i.e.$.!Boot.!Run in Acornpathname syntax). This file then causes various files to be executed, OS modules loaded, standard icons to be loaded and filetypes defined, and defines a number of standardvariables through which its various subdirectories are accessed. Thus RISC OS's entire boot sequence can be avoided merely by holding Shift.