自動アップデート

Firefox・Thunderbirdの自動アップデートを禁止したい

キーワード?機能制限 / 集中管理 / 自動アップデート

無用なトラブルを避けるため、ユーザが使用中にFirefoxやThunderbirdが自動アップデートを行わないよう設定することができます。

設定方法

FirefoxやThunderbirdの自動アップデートを禁止する最も簡単な方法は、アドオン Disable Auto Updateを使うことです。 管理者によるアドオンのインストール手順に従ってDisable Auto Updateを導入すると、以下の機能が完全に無効化されます。

  • FirefoxおよびThunderbirdが定期的に自身のアップデート情報を取得する。
  • Firefoxが検索エンジンの自動アップデート情報を取得する。
  • 「オプション」から自動アップデートの設定を変更する。

また、単に自動アップデート情報の取得処理を無効化するだけであれば、MCD(AutoConfig)などを使って以下の設定を反映することによっても実現可能です。

lockPref("app.update.auto", false);
lockPref("app.update.enabled", false);
lockPref("browser.search.update", false);

Firefox・Thunderbirdの自動アップデートについて、メジャーアップデートは禁止し、マイナーアップデートのみ自動で適用したい

キーワード?機能制限 / 集中管理 / 自動アップデート

FirefoxやThunderbirdのESR版は通常、あるメジャーバージョンのサポートが終了すると、自動アップデート経由で次のメジャーバージョンにアップデートされます。例えばFirefox 17.0.11ESRは、順次Firefox 24ESRへアップデートされます。

このようなメジャーバージョンの変更を伴う自動アップデートの適用を禁止し、マイナーバージョンの変更のみを適用するよう設定することができます。

設定方法

FirefoxやThunderbirdのメジャーアップデートを禁止する最も簡単な方法は、アドオン Only Minor Updateを使うことです。 管理者によるアドオンのインストール手順に従ってOnly Minor Updateを導入すると、メジャーバージョンが異なるアップデートは適用されないようになります。

注意事項

このアドオンは、内部的に app.update.url.override を上書きします。そのため、この設定を用いて自動アップデート情報の提供元を変更するカスタマイズとの併用はできません。 自動アップデート情報の提供元を変更する場合は、提供する自動アップデート情報の側で、マイナーアップデートの情報のみを提供する形で運用して下さい。

Firefox・Thunderbirdの自動アップデートの提供タイミングを組織内で制御したい

キーワード?機能制限 / 集中管理 / 自動アップデート

通常、FirefoxやThunderbirdはMozillaが公式に提供しているアップデート情報に基づいて自動アップデートを行いますが、設定変更により、組織内のサーバなどをアップデート情報の提供元にすることができます。これにより、自動アップデートの適用タイミングを制御できます。

設定方法

