Changes

Jump to: navigation, search

Background Updates

1,941 bytes added, 22:48, 17 October 2011
no edit summary
This page describes the technical plan to move the process of applying the updates in Firefox to the background as opposed to at startup. In order to get a clear idea about the scope of the project, please see the Goals and Non-Goals sections below.
= Goals = # Moving the update process to the background# Initiating the update process as soon as an update is downloaded# Being able to apply a newer update if Firefox was not restarted since the previous update was applied in the background# Try to do as little as possible at startup
# Eliminate the progress bar UI that the current updater shows
= Non-Goals = # Handling UAC prompts on Windows# Changing the frequency of checking for updates, our handling of major/minor updates, or the way we check for add-ons compatibility# Eliminating the UI we display in Step 2# Changing how updates work on Android
# Any of the other projects falling under the "silent update" umbrella
 
= Implementation =
 
Here is a proposal for how background updates will be implemented.
 
* The process will start by Firefox checking for an update in the background (as it does today).
* Once an update is found
** If the user needs to prompted for some reason, we show that prompt. If the user declines, we bail out.
** Otherwise, we go ahead and download the update (as a complete/partial MAR file) in the background.
* Once the download is finished, Firefox launches the updater binary in the background with the UI display disabled.
** The target of the update will be known <code>FIREFOX_NEW</code> from now on.
*** On Windows, if Firefox is installed to "C:\path\to\Mozilla Firefox", <code>FIREFOX_NEW</code> will be "C:\path\to\Mozilla Firefox.new".
*** On Mac, if Firefox is installed to "/path/to/Firefox.app", <code>FIREFOX_NEW</code> will be "/path/to/Firefox.app/Updated.app". In other words, the updated version of Firefox will be installed as a bundle inside the existing Firefox bundle.
*** On Linux, if Firefox is installed to a flat directory like "/path/to/firefox", <code>FIREFOX_NEW</code> will be "/path/to/firefox.new". If it's installed in a non-flat directory structure (like /usr/bin for example), the details of where <code>FIREFOX_NEW</code> will be is TBD.
** The manifest file will be known as a file named "update.pending" located in the root of the existing Firefox installation.
* The updater binary checks to see if there is an existing manifest file.
** If this file exists, it will be removed.
* The updater binary checks to see if there is an existing <code>FIREFOX_NEW</code> directory.
** If this directory exists, it will be removed.
* The updater binary will go ahead and apply the update to the <code>FIREFOX_NEW</code> directory using the existing installation directory as the base.
* The updater binary will write a new manifest file to the existing installation's directory.
Confirm
657
edits

Navigation menu