Program Firefox w czasie swojego działania korzysta z katalogu zawierającego ustawienia, inaczej profilu, w którym znajdują się wszystkie ustawienia użytkownika, takie jak zakładki, historia i rozszerzenia. Podczas uruchamiania Firefox wybiera ten katalog na podstawie kilku kryteriów, w tym argumentów z wiersza poleceń, zmiennych środowiskowych i pliku, który zawiera listę znanych i domyślnych profili.
Celem programu Firefox 67 jest umożliwienie użytkownikom korzystania z różnych instalacji programu Firefox jednocześnie, bez konieczności konfigurowania argumentów z wiersza poleceń, a także uniemożliwienie uruchamiania profili ze starszymi wersjami programu Firefox niż te, z którymi działały wcześniej, ponieważ cofanie wersji nie jest wspierane i wiadomo, że powoduje problemy, które są trudne do zdiagnozowania i naprawienia, a w niektórych przypadkach są na tyle poważne, że Firefox staje się całkowicie bezużyteczny. W tym celu wprowadzono zmiany w doborze profili.
W tym artykule opisano szczegółowo, jak kiedyś działał wybór profilu w przeglądarce Firefox, a jak działa teraz w wersji 67 i jak migrujemy użytkowników z wcześniejszych wersji.
Spis treści
Wcześniejsze zachowanie
Przy uruchamianiu Firefox ładuje listę znanych profili z pliku profiles.ini znajdującego się w określonej lokalizacji w katalogu domowym użytkownika. Zawiera on kilka ustawień i listę znanych profili oraz ich lokalizację na dysku. Jeden z nich powinien być oznaczony jako profil domyślny. Ten domyślny profil ma zastosowanie do każdej wersji lub instalacji programu Firefox, którą uruchomi użytkownik.
Następnie Firefox sprawdza szereg zmiennych środowiskowych i argumentów z wiersza poleceń, które mogą zastąpić profil domyślny. Szczegóły nie są tutaj omawiane, ponieważ to zachowanie nie uległo zmianie. Wystarczy powiedzieć, że po zakończeniu tych kontroli program Firefox wybierze profil, z którym ma zostać uruchomiony, lub nie znajdzie go wcale.
Jeśli nie znaleziono żadnego profilu, a na liście profiles.ini znajdują się profile (oznaczałoby to albo zły argument z wiersza poleceń, albo żaden z profili nie został oznaczony jako domyślny), wyświetlany jest menedżer profili, który umożliwia użytkownikowi wybranie lub utworzenie nowego profilu, który będzie używany jako domyślny.
Jeśli nie znaleziono żadnego profilu, a plik profiles.ini jest pusty, wówczas jest to uważane za pierwsze uruchomienie Firefoksa i tworzony jest nowy, pusty profil domyślny, który jest używany bez interakcji z użytkownikiem.
Użytkownik może w każdej chwili zmienić profil domyślny za pośrednictwem menedżera profili, co spowoduje zmianę domyślnego profilu dla wszystkich instalacji i wersji programu Firefox.
Firefox Developer Edition
Jedną z komplikacji jest Firefox Developer Edition, który normalnie używa innego domyślnego profilu niż inne wersje programu Firefox. Osiąga się to poprzez ignorowanie normalnego znacznika profilu domyślnego w pliku profiles.ini i zamiast tego używanie profilu o nazwie "dev-edition-default" jako domyślnego. Różnica ta powodowała różne błędy, więc pojawiła się potrzeba, aby Developer Edition zachowywała się tak samo jak inne wersje.
Wiele instancji
Jednym z dodatkowych szczegółów jest to, co dzieje się, gdy uruchomiony jest już instancja Firefoksa. Przed rozpoczęciem wyboru profilu Firefox próbuje znaleźć działającą instancję programu Firefox w systemie. Jeżeli istnieje, to zamiast uruchamiania jakichkolwiek argumentów z wiersza poleceń są wysyłane do istniejącej instancji i tam wykonywane.
W systemie Windows może być w danym momencie uruchomiona tylko jedna instancja Firefoksa, chyba że dla dodatkowych instancji zostanie wykorzystany argument -no-remote z wiersza poleceń. Zostaną one uruchomione bez względu na inną uruchomioną instancję, lecz również każdy przyszły start Firefoksa nie będzie w stanie wykryć tych instancji i tak samo zostanie uruchomiony, jeżeli nie zostanie znaleziona normalna instancja. Jeżeli jest uruchomionych kilka instancji, to każda z nich musi posiadać osobny profil.cDo wymuszenia tego są wykorzystywane blokady profili.
Na linuksie działa to podobnie, ale z kilkoma zawiłościami. Jeśli argument z wiersza poleceń określający profil zostanie przekazany, to Firefox będzie tylko próbował znaleźć i przekazać istniejącą instancję przy użyciu tego profilu, a jeśli nie zostanie on znaleziony, to będzie kontynuował uruchamianie. Można również przekazać argument -new-instance, który spowoduje uruchomienie programu Firefox niezależnie od istniejących instancji.
Nowe zachowanie
W przypadku wersji programu Firefox od wersji 67, zamiast domyślnego profilu dla wszystkich instalacji programu Firefox, każda instalacja programu Firefox (na podstawie fizycznej lokalizacji na dysku) ma swój własny profil domyślny.
W tej sekcji "stary profil" odnosi się do profilu, który byłby używany jako domyślny przez wersje programu Firefox przed 67, "profil dedykowany" odnosi się do profilu oznaczonego jako domyślny dla instalacji programu Firefox.
Podczas uruchamiania programu Firefox nadal ładuje plik profil.ini, zawiera on te same informacje, co poprzednio. Jeden ze znanych profili może być oznaczony jako stary profil domyślny. Dodatkowo profiles.ini zawiera teraz listę znanych instalacji programu Firefox. Każda nowa sekcja ma swoją nazwę w oparciu o hash katalogu instalacyjnego programu Firefox. Każda sekcja instalacji zawiera lokalizację na dysku dedykowanego dla danej instalacji profilu oraz znacznik, czy dany profil jest "zablokowany" do danej instalacji.
Tak jak poprzednio Firefox nadal sprawdza argumenty wiersza poleceń i zmienne środowiskowe, które mogą nadpisać domyślny wybór profilu. Jeśli dla tej instalacji istnieje już dedykowane ustawienie domyślne, to jest ono używane jako profil domyślny i uruchamianie jest kontynuowane.
Jeśli zachowanie jest rozbieżne, to znaczy, że nie było dedykowanego profilu domyślnego zaznaczonego dla tej instalacji (dotyczy to również przypadku, gdy Firefox uruchamia się w wyniku restartu, a poprzednie uruchomienie odbywało się przy użyciu starego profilu domyślnego, zazwyczaj ma to miejsce podczas automatycznego restartu w celu zastosowania aktualizacji do wersji 67 lub wyższej).
Jeśli sekcja instalacji istnieje w pliku profiles.ini, ale nie odnosiła się do żadnego istniejącego profilu (został on od tego czasu usunięty), wówczas tworzony i używany jest nowy, dedykowany profil domyślny.
Jeśli w pliku profiles.ini nie ma sekcji instalacyjnej, jest ona uważana za pierwszą instalację, która została wykonana w wersji 67 lub wyższej. W tym przypadku następująca heurystyka jest używana do podjęcia decyzji o utworzeniu nowego dedykowanego profilu domyślnego lub zaznaczeniu starego jako dedykowanego profilu domyślnego dla tej instalacji:
- Czy stary profil domyślny zawiera plik compatibility.ini, który może być parsowany. Jeśli nie, należy utworzyć nowy dedykowany profil domyślny i kontynuować uruchamianie. (Tylko bardzo stare wersje Firefoksa nie tworzą tego pliku, więc jego brak albo oznacza, że jest to całkowicie pusty profil albo jest tak stary, że prawdopodobnie nie nadaje się do użycia z nowoczesnymi wersjami Firefoksa).
- Plik compatibility.ini zawiera informacje o ostatniej instalacji programu Firefox w celu użycia starego profilu domyślnego. Jeśli stary profil domyślny był ostatnio używany przez inną instalację programu Firefox, należy utworzyć nowy, dedykowany profil domyślny i kontynuować uruchamianie.
- Sprawdź, czy inne znane instalacje programu Firefox mają stary profil domyślny oznaczony jako dedykowany, a profil jest oznaczony jako "zablokowany" do instalacji. Jeśli tak, to utwórz nowy, dedykowany profil domyślny i kontynuuj uruchamianie.
- Zaznacz stary profil domyślny jako dedykowany profil domyślny dla tej instalacji, nie oznaczaj go jako dedykowany profil domyślny dla innych instalacji programu Firefox (należy to zrobić w taki sposób, aby przy następnym uruchomieniu po prostu utworzyć nowy profil, a nie próbować używać starego profilu domyślnego). Kontynuuj uruchamianie. W tym momencie profil jest nadal oznaczony jako stary domyślny, więc starsze wersje programu Firefox będą nadal używać go jako domyślnego, dopóki nie zostaną zaktualizowane.
- Później podczas uruchamiania (nie można tego zrobić podczas wczesnego uruchamiania z różnych powodów) sprawdź, czy ta instalacja programu Firefox jest zaznaczona jako domyślna przeglądarka systemu operacyjnego. Jeśli tak, to należy zaznaczyć dedykowany profil domyślny jako "zablokowany" dla tej instalacji.
Użytkownik może jeszcze zmienić dedykowany profil domyślny dla tej instalacji programu Firefox za pomocą menedżera profili, zmiana ta będzie dotyczyła tylko tej instalacji programu Firefox. Dokonanie wyboru w ten sposób spowoduje zaznaczenie wybranego profilu jako "zablokowany" dla tej instalacji.
Firefox Developer Edition
W Firefox Developer Edition 67 domyślny wybór profilu został zmieniony na bardziej standardowy. Program Developer Edition używa teraz tego samego algorytmu do wybierania domyślnego profilu dedykowanego, co inne wersje programu Firefox 67, i nie opiera się już na konkretnych nazwach profili. Jedyną zmianą w powyższym opisie jest to, że "stary profil" odnosi się do profilu o nazwie "dev-edition-default", a nie do profilu oznaczonego jako domyślny w profiles.ini.
Wiele instancji
Uruchomienie wielu instancji programu Firefox zmieniło się również w przypadku programu Firefox 67. Teraz Windows i Linux zachowują się identycznie:
Podczas uruchamiania Firefox przechodzi przez pełny wybór profilu, aby na podstawie argumentów z linii poleceń, zmiennych środowiskowych i domyślnych informacji o profilu zdecydować, jaki profil jest pożądany. Następnie Firefox wyszukuje każdą istniejącą instancję Firefoksa, która korzysta z żądanego profilu, a jeśli taka istnieje, to zamiast uruchamiać argumenty z linii poleceń są przekazywane do znalezionej instancji.
Ma to tę zaletę, że można uruchamiać różne instalacje Firefoksa jednocześnie bez dodatkowych argumentów z wiersza poleceń. Każda z nich będzie miała swój własny profil domyślny, przy uruchamianiu jednej będzie używał swojego profilu domyślnego, przy uruchamianiu drugiej będzie używał innego profilu domyślnego. Jeśli masz uruchomioną wersję beta programu Firefox, a Firefox Release jest przeglądarką domyślną dla systemu operacyjnego, to otwarcie linku w innej aplikacji otworzy go w Firefox Release, gdzie wcześniej otworzyłby go w jakiejkolwiek wersji Firefoksa, która była otwarta.
Dzięki tej funkcji flagi -no-remote i -new-instance nie są już potrzebne do jednoczesnego uruchamiania różnych instancji programu Firefox, ale nie spowodują żadnego błędu, jeśli zostaną użyte.
Blokada obniżenia wersji
Kolejną zmianą w Firefox 67 jest wykrywanie obniżenia wersji. Podczas uruchamiania programu Firefox sprawdza profil, czy był on ostatnio używany przez nowszą wersję programu Firefox niż ta, którą użytkownik próbuje uruchomić. Wiadomo, że powoduje to wiele problemów, czasem oczywistych, czasem mniej. Teraz Firefox powstrzyma użytkownika przed zrobieniem tego, oferując mu możliwość utworzenia nowego profilu, który będzie używany zamiast niego.
Wyłączanie zmian
Zmiany w wyborze profilu można odwrócić poprzez ustawienie zmiennej środowiskowej MOZ_LEGACY_PROFILES. Nie spowoduje to jednak cofnięcia możliwości uruchamiania wielu instancji. Blokadę obniżania wersji można ominąć ustawiając zmienną środowiskową MOZ_ALLOW_DOWNGRADE lub przekazując argument --allow-downgrade z linii poleceń podczas uruchamiania Firefoksa.