Firefox 24.1.1ESRが導入済みのクライアントをFirefox 24.2.0ESRに更新するための情報およびファイルを静的なファイルとして提供する場合を例として、手順を説明します。

  1. アップデート用のアーカイブファイルをMozillaのFTPサーバから入手します。
    • FTPサーバ上には各バージョンのアップデート用差分ファイル、完全アップデート用アーカイブファイルが保存されており、以下のようなURLでダウンロードすることができます。 ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/24.2.0esr/update/win32/ja/
    • ファイル名に partial と付いている物は差分アップデート用ファイル、completet と付いている物は完全アップデート用ファイルです。差分アップデート用ファイルはファイル名で示されている更新前バージョンに対してのみ適用できます。
  2. 1でダウンロードしたファイルを、自組織内からアクセスできるHTTPサーバ上に設置します。 Sambaサーバ上のファイルにファイルとしてアクセスする形態や、ローカルのファイルシステムにマウントしてファイルとしてアクセスする形態では利用できず、あくまでHTTP経由でダウンロードできる状態にしておく必要があります。
  3. 以下のような内容で、自動アップデート情報提供用のXMLファイル update.xml を用意します。

    <?xml version="1.0"?>
    <updates>
      <update type="minor"
              displayVersion="更新後バージョン番号の表示名"
              appVersion="更新後バージョン番号"
              platformVersion="更新後バージョン番号"
              buildID="更新後バージョンのビルドID"
              actions="silent">
        <patch type="complete"
               URL="marファイルのダウンロード用URL"
               hashFunction="ハッシュ関数の種類"
               hashValue="marファイルのハッシュ"/>
      </update>
    </updates>
    

    例えばFirefox 24.2ESRへの更新で、ハッシュをSHA-512で用意するのあれば、以下のようになります。

    <?xml version="1.0"?>
    <updates>
      <update type="minor"
              displayVersion="24.2.0esr"
              appVersion="24.2.0"
              platformVersion="24.2.0"
              buildID="20131205180928"
              actions="silent">
        <patch type="complete"
               URL="marファイルのダウンロード用URL"
               hashFunction="SHA512"
               hashValue="marファイルのSHA-512ハッシュ"/>
      </update>
    </updates>
    
  4. 3で用意したファイルをクライアント上のローカルファイル、ファイル共有サーバ上のファイル、HTTPサーバ上のファイルのいずれかの形で設置し、クライアントから取得できるようにします。

  5. MCD(AutoConfig)などを使って、文字列型の設定 app.update.url.overrideユーザ設定値に4で設置したファイルのURL文字列を指定します。
    • ローカルファイルやファイル共有サーバ上のファイルである場合は、file:/// から始まるファイルURLを指定します。
    • MCDを使う場合、ディレクティブとしては lockPref()defaultPref() ではなく pref() を使用します。

以上で更新情報の提供準備ならびにクライアントの設定は完了です。以後は、サーバ上に設置した update.xml ならびにアップデート用のアーカイブファイルを適宜更新するようにして下さい。

詳細な情報は更新サーバの設定 - Mozilla | MDNを参照して下さい。

確認方法

以下の通り設定を変更すると、自動アップデートの処理が10秒ごとに行われるようになります。この状態で エラーコンソール もしくは ブラウザコンソール を表示すると、自動アップデート処理の詳細なログが表示されます。更新情報の取得に成功しているかどうか、取得した更新情報の読み込みに成功しているかどうかなどを確認するのに利用できます。

  • app.update.timerMinimumDelay(整数):10
  • app.update.promptWaitTime(整数):1
  • app.update.interval(整数):10
  • app.update.log(真偽):true
  • app.update.log.all(真偽):true

注意事項

上記手順での設定後は、SSLを使用しない限り、更新情報の提供元自体が正しいかどうか(中間者攻撃を受けていないかどうか)の検証は行われない状態となります。信頼できないネットワークを経由する場合は、SSLを使って安全に更新情報を取得できるようにして下さい。

自動アップデート機能を使わずにFirefox/Thunderbirdを差分更新したい

キーワード?自動アップデート

FirefoxやThunderbirdの自動アップデート機能は、通常のインストーラよりも遙かに小さい差分ファイルをダウンロードしてアプリケーションを更新するようになっています。 この差分更新用のファイルを使った差分更新処理は、自動アップデート機能を使わずとも、任意のタイミングで実行することができます。 これにより、自動アップデート機能自体は無効にしておきつつ、必要に応じてシステムのログオンスクリプトを使って任意のタイミングでの差分更新を適用する、という形での運用が可能です。

 差分ファイルの入手

差分アップデートの適用時には、アップデート用差分ファイルを公式のFTPサイトから入手する必要があります。 URLの凡例は以下の通りです。

ftp://ftp.mozilla.org/pub/mozilla.org/[製品名]/releases/[アップデート先バージョン]/update/win32/ja/[製品名]-[アップデート元バージョン]-[アップデート先バージョン].partial.mar

例えばFirefox 30からFirefox 31へアップデートする場合に必要な差分ファイルは以下の場所から入手できます。

ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/31.0/update/win32/ja/firefox-30.0-31.0.partial.mar

差分ファイルによるアップデートを行うには、現在インストールされているFirefoxのバージョンに対応した差分ファイルが必要となります。 差分ファイルが想定する「アップデート前のバージョン」が現在インストールされているFirefoxのバージョンに一致しない場合、差分アップデートは行えません。

