"~/.mozilla/firefox/installs.ini"의 ID로 여러 Firefox 설치(위치) 중 하나를 식별하는 방법은 무엇입니까?

"~/.mozilla/firefox/installs.ini"의 ID로 여러 Firefox 설치(위치) 중 하나를 식별하는 방법은 무엇입니까?

스크립트를 작성 중인데 ~/.mozilla/firefox/installs.ini이제 다른 버전의 Firefox를 다운로드하여 실행할 때 동일한 ID를 가진 두 개의 섹션이 포함되어 있는 것을 확인했습니다 profiles.ini. 제가 이해한 바로는 이것이 Firefox가 모든 설치 방법에서 기본적으로 로드할 프로필을 아는 방법입니다( 해당 파일에서 프로필 이름을 변경하면 거기에 넣은 프로필이 로드되기 시작했습니다. 하지만 firefox해당 ID가 포함된 시작 폴더에서 config/ini 파일을 찾을 수 없습니다 .

Firefox는 각 설치에 대해 어떤 프로필을 로드할지 어떻게 알 수 있습니까(어떤 프로필에서 로드할지 모르는 경우) ~/.mozilla/firefox/profiles.ini? 발견된 설치(실행 파일이 있는 폴더) 중에서 특정 ID에 해당하는 설치를 어떻게 선택할 수 있습니까(예: firefox실행 권한이 있는 파일 검색 ) ? 웹 검색으로는 해당 정보를 찾을 수 없습니다.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. 이제 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.default전환 installs.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-length-profile-installation

답변2

나는 하루 종일 이 동일한 문제를 처리해 왔으며 몇 시간 동안의 시행착오와 불완전하고 오해의 소지가 있는 수많은 문서와 쓸모없는 Google 결과를 조사한 끝에 마침내 답을 찾았습니다.

각 설치 이름의 16진수 문자열은 설치 경로 문자열을 정수 배열로 변환하고 Google의 64비트 City 해시 함수를 사용하여 다이제스트하여 얻습니다.

다음은 해시 함수 제품군에 대한 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

이게 도움이 되길 바란다.

관련 정보