Software Update:Processing Updates

From MozillaWiki
Jump to: navigation, search

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


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:

The update is ready to be applied
The update is being applied
The update was successfully applied
The update could not be applied

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