通常、公式のFTPサイトでは特定バージョンのFirefoxに対して、それ以前のいくつかのバージョンからの差分アップデート用のファイルのみが配布されています。 差分ファイルが用意されていないパターン、例えばFirefox 25.0からFirefox 31へアップデートするというような、間のバージョンを多数飛ばしたアップデートは原則として行えないものとご理解下さい。

差分更新の適用手順の凡例

Firefoxの差分更新用ファイルを用いて際の手順は以下の通りです。

  1. 管理者権限でコマンドプロンプトを起動する。 Windows XPの場合、Administrator権限のあるユーザで コマンドプロンプトを起動する。 Windows Vista以降の場合、スタートメニューの 「すべてのプログラム」→「アクセサリ」→「コマンド プロンプト」を 右クリックして「管理者として実行」を選択する。

  2. 先の方法で入手した差分アップデート用のファイル (firefox--.partial.mar)を作業ディレクトリに 「update.mar」というファイル名で配置する。

    > copy firefox-*.partial.mar "<作業ディレクトリのパス>\update.mar"
    
  3. Firefoxのインストール先フォルダにあるupdater.exe を 作業ディレクトリにコピーする。

    > copy "<Firefoxのインストール先フォルダのパス>\updater.exe"
        "<作業ディレクトリのパス>\updater.exe"
    
  4. 作業ディレクトリに配置したupdater.exeを、 差分アップデート用のファイルがあるディレクトリ(ここでは作業ディレクトリと同じ)のフルパスを第1引数、 Firefoxのインストール先フォルダのフルパスを第2引数、updater.exeが動作する際の作業フォルダのパス (=Firefoxのインストール先フォルダ)のフルパスを第3引数して渡して起動する。

    > cd "<作業ディレクトリのパス>"
    > "<作業ディレクトリのパス>\updater.exe" "<差分アップデート用のファイルがあるディレクトリのフルパス>" "<Firefoxのインストール先フォルダのフルパス>" "<Firefoxのインストール先フォルダのフルパス>"
    
  5. アップデートの適用結果を確認する。 作業ディレクトリに出力された update.status の内容が 「succeeded」であれば、アップデートに成功している。 そうでない場合は、アップデートの適用に失敗している。

  6. アンインストール情報を更新する。 update.log をFirefoxのインストール先フォルダの「uninstall」フォルダ内に、「uninstall.update」というファイル名でコピーする。

    > copy /Y update.log "<Firefoxのインストール先フォルダのパス>\uninstall\uinstall.update"
    
  7. アップデートの後処理を実行する。 Firefoxのインストール先フォルダの「uninstall」フォルダにあるhelper.exe を、「/PostUpdate」オプションを指定して実行する。

    > "<Firefoxのインストール先フォルダのパス>\uninstall\helper.exe" /PostUpdate
    

    これにより、レジストリ内のFirefoxのバージョンなどの情報が更新される。

以上で、差分アップデートの適用は完了です。

差分更新の適用例

本項では、例として以下のバージョンにおける差分更新の適用時の具体的な手順を示します。

  • 現在Firefox 30がインストールされている。
  • Firefox 31へアップデートする。
  • 作業ディレクトリは C:\temp とする。
  • Firefoxのインストール先は C:\Program Files (x86)\Mozilla Firefox とする。

  • 管理者権限でコマンドプロンプトを起動する。

  • 差分アップデート用のファイルを作業ディレクトリに update.marというファイル名で配置する。

    > copy firefox-30.0-31.0.partial.mar "C:\temp\update.mar"
    
  • Firefoxのインストール先フォルダにあるupdater.exe を 作業ディレクトリにコピーする。

    > copy "C:\Program Files (x86)\Mozilla Firefox\updater.exe"
      "C:\temp\updater.exe"
    
  • 作業ディレクトリに配置したupdater.exeを、 作業ディレクトリのフルパスを第1引数、 Firefoxのインストール先フォルダのフルパスを第2引数と第3引数として渡して 起動する。

    > cd c:\temp
    > updater.exe "C:\temp" "C:\Program Files (x86)\Mozilla Firefox" "C:\Program Files (x86)\Mozilla Firefox"
    
  • アップデートの適用結果を確認する。

    > type update.status
    

以上で、差分アップデートの適用は完了です。

アドオンの自動アップデートの提供タイミングを組織内で制御したい

キーワード?機能制限 / 集中管理 / 自動アップデート / アドオン

通常、FirefoxやThunderbirdはMozillaが公式に提供しているアドオンのアップデート情報に基づいてアドオンの自動アップデートを行いますが、設定変更により、組織内のサーバなどをアップデート情報の提供元にすることができます。これにより、アドオンの自動アップデートの適用タイミングを制御できます。

設定方法

  1. 以下のような内容で、自動アップデート情報提供用のXMLファイル update.rdf を用意します。

    <?xml version="1.0" encoding="UTF-8"?>
    <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:em="http://www.mozilla.org/2004/em-rdf#">
      <RDF:Description about="urn:mozilla:extension:アドオンのID">
        <em:updates>
          <RDF:Seq>
            <RDF:li>
              <RDF:Description>
                <em:version>アドオンのバージョン</em:version>
                <em:targetApplication>
                  <RDF:Description>
                    <em:id>対象アプリケーションのID</em:id>
                    <em:minVersion>最小バージョン</em:minVersion>
                    <em:maxVersion>最大バージョン</em:maxVersion>
                    <em:updateLink>XPIファイルのダウンロード用URL</em:updateLink>
                    <em:updateHash>ハッシュ関数名:XPIファイルのハッシュ値</em:updateHash>
                  </RDF:Description>
                </em:targetApplication>
              </RDF:Description>
            </RDF:li>
          </RDF:Seq>
        </em:updates>
      </RDF:Description>
    </RDF:RDF>
    

    例えばFirefox 24.2ESR向けのアドオンとしてDOM Inspectorの更新情報を提供するのであれば以下のようになります。

    <?xml version="1.0" encoding="UTF-8"?>
    <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:em="http://www.mozilla.org/2004/em-rdf#">
      <RDF:Description about="urn:mozilla:extension:inspector@mozilla.org">
        <em:updates>
          <RDF:Seq>
            <RDF:li>
              <RDF:Description>
                <em:version>2.0.14</em:version>
                <em:targetApplication>
                  <RDF:Description>
                    <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
                    <em:minVersion>24.0</em:minVersion>
                    <em:maxVersion>24.*</em:maxVersion>
                    <em:updateLink>http://..../dominspector.xpi</em:updateLink>
                    <em:updateHash>sha1:ファイルのSHA1ハッシュ</em:updateHash>
                  </RDF:Description>
                </em:targetApplication>
              </RDF:Description>
            </RDF:li>
          </RDF:Seq>
        </em:updates>
      </RDF:Description>
    </RDF:RDF>
    
  2. 1で用意したファイルをクライアント上のローカルファイル、ファイル共有サーバ上のファイル、HTTPサーバ上のファイルのいずれかの形で設置し、クライアントから取得できるようにします。

  3. MCD(AutoConfig)などを使って、文字列型の設定 extensions.update.url の値に、2で設置したファイルのURL文字列を指定します。

以上で更新情報の提供準備ならびにクライアントの設定は完了です。以後は、サーバ上に設置した update.rdf ならびに各アドオンのXPIファイルを適宜更新するようにして下さい。

詳細な情報はExtension Versioning, Update and Compatibility | MDNを参照して下さい。

確認方法

以下の通り設定を変更すると、アドオンの自動アップデートの処理が10秒ごとに行われるようになります。この状態で エラーコンソール もしくは ブラウザコンソール を表示すると、自動アップデート処理の詳細なログが表示されます。更新情報の取得に成功しているかどうか、取得した更新情報の読み込みに成功しているかどうかなどを確認するのに利用できます。

  • app.update.timerMinimumDelay(整数):10
  • extensions.update.interval(整数):10
  • extensions.logging.enabled(真偽):true

注意事項

上記手順での設定後は、SSLを使用しない限り、更新情報の提供元自体が正しいかどうか(中間者攻撃を受けていないかどうか)の検証は行われない状態となります。信頼できないネットワークを経由する場合は、SSLを使って安全に更新情報を取得できるようにして下さい。