Software Update:Processing Updates

From MozillaWiki
Jump to: navigation, search

This document describes the process of applying updates once they have been downloaded.

Overview

At startup or shutdown, a routine called from XRE_main may perform the following steps to process pending updates:

  • Check for the existance of an "updates" folder in the main application folder.
  • Enumerate its subfolders and build a list sorted by folder name.
  • Select the first folder in the list that is marked as pending.
  • Mark the selected folder as applying.
  • Copy the updater application into the folder for the update being applied.
  • Spawn the copy of the updater application to apply the selected update.
  • At this point, XRE_main exits. (NOTE: spawning the updater application may in fact mean that we call execv to load the updater image into the current process, but that is just an implementation detail.)
  • The updater takes over, applies the update (recording information to a log file for debugging purposes -- named update.log), and marks the update as either succeeded or failed.
  • The updater then (optionally) re-launches Firefox with a specified command line to resume execution.
  • Firefox then performs any post-install work, including for example fixing up any Windows registry keys.

Update Status

As described above, each update will have a status associated with it. The states consist of the following:

pending
The update is ready to be applied
applying
The update is being applied
succeeded
The update was successfully applied
failed
The update could not be applied

This information is recorded in a text file named update.status stored in each update folder.