如何通过“~/.mozilla/firefox/installs.ini”中的 id 识别多个 Firefox 安装(位置)之一?

如何通过“~/.mozilla/firefox/installs.ini”中的 id 识别多个 Firefox 安装(位置)之一?

我正在编写脚本,~/.mozilla/firefox/installs.ini现在看到当我下载并启动另一个版本的 Firefox 时,它包含两个带有 id 的部分,相同的 id profiles.ini- 据我了解,这就是 Firefox 知道每次安装默认加载哪个配置文件的方式(当我更改了该文件中的配置文件名称,它开始加载我放在那里的配置文件)。但我无法在firefox包含该 id 的启动文件夹中找到 config/ini 文件。

Firefox 如何知道每次安装要加载哪个配置文件(如果不是从哪个配置文件加载)~/.mozilla/firefox/profiles.ini?如何在找到的(例如通过文件搜索firefox具有可执行权限的文件)安装(具有firefox可执行文件的文件夹)中选择与特定 ID 相对应的 安装~/.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。现在,在 Firefox 的about: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.defaultinstalls.ini和中切换为profiles.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-depth-profile-installation

答案2

我一整天都在处理这个同样的问题,经过几个小时的反复试验和筛选大量不完整/误导性的文档和无用的谷歌结果,我终于找到了答案。

每个安装名称中的十六进制字符串是通过将安装路径字符串转换为整数数组并使用 Google 的 64 位 City 哈希函数对其进行消化而获得的。

以下是谷歌关于哈希函数系列的公告以及白皮书的链接: 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

我希望这有帮助。

相关内容