User:NThomas:Mar Generation
The aim of this page is to document changes in format of the mar container, and the files within it.
MAR container
Software_Update:MAR is the main documentation. To date the only major revision is ...
Signing (from Firefox 12.0b1)
bug 481815 added a maintenance service on Windows, which can install updates without user intervention (no password or UAC prompts). It landed in mozilla-central during the Firefox 12.0 cycle (see comment 481), and rode the trains to release. Initially it was for administrator accounts, but bug 711475 extended it to limited users accounts (shipped in Firefox 26.0).
To secure the update process a digital signature is added to the mar file, as well as a production information block. The latter labels the mar with a
- ProductVersion - the application of the bits contained by mar file
- ChannelID - the combination of the product name and code branch, eg firefox-mozilla-central, firefox-mozilla-beta.
These are set when the mar utility creates a mar file. Default values are set at compile time, but can be overridden by -V and -H arguments when mar is called. A signature can be added to an existing mar using the signmar utility; Release Engineering set up automated signing in bug 509158.
When it's time to apply a mar file, the updater checks the signature of the mar file using a builtin certificate, and uses the product information block to ensure that the version doesn't decrease, and that ChannelID is allowed in <install_dir>/update-settings.ini. More information about the process flow is available at Windows_Service_Silent_Update.
Signing of all platforms started with bug 974570 (Firefox 30.0), in preparation for verifying mar files on all platforms bug 973933.