Software Update:Processing Updates
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.
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.