Install Wizards (aka: Stub Installers)

Warning: The content of this article may be out of date. See Bundles for the current documentation.

What do we mean by installer package?

An installer package is an archive file (called xpi--pronounced "zippies"--because of its .xpi extensions) in Phil Katz zip format. It contains some files to be installed and the install script, usually named install.js, which contains JavaScript directives for actions to take during an install including adding files and directories, removing old or obsolete files and directories, executing command line tools, etc. To learn more about the XPInstall and installer packages please refer to The Annotated Browser XPI Installer and the XPInstall API Reference.

What do we mean by engine code?

The XPInstall engine processes installer packages by reading instructions from their install scripts to extract files and take other install actions. The same XPInstall engine is used by the browser and the stub installers on all platforms.

The XPInstall engine source resides at: <>

What do we mean by stub installer?

The install wizards used to install mozilla are lightweight stubs targeted to be around 200 KB disk footprint. Users download the stub installers, choose which packages to install, choose the destination directory for the installation, and select from various other options. Subsequently, when users click the "Install" button the install wizard downloads and installs only the selected software packages. This saves low-bandwidth users considerable time since they do not need to download software packages they may not be interested in. (The stub installer accomplishes this by downloading the XPInstall engine along with the selected software packages. It then proceeds to extract the XPInstall engine and feed it the downloaded software packages to install.)

The stub installer code includes:

  • the logic to display the install wizard widgets and dialogs
  • the code that reads in the configuration file (config.ini) and dynamically installs from the net or from local xpi modules found next to the installer binary
  • the code that processes user selections
  • the code that calls the XPInstall engine through xpistub
  • the libxpnet code that is statically linked in

The stub installers are written in code native to the platform using native widget toolkits including the windows API for windows, the mac toolbox for the mac, and gtk for the unix version. To learn more about the three platform-specific versions of the stub installer follow the links below:

  1. Unix Stub Installer
  2. Mac Stub Installer
  3. Windows Stub Installer

What do we mean by xpistub?

The XPInstall engine is not called directly by the stub installer. The stub installer calls some glue code: xpistub which resides at: <> This "glue" code initialized XPCOM and registers the XPInstall engine and requisite components to prepare for use by the stub installer. The stub installer hands off one-by-one a series of xpis to install.

What do we mean by libxpnet?

Cross-platform functionality for making file transfers across a network is provide by the library libxpnet. Complete details about this library is available at libxpnet: Architecture and API Overview.

Original Document Information