Podrobné seznámení s funkcí vyžadující pro každou instalaci samostatný profil

Za běhu používá Firefox k uchovávání všech uživatelských nastavení, jako jsou záložky, historie a rozšíření, zvláštní složku zvanou profil. Během svého spouštění Firefox tuto složku vybírá na základě několika kritérií, jmenovitě argumentů příkazového řádku, proměnných prostředí a souboru, který obsahuje seznam známých a výchozích profilů.

Firefox 67 měl za cíl umožnit uživatelům používat současně různé instalace Firefoxu bez nutnosti konfigurovat argumenty příkazového řádku a zarazit praxi používání profilů se staršími verzemi Firefoxu, než s jakými přišly do styku, protože toto není podporováno a je známo, že to způsobuje problémy, které je obtížné diagnostikovat a opravit, přičemž v některých případech jsou natolik závažné, že je pak Firefox zcela nepoužitelný. Za tímto účelem byly provedeny změny ve výběru profilu.

Tento článek podrobně popisuje, jak dříve fungoval výběr profilu, jak funguje nyní ve Firefoxu 67 a jak migrujeme uživatele z dřívějších verzí.

Dřívější chování

Při svém spuštění Firefox načítal seznam známých profilů ze souboru profile.ini umístěného na konkrétním místě v domovském adresáři uživatele. Ten obsahuje několik málo nastavení a seznam známých profilů a jejich umístění na disku. Jeden z nich býval označen jako výchozí. Platí, že tento profil je výchozím pro všechny verze či instalace Firefoxu, které uživatel spouští.

Firefox poté zkontroluje několik proměnných prostředí a argumenty příkazového řádku, které mohly namísto výchozího profilu určit jiný. Podrobnosti zde neuvádíme, protože toto chování se nezměnilo. Postačí říci, že po dokončení těchto kontrol má buď Firefox vybrán profil, se kterým bude spuštěn, anebo nemá, jelikož vůbec žádný nenašel.

Pokud nebyl žádný profil nalezen a v souboru profile.ini jsou profily uvedeny (to by ukazovalo buď na špatný argument příkazového řádku, anebo na to, že žádný z profilů není označený jako výchozí), zobrazí se správce profilů, který uživateli umožní vybrat nebo vytvořit nový profil, jenž bude použit jako výchozí.

Pokud nebyl žádný profil nalezen a soubor profiles.ini je prázdný, pak se má za to, že jde o první spuštění Firefoxu a bez jakékoli interakce s uživatelem se vytvoří nový prázdný výchozí profil, který se použije.

Uživatel může kdykoli změnit výchozí profil prostřednictvím správce profilů, což změní výchozí profil pro všechny instalace a verze Firefoxu.

Firefox Developer Edition

Jednu komplikaci představuje vydání Firefox Developer Edition, které za normálních okolností používá jiný výchozí profil než ostatní verze Firefoxu. Toho je dosahováno tak, že se v souboru profiles.ini ignoruje obvyklá značka pro výchozí profil a namísto něho se jako výchozí použije profil s názvem „dev-edition-default“. Tato odlišnost byla příčinou všelijakých chyb, a proto zde bylo přání, aby se vydání Developer Edition chovalo stejně jako ostatní verze.

Více instancí

Další drobností je to, co se stane, když je již jedna instance Firefoxu spuštěna. Před zahájením výběru profilu se Firefox pokouší v systému najít nějakou běžící instanci Firefoxu. Jestliže nějaká existuje, pak se namísto spouštění odešlou argumenty příkazového řádku do této existující instance a provedou se tam.

Ve Windows lze současně spustit pouze jednu instanci Firefoxu, pokud se pro další instance nepoužije argument příkazového řádku -no-remote. Ty se spustí bez ohledu na jinou běžící instanci, ovšem tyto instance nebude moci detekovat ani žádné budoucí spuštění Firefoxu, přičemž Firefox se za této situace spustí, jestliže nebude nalezena žádná normální instance. Když je spuštěno více instancí, musí každá používat samostatný profil. To mají zajišťovat zámky profilů.

Na Linuxu je to podobné, jen mírně komplikovanější. Pokud je předán argument příkazového řádku specifikující profil, pokusí se Firefox pouze najít a přepnout na existující instanci používající tento profil, a pokud nebude nalezena, bude pokračovat ve spouštění. Lze také předat argument -new-instance, který způsobí, že se Firefox spustí bez ohledu na existující instance.

Nové chování

Počínaje verzí Firefoxu 67 namísto toho, aby existoval výchozí profil pro všechny instalace Firefoxu, má každá instalace Firefoxu (vycházející z fyzického umístění na disku po následování jakýchkoli symbolických odkazů) svůj vlastní výchozí profil.

V této kapitole se „starým profilem“ rozumí profil, který by byl ve verzích Firefoxu před verzí 67 používán jako výchozí, a „vyhrazeným profilem“ se rozumí profil označený jako výchozí pro nějakou určitou instalaci Firefoxu.

Při svém spouštění Firefox stále načítá soubor profiles.ini, jenž obsahuje ty samé informace jako dříve. Jeden ze známých profilů může být označen jako starý výchozí profil. Kromě toho nyní soubor profiles.ini obsahuje seznam známých instalací Firefoxu. Každá nová sekce je pojmenována podle hashe daného instalačního adresáře Firefoxu. Každá instalační sekce obsahuje umístění vyhrazeného profilu pro danou instalaci na disku a také značku, zda je profil pro danou instalaci „zamčený“.

Firefox tak jako předtím stále kontroluje argumenty příkazového řádku a proměnné prostředí, které mohou namísto výchozího profilu určit jiný. Následně, pokud již pro tuto instalaci existuje vyhrazený výchozí profil, použije se tento jako výchozí profil a pokračuje se ve spouštění.

Kde se chování začíná lišit, je situace, kdy pro tuto instalaci nebyl označen žádný vyhrazený výchozí profil (sem patří případ, kdy se Firefox spouští v důsledku svého restartování a předchozí běh používal starý výchozí profil, k čemuž obvykle dochází při automatickém restartu za účelem provedení aktualizace na verzi 67 nebo vyšší).

Jestliže v souboru profiles.ini existuje příslušná instalační sekce, ale neodkazuje na žádný existující profil (byl po čase odstraněn), je vytvořen a použit nový vyhrazený výchozí profil.

Pokud v souboru profiles.ini žádná instalační sekce neexistuje, pak se má za to, že jde o první spuštění této instalace jakožto verze 67 nebo vyšší. V takovém případě se heuristickou metodou rozhodne, zda pro tuto instalaci vytvořit nový vyhrazený výchozí profil nebo zda označit starý výchozí profil jako vyhrazený výchozí profil:

  1. Obsahuje starý výchozí profil soubor compatibility.ini a lze ho analyzovat? Pokud ne, vytvoř nový vyhrazený výchozí profil a pokračuj ve spouštění. (Pouze velmi velmi staré verze Firefoxu tento soubor nevytvářejí, takže když chybí, znamená to buď, že se jedná o úplně prázdný profil, anebo že je tak starý, že je pravděpodobně s moderními verzemi Firefoxu nepoužitelný).
  2. Soubor compatibility.ini obsahuje informace o poslední instalaci Firefoxu, která onen starý výchozí profil používala. Pokud byl starý výchozí profil naposledy použit jinou instalací Firefoxu, vytvoř nový vyhrazený výchozí profil a pokračuj ve spouštění.
  3. Zkontroluj, jestli nějaké jiné známé instalace Firefoxu nemají tento starý výchozí profil označený jako vyhrazený výchozí profil a jestli není pro onu instalaci označen jako „zamčený“. Pokud ano, vytvoř nový vyhrazený výchozí profil a pokračuj ve spouštění.
  4. Označ starý výchozí profil jako vyhrazený výchozí profil pro tuto instalaci a odeber ho jako vyhrazený výchozí profil pro ostatní instalace Firefoxu (to proto, aby se při jejich příštím spouštění nepokoušely použít starý výchozí profil, ale vytvořily profil nový). Pokračuj ve spouštění. Profil je v tomto okamžiku stále označen jako starý výchozí, takže starší verze Firefoxu ho budou nadále používat jako svůj výchozí, dokud nebudou aktualizovány.
    • V pozdější fázi spouštění (z různých důvodů to nelze provést v rané fázi spouštění) zkontroluj, jestli je tato instalace Firefoxu v operačním systému označena jako výchozí internetový prohlížeč. Pokud ano, označ daný vyhrazený výchozí profil pro tuto instalaci jako „zamčený“.

Uživatel má stále možnost změnit vyhrazený výchozí profil pro tuto instalaci Firefoxu pomocí správce profilů, přičemž změna se bude vztahovat pouze na tuto instalaci Firefoxu. Tímto výběrem profilu se vybraný profil pro tuto instalaci označí jako „zamčený“.

Firefox Developer Edition

U verze Firefox Developer Edition 67 byl výběr výchozího profilu změněn tak, aby byl standardnější. Verze Developer Edition nyní používá stejný systém pro výběr vyhrazeného výchozího profilu jako ostatní verze Firefoxu 67 a již se nespoléhá na pojmenovávání konkrétních profilů. Jedinou změnou oproti výše uvedenému popisu je to, že „starý profil“ odkazuje na profil s názvem „dev-edition-default“ a ne na profil označený v souboru profiles.ini jako default.

Více instancí

Také běh více instancí Firefoxu se u Firefoxu 67 změnil. Nyní se Windows a Linux chovají stejně:

Během spouštění Firefox prochází celým svým procesem výběru profilu a na základě argumentů příkazového řádku, proměnných prostředí a údajů o výchozím profilu rozhoduje, jaký profil je požadován. Firefox poté hledá jakoukoli existující instanci Firefoxu, která požadovaný profil používá a pakliže taková existuje, pak jsou namísto spuštění nové instance všechny argumenty příkazového řádku předány této nalezené instanci.

To má tu výhodu, že můžete spouštět různé instalace Firefoxu současně bez nutnosti připojování argumentů příkazového řádku. Každá z nich bude mít svůj vlastní výchozí profil, přičemž při spuštění jedné se použije její výchozí profil, při spuštění další se použije druhý výchozí profil. Pokud máte spuštěný Firefox beta a v operačním systému je jako výchozí prohlížeč nastaven Firefox Release, potom při aktivaci odkazu v jiné aplikaci se tento odkaz otevře ve Firefoxu Release, v němž by se normálně otevřel, ať už je zrovna ve Firefoxu beta otevřeno cokoliv.

Díky této funkci již nejsou k současnému běhu různých instancí Firefoxu potřeba příznaky -no-remote a -new-instance, ovšem pokud budou použity, nezpůsobí žádnou chybu.

Blokování návratu ke starší verzi

Další změnou ve Firefoxu 67 je detekce návratu ke starší verzi profilu. Firefox při svém spuštění prohlíží daný profil, aby zjistil, zda nebyl posledně použit novější verzí Firefoxu, než jakou se uživatel pokouší spustit. O takové situaci se ví, že způsobuje mnoho problémů, někdy zjevných, někdy méně zjevných. Firefox v tomto nyní uživatele zarazí a nabídne mu namísto toho možnost vytvořit nový profil, který se bude používat.

Potlačení změn

Změny ve výběru profilu lze vrátit nastavením proměnné prostředí MOZ_LEGACY_PROFILES. To však nevrátí změny ve věci běhu více instancí. Blokování návratu ke starší verzi lze obejít nastavením proměnné prostředí MOZ_ALLOW_DOWNGRADE nebo při spuštění Firefoxu předáním argumentu příkazového řádku --allow-downgrade.


První alfa a beta verze Firefoxu 67 tyto informace uchovávaly v jiném souboru s názvem installs.ini. Tento soubor stále existuje jako záloha těchto dat, která jsou nyní uchovávána v souboru profiles.ini a jsou opětovně importována do souboru profiles.ini, kdyby ho náhodou starší verze Firefoxu odstranila. Úprava souboru profiles.ini není podporována a důrazně se nedoporučuje, poněvadž jakékoli úpravy informací o instalaci v souboru profiles.ini bez toho, aby došlo také k úpravě souboru installs.ini, mohou být při spuštění starší verze Firefoxu než 67 ztraceny.

Byl tento článek srozumitelný?

Počkejte prosím...

S napsáním tohoto článku pomohli tihle úžasní lidé:

Illustration of hands

Zapojte se

Rozvíjejte a sdílejte své znalosti s ostatními. Odpovídejte na dotazy a vylepšujte naše články nápovědy.

Zjistit více