Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
27 lines (15 sloc) 1.51 KB

Architecture

AppImage follows a very simple architecture, which is explained in this section.

Overview

An AppImage consists of two parts: a runtime and a filesystem image. For the current type 2, the filesystem in use is SquashFS.

AppImage file structure. Copyright © @probonopd 2017.

What happens when an AppImage is run is that the operating system runs the AppImage as an executable. The runtime, the executable part, tries to mount the filesystem image using :ref:`FUSE <ref-fuse>`. If that succeeds, the :ref:`AppDir <ref-appdir>` is available in a :ref:`temporary mountpoint <ref-temporary-mountpoint>`, and can be used like a read-only directory.

The runtime continues by calling the AppDir's "entrypoint" :ref:`AppRun <ref-apprun>` using the operating system facilities. There are no checks performed by the runtime, the operating system is simply tasked with the execution of <AppDir mountpoint>/AppRun. This provides a lot of flexibility, as AppRun can be an arbitrary executable, a script with a shebang, or even a simple symlink to another executable within the AppDir. The file must be executable.

The contents of an AppDir are completely user-specified, although there are tools that help with packaging. For more information, see the :ref:packaging guide <ref-packaging-guide>`.