「~/.mozilla/firefox/installs.ini」のIDで複数のFirefoxのインストール(場所)の1つを識別する方法は?

「~/.mozilla/firefox/installs.ini」のIDで複数のFirefoxのインストール(場所)の1つを識別する方法は?

スクリプトを作成していますが、~/.mozilla/firefox/installs.ini別のバージョンのFirefoxをダウンロードして実行したときに同じIDを持つ2つのセクションが含まれていることを確認しましたprofiles.ini。私が理解したところ、これはFirefoxがすべてのインストール方法でデフォルトでロードするプロファイルを知る方法です(そのファイルのプロファイル名を変更すると、そこに置いたプロファイルがロードされ始めましたが、firefoxそのIDを含むスタートアップフォルダでconfig /iniファイルが見つかりません。

Firefoxは各インストールでどのプロファイルをロードするかをどのように知ることができますか(どのプロファイルからロードするのかわからない場合)~/.mozilla/firefox/profiles.ini。見つかったインストール(実行可能ファイルを含むフォルダ)から特定のIDに対応するインストールをどのように選択できますか(例:firefox実行権限を持つファイルの検索)。 Web 検索ではその情報が見つかりません。firefox~/.mozilla/firefox/installs.ini

答え1

したがって、これは部分的な答えにすぎませんが、すべてのインストールのデフォルトプロファイルはおよびで作成されたinstalls.iniプロファイルですprofiles.ini

たとえば、新しいMX Linux Live USBを「焼いた」とします。 Firefoxを起動しましたが、iniファイルの内容は次のとおりです。

demo@mx1:~/.mozilla/firefox
$ cat installs.ini 
[6AFDA46A1A8AD48]
Default=ja0llll6.default-release
Locked=1

demo@mx1:~/.mozilla/firefox
$ cat profiles.ini 
[Profile1]
Name=default
IsRelative=1
Path=83agh85a.default
Default=1

[Profile0]
Name=default-release
IsRelative=1
Path=ja0llll6.default-release

[General]
StartWithLastProfile=1
Version=2

[Install6AFDA46A1A8AD48]
Default=ja0llll6.default-release
Locked=1

ロードされた設定ファイルはja0llll6.default-release。 Firefoxabout:profilesページで他のプロファイルのデフォルトプロファイルを変更しました。現在の内容は次のとおりです。

demo@mx1:~/.mozilla/firefox
$ cat installs.ini 
[6AFDA46A1A8AD48]
Default=83agh85a.default
Locked=1

demo@mx1:~/.mozilla/firefox
$ cat profiles.ini 
[Profile1]
Name=default
IsRelative=1
Path=83agh85a.default
Default=1

[Profile0]
Name=default-release
IsRelative=1
Path=ja0llll6.default-release

[General]
StartWithLastProfile=1
Version=2

[Install6AFDA46A1A8AD48]
Default=83agh85a.default
Locked=1

ご覧のとおり、デフォルト値が切り替わり83agh85a.defaultましinstalls.iniprofiles.ini

このDefault=1項目は(Firefox> = 67の場合)何を言っているのかを示します。以前基本設定ファイル(下記リンク記事を参照)

いくつかのインストールセクションがinstalls.iniいつprofiles.ini

iniたとえば、私のローカルコンピュータのファイルの内容は次のようになります。

nico@xantico:~/.mozilla/firefox$ cat installs.ini 
[46F492E0ACFF84D4]
Default=s25g8abr.dev-edition-default
Locked=1

[4F96D1932A9F858E]
Default=waxl9k8u.default
Locked=1

nico@xantico:~/.mozilla/firefox$ cat profiles.ini 
[Install46F492E0ACFF84D4]
Default=s25g8abr.dev-edition-default
Locked=1

[Install4F96D1932A9F858E]
Default=waxl9k8u.default
Locked=1

[Profile1]
Name=default-release
IsRelative=1
Path=v6gmyi1u.default-release

[Profile0]
Name=default
IsRelative=1
Path=waxl9k8u.default
Default=1

[General]
StartWithLastProfile=1
Version=2

他の情報がない場合は、どのプロファイルが使用されたかを知る方法はありません。クリップオプティマイザの情報が「現在の」ハッシュを特定するのに役立つかもしれません。

この記事を読むのは面白いかもしれません(しかし、理解するのは簡単ではなく、この問題を解決する方法を理解できません)。

https://support.mozilla.org/en-US/kb/understanding-length-profile-installation

答え2

私は一日中この同じ問題に取り組んでおり、数時間の試行錯誤と不完全で誤解を招く数多くの文書と無駄なGoogleの結果を調査したところ、ついに答えを見つけました。

各インストール名の16進文字列は、インストールパス文字列を整数の配列に変換し、Googleの64ビットシティハッシュ関数を使用してダイジェストすることによって取得されます。

以下は、ハッシュ関数スイートに関するGoogleの発表とホワイトペーパーのリンクです。 https://opensource.googleblog.com/2011/04/introducing-cityhash.html

これはC ++、Go、およびRustのいくつかの実装です。

https://github.com/google/cityhash

https://github.com/bradenhilton/cityhash/blob/main/cityhash.go

https://docs.rs/fasthash/latest/fasthash/city/index.html

Firefoxはnsis/Contrib/CityHash/cityhash/city.cppに独自のバージョンを実装しています。

答え3

現在のFirefoxプロファイルフォルダを取得するには、次のように入力します。

awk -F= '{if(NF){if($1=="Path")path=$2;if($1=="Default")def=$2}else{if(def==1){print "~/.mozilla/firefox/"path;exit}}}' ~/.mozilla/firefox/profiles.ini

これが役に立つことを願っています。

関連情報