結城です。
通常、Firefoxは動作中にバックグラウンドで更新用の差分ファイルを自動的にダウンロードし、再起動のタイミングで更新を適用します。 しかし企業などでの運用においては、一般ユーザーには管理者権限を与えない場合があり、そのような場面では、Firefoxの更新は管理者やシステム権限でのインストーラーの再実行、もしくは更新用の差分ファイルをローカルで適用して行うことになります。 配布ファイルのサイズが小さく済む差分ファイルのみを各端末に配布し、ログオンスクリプトなどを用いて端末上でローカルで適用するやり方は、組織内ネットワークの帯域の逼迫を防ぎたいといった事情がある場合には有用と言えます。
この差分ファイルの適用手順は長らく変化がありませんでしたが、Firefox ESR140時点(より正確に言えばFirefox 138時点)で一部の仕様が変わっており、従来の手順では差分更新を行えなくなっています。 本記事では、Windows端末上でFirefox ESR140に差分更新をローカルで適用する手順を改めて紹介します1。
差分ファイルの入手
Firefoxの差分更新を行うには、差分ファイルをMozilla公式のダウンロードサイトから入手する必要があります。 URLの凡例は以下の通りです。
- Windows用 64bit版:
https://releases.mozilla.org/pub/mozilla.org/[製品名]/releases/[更新先バージョン]/update/win64/ja/[製品名]-[更新元バージョン]-[更新先バージョン].partial.mar - Windows用 32bit版:
https://releases.mozilla.org/pub/mozilla.org/[製品名]/releases/[更新先バージョン]/update/win32/ja/[製品名]-[更新元バージョン]-[更新先バージョン].partial.mar
例えばFirefox ESR140.2.0(64bit版)からESR140.3.0(64bit版)へ更新する場合に必要な差分ファイルは、以下のURLで入手できます。
https://releases.mozilla.org/pub/firefox/releases/140.3.0esr/update/win64/ja/firefox-140.2.0esr-140.3.0esr.partial.mar
Mozilla公式のダウンロードサイトでは、特定バージョンのFirefoxに対して、それ以前のいくつかのバージョンからの差分更新用のファイルが配布されています。
差分ファイルの「更新元バージョン」は、現在インストールされているFirefoxのバージョンと正確に一致する物を使う必要があります。
そのような差分ファイルが用意されていないパターン2の場合は、完全更新用のファイル(firefox-140.3.0esr.complete.marのように名前の末尾が .complete.mar となっているファイル)を使用します。
差分ファイルの適用手順
差分ファイルの適用手順は以下の通りです。 ここでは、先の例に倣って、Firefox ESR140.2.0からESR140.3.0へ更新する場合を例にします。
-
管理者権限でコマンドプロンプトを起動します。
-
任意の位置に作業用ディレクトリーを作成します。 ここでは
C:\tempを使うと仮定します。> mkdir "C:\temp" -
使用する差分ファイル(
firefox-*-*.partial.mar)を、作業用ディレクトリー内にupdate.marというファイル名で配置します。> copy firefox-140.2.0esr-140.3.0esr.partial.mar "C:\temp\update.mar" -
Firefoxのインストール先フォルダーにある
updater.exeを、作業用ディレクトリーにコピーする。> copy "C:\Program Files\Mozilla Firefox\updater.exe" "C:\temp\updater.exe" -
作業用ディレクトリーに
cdします。> cd "C:\temp" -
作業ディレクトリーに配置した
updater.exeを、以下の引数を指定して起動します。-
Firefox ESR140.0およびそれより新しいバージョン3からの更新の場合:
- 第1引数=
3(固定の数値で、引数指定のバージョンを表す) - 第2引数=差分更新用のファイルがあるディレクトリーのフルパス
- 第3引数=Firefoxのインストール先フォルダーのフルパス
- 第4引数=
updater.exeが動作する際の作業フォルダ(=Firefoxのインストール先フォルダーのフルパス - 第5引数=
first(固定の文字列で、呼び出しが直接起動(first)か自動更新からの呼び出し(second)かを表す)
> "C:\temp\updater.exe" 3 "C:\temp" "C:\Program Files\Mozilla Firefox" "C:\Program Files\Mozilla Firefox" first - 第1引数=
-
Firefox ESR128.*およびそれより古いバージョン4からの更新の場合:
- 第1引数=差分更新用のファイルがあるディレクトリーのフルパス
- 第2引数=Firefoxのインストール先フォルダーのフルパス
- 第3引数=
updater.exeが動作する際の作業フォルダー(=Firefoxのインストール先フォルダ-)のフルパス
> "C:\temp\updater.exe" "C:\temp" "C:\Program Files\Mozilla Firefox" "C:\Program Files\Mozilla Firefox"
-
-
updater.exeが非同期に動作するので、終了を待ちます。 -
作業ディレクトリーに出力された
update.statusの内容を確認します。- 内容が
succeededとなっていれば、適用成功です。 - そうでない場合は更新の適用に失敗した状況なので、作業ディレクトリー内に出力されたログファイル
update.logの内容を確認してください。
- 内容が
-
アンインストール情報を更新します。
update.logをFirefoxのインストール先フォルダーのuninstallフォルダー内に、uninstall.updateというファイル名でコピーします。> copy /Y update.log "C:\Program Files\Mozilla Firefox\uninstall\uinstall.update" -
更新の後処理を実行します。 Firefoxのインストール先フォルダーの
uninstallフォルダー内にあるhelper.exeを、/PostUpdateオプションを指定して実行します。> "C:\Program Files\Mozilla Firefox\uninstall\helper.exe" /PostUpdateこれにより、レジストリー内の Firefox のバージョンなどの情報が更新されます。
以上で、差分更新の適用は完了です。
updater.exe の起動時の引数の指定の仕方が、Firefox ESR140以降に付属の updater.exe と、それより前のバージョンに付属の updater.exe とで異なっている点に注意して下さい。
例えば、更新先のバージョンがFirefox ESR140.3.0でも、更新元のバージョンがFirefox ESR128.11.0の場合は updater.exe の引数は古い指定の仕方をしなくてはなりません。
引数の指定の仕方を間違えると、updater.exe がログも何も出力せずに終了してしまい、原因が分からず途方に暮れることになってしまいます。
まとめ
以上、Firefox ESR140以降で変化した更新用差分ファイルの適用手順をご紹介しました。
本稿執筆時点で、本件については公式の情報がありません。
1964957 - Firefox updating script with .mar files and updater.exe, version >=138.0 でやり取りされているコメントを見る限りでは、updater.exe を単独で実行する使い方はFirefoxとしては想定されておらず、今後も予告なく仕様が変更される可能性がある5ようです。
差分ファイルの適用を独自に行っている企業のシステム管理担当者は、事前に把握していた差分適用手順が使用可能かどうかの確認を怠らないようにしましょう。
株式会社クリアコードは、FirefoxやThunderbirdの法人運用において発生するトラブルの原因調査や対処法の確立・ご案内などを行うサポートサービスを有償にて提供しています。 FirefoxやThunderbirdの運用でトラブルに遭遇し解決方法を見付けられずお困りの企業のシステム管理担当者さまは、お問い合わせフォームよりお問い合わせ下さい。
-
本記事の情報はMozillaの日本コミュニティポータルに提供した法人向け技術情報を補完する物で、本記事で述べている情報を含めるための修正も提案済みとなっています。 ↩
-
例えば「Firefox ESR115.0からESR140.3.0 へ更新する」というような、間のバージョンを多数飛ばした更新をしたい場合など。 ↩
-
正確にはFirefox 138.0以上のバージョンが該当します。 ↩
-
正確にはFirefox 137.*以下のバージョンが該当します。 ↩
-
変化後の具体的な起動方法を知るためには、
updater.exeのソースや、Firefox自身の自動更新処理の中でupdater.exeを起動している箇所の実装 などを調査する必要があります。 ↩