Automatic updates

    Note Automatic updates only works for browsers using GitHub to host their binaries.

    Mozilla provides an automatic update service that can be used by anyone building a Firefox fork or any other application that depends on Mozilla toolkit.

    Attached to your "brand", you will need to include information regarding that brand's release. For example, Pulse has the following information attached to its alpha brand.

    {
      ...,
      "brands": {
        ...,
        "alpha": {
          ...,
    
          "release": {
            "displayVersion": "1.0.0-a.17",
            "github": {
              "repo": "pulse-browser/browser"
            },
            "x86": {
              "windowsMar": "windows.mar",
              "macosMar": "macosIntel.mar",
              "linuxMar": "linux.mar"
            }
          }
        }
      },
      ...
    }
    

    The release key includes both the latest version (displayVersion) and release info. In this case, binaries are released to github. For x86, we provide a number of .mar files for each platform. .mar files are "Mozilla Archives" and are used to distribute updates.

    When creating update manifests, they will point to the release tagged displayVersion. The update manifests tell Mozilla's updater to download the update manifest with the version that corresponds with the file name above. So an x86 linux computer will download the linux.mar file and use that to update.

    Creating MAR files and update manifests

    Both .mar files and the update manifests are automatically created by running gluon package. This will generate a number of files in the dist directory.

    An output.mar will be included in the root, which you should rename to the appropriate platform. For example, linux.mar for linux. This should be included with your GitHub release.

    Update manifests are stored in the dist/update directory. The contents of this directory should be uploaded to a webserver (e.g. GitHub Pages or S3) such that their root is at /updates/browser/.

    You will then need to set the updateHostname in gluon.json to the url of your update server. For Pulse, this is updates.pulsebrowser.app. You may also need to change the update server specified here.