【解決!】Firefox Portable 67 以降で外部アプリのリンク(URL)クリックで新しいウインドウが立ち上がる

Firefox Portable67になってから不可解な現象に悩まされました。

Firefox Portable67を起動後、他のアプリでURLを開くと(例えばメーラーでURLをクリックすると)、Forefox Portable66 までは今起動しているFirefoxの新しいタブでURLを開いていたのですが、67では新しいインスタンス(ウインドウ)が立ち上がるようになってしまいました。

原因

どうやらFirefox67からプロファイルの扱いが変わったのが原因みたいです。

これを説明するには、まずFirefox Portableの起動の仕組みを理解しておく必要があります。

Firefox Portableの起動の仕組み

Firefox Portableは、

FirefoxPortable.exeを起動 → Portable版の設定でfirefox.exe(※)を起動

という順番で起動されます。

※64bit OSなら \App\Firefox64\firefox.exe 、32bit OSなら \App\Firefox\firefox.exe

これにより、

<Firefox Portableインストールディレクトリ>\Data\profile

のプロファイルが使用され、ポータブルアプリとして動作するわけです。

Firefox 66と67以降の違い

メーラなどでURLをクリックすると、WindowsシェルがHTTPもしくはHTTPSプロトコルに関連付けられたアプリを起動します。この場合は、firefox.exeですね。

firefox.exeが起動している状態で、さらにfirefox.exeが起動された場合、Firefox 66までは(設定にもよりますが)新しいインスタンスを起動するのではなく、すでに起動しているFirefoxにURLが渡され、新しいタブでそのURLを開きます。

これに対してFirefox 67以降では、デフォルトプロファイル(%APPDATA%\Roaming\Mozilla\Firefox\Profiles\xxxxxx.default-release)を使用してFirefoxを起動し、そのインスタンスでURLを開く仕様に変更されたようです。

先ほども説明したようにFirefoxPortable.exe経由で起動したFirefoxは、ポータブル版のプロファイルを使用しています。このため、新しいタブではなく、新しいインスタンスでそのURLを開くようになってしまうわけです。

解決方法

ここまで分かれば対策は簡単!

HTTP, HTTPSプロトコルの関連付けをfirefox.exeからFirefoxPortable.exeに変更すればOKです!

ただ、ひとつ困ったことが。

普通であれば、[設定] - [アプリ] - [既定のアプリ] - [プロトコルごとに既定のアプリを選ぶ] から関連付けを変更できるんですが、アプリの選択画面でFirefoxPortable.exeが出てこないんです。

そこで、レジストリを直接いじることにします。

regeditを立ち上げ HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command

"\App\Firefox64\firefox.exe" -osint -url "%1"

から

"\FirefoxPortable.exe" "%1"

に変更します。

同様に HKEY_CLASSES_ROOT\FirefoxURL\shell\open\command

"\App\Firefox64\firefox.exe" -osint -url "%1"

から

"\FirefoxPortable.exe" "%1"

に変更します。

[変更前]

[変更後]

FirefoxURL横の数字は気にしないでください

これで完了です!

もちろん、HTTP, HTTPSの関連付けを変更できるアプリなどを使ってもOKです。