Grondig begrip van de functie profiel-per-installatie

Tijdens uitvoeren gebruikt Firefox een map met instellingen, of profiel, om alle gebruikersspecifieke instellingen zoals bladwijzers, geschiedenis en extensies te bewaren. Tijdens opstarten kiest Firefox die map op basis van een paar criteria, waaronder opdrachtregelargumenten, omgevingsvariabelen en een bestand met bekende en standaardprofielen.

Firefox 67 had tot doel om gebruikers in staat te stellen om simultaan verschillende installaties van Firefox te gebruiken, zonder noodzakelijke configuratie van opdrachtregelargumenten, en het gedrag te stoppen waarin profielen werden gebruikt met oudere versies van Firefox dan waarin ze eerst werden gebruikt, aangezien dit gedrag niet wordt ondersteund en problemen kan veroorzaken die moeilijk te beoordelen en op te lossen zijn, en die in sommige gevallen ernstig genoeg zijn om Firefox volledig onbruikbaar te maken. Daarom zijn wijzigingen aangebracht in de profielselectie.

Dit artikel beschrijft in detail hoe selectie van een profiel eerst werkte, hoe het nu werkt in Firefox 67 en hoe we gebruikers van eerdere versies migreren.

Eerder gedrag

Bij opstarten laadde Firefox een lijst met bekende profielen uit een bestand profiles.ini, dat op een specifieke locatie in de gebruikersmap te vinden is. Dit bevat een aantal instellingen en een lijst met bekende profielen en de schijflocaties daarvan. Een daarvan werd aangemerkt als het standaardprofiel. Deze standaard was van toepassing op elke versie of installatie van Firefox die de gebruiker uitvoerde.

Firefox controleerde dan een aantal omgevingsvariabelen en opdrachtregelargumenten die mogelijk het standaardprofiel zouden overschrijven. De details worden hier niet beschreven, aangezien dat gedrag niet is veranderd. Het volstaat te zeggen dat als deze controles waren gedaan, Firefox of een profiel dat gebruikt wordt heeft gekozen of er geen heeft gevonden.

Als er geen profiel werd gevonden en er profielen in profiles.ini staan (dit zou een foutief opdrachtregelargument aanduiden, of geen van de profielen zou zijn aangemerkt als de standaard), dan werd een profielbeheerder getoond, waarmee de gebruiker een profiel kon selecteren, of een als standaard te gebruiken profiel kan aanmaken.

Als er geen profiel werd gevonden en profiles.ini leeg is, dan wordt dit beschouwd als de eerste keer dat Firefox wordt uitgevoerd en wordt er zonder interactie met de gebruiker een nieuw, leeg standaardprofiel aangemaakt en gebruikt.

De gebruiker kan het standaardprofiel te allen tijde wijzigen via de profielbeheerder, dit wijzigde de standaard voor alle installaties en versies van Firefox.

Firefox Developer Edition

Een complicatie is Firefox Developer Edition, dat normaal een ander standaardprofiel dan andere versies van Firefox gebruikt. Dit wordt bereikt door de markering van het normale standaardprofiel in profiles.ini te negeren en in plaats daarvan een profiel met de naam “dev-edition-default” als standaard te gebruiken. Dit verschil veroorzaakte diverse bugs en er was dus behoefte om Developer Edition op dezelfde manier te laten gedragen als andere versies.

Meerdere exemplaren

Een extra detail is wat er gebeurt als er al een exemplaar van Firefox wordt uitgevoerd. Voordat selectie van het profiel begint, probeert Firefox een bestaand exemplaar van Firefox op het systeem vinden. Als er een bestaat, dan worden de op te starten opdrachtregelargumenten naar het bestaande exemplaar gestuurd en daar uitgevoerd in plaats van een ander exemplaar.

In Windows kan slechts een exemplaar van Firefox tegelijkertijd worden uitgevoerd, tenzij de opdrachtregel -no-remote wordt gebruikt voor extra exemplaren. Deze starten ongeacht andere uitgevoerde exemplaren, maar ook elk toekomstig exemplaar van Firefox zal deze exemplaren niet kunnen detecteren en zal starten als geen normaal exemplaar van Firefox wordt gevonden. Als meerdere exemplaren worden uitgevoerd, moet elk ervan een apart profiel gebruiken. Om dit af te dwingen worden profielvergrendelingen gebruikt.

In Linux is dit vergelijkbaar, maar met een aantal complicaties. Al een opdrachtregelargument waarin een profiel wordt opgegeven wordt doorgegeven, dan probeert Firefox alleen een bestaand exemplaar met dat profiel te vinden en het daaraan door te geven. Als het niet wordt gevonden, dan wordt verdergegaan met opstarten. Een argument -new-instance kan ook worden doorgegeven, waardoor Firefox zal starten, ongeacht bestaande exemplaren.

Nieuw gedrag

Met versies van Firefox van67 en hoger, wordt in plaats van een standaardprofiel voor alle installaties van Firefox voor elke installatie van Firefox (op basis van de fysieke locatie op de schijf, na het volgen van een aantal symbolische koppelingen) een eigen standaardprofiel gebruikt.

In deze sectie verwijst “oud profiel” naar het profiel dat als standaard gebruikt zou zijn door versies van Firefox voor versie 67, “specifiek profiel” verwijst naar het profiel dat als standaard is gemarkeerd voor een installatie van Firefox.

Bij opstarten laadt Firefox nog steeds profiles.ini, dit bevat dezelfde informatie als eerst. Een van de bekende profielen kan als het oude standaardprofiel zijn gemarkeerd. In aanvulling hierop bevat profiles.ini nu een lijst met bekende installaties van Firefox. Elke nieuwe sectie heeft een naam op basis van een hash van de Firefox-installatiemap. Elke installatiesectie bevat de schijflocatie van het specifieke profiel voor die installatie, evenals een markering voor of het profiel is “vergrendeld” voor die installatie.

Zoals eerst, controleert Firefox nog steeds opdrachtregelargumenten en omgevingsvariabelen die mogelijk de selectie van het standaardprofiel overschrijven. Als er al een specifiek standaardprofiel voor deze installatie is, dan wordt dit gebruikt als standaardprofiel en wordt er verder opgestart.

Het gedrag wordt anders wanneer geen standaard voor deze installatie is aangegeven (dit omvat ook het geval waarin Firefox opstart na een herstart en de voorgaande uitvoering gebruikmaakte van het oude standaardprofiel, dit treedt meestal op bij een automatische herstart om een update naar versie 67 of hoger toe te passen).

Als de installatiesectie bestaat in profiles.ini, maar niet refereerde naar een bestaand profiel (omdat het is verwijderd), dan wordt een nieuw specifiek profiel aangemaakt en gebruikt.

Als er geen installatiesectie bestaat in profiles.ini, dan wordt dit beschouwd als de eerste keer dat deze installatie als versie 67 of hoger wordt uitgevoerd. In dit geval wordt een heuristiek gebruikt om te beslissen of een nieuw specifiek standaardprofiel moet worden aangemaakt, of dat het oude standaardprofiel als het nieuwe specifieke standaardprofiel voor deze installatie moet worden aangemerkt:

  1. Bevat het oude standaardprofiel een bestand compatibility.ini en kan dit worden ontleed? Zo nee, dan wordt een nieuw specifiek standaardprofiel aangemaakt en wordt verder opgestart. (Alleen zéér oude versies van Firefox maken dit bestand niet aan, dus als het ontbreekt betekent dit dat dit een volledig leeg profiel is, of dat het zo oud is dat het waarschijnlijk niet bruikbaar is met moderne versies van Firefox).
  2. Het bestand compatibility.ini bevat informatie over de laatste installatie van Firefox om het oude standaardprofiel te gebruiken. Als het oude standaardprofiel voor het laatst is gebruikt door een andere installatie van Firefox, dan wordt een nieuw specifiek standaardprofiel aangemaakt en wordt verder opgestart.
  3. Controleren of andere bekende installaties van Firefox het oude standaardprofiel hebben gemarkeerd als hun specifieke standaardprofiel en het profiel is gemarkeerd als “vergrendeld” voor die installatie. Zo ja, dan wordt een nieuw specifiek standaardprofiel aangemaakt en wordt verder opgestart.
  4. Het oude standaardprofiel als het specifieke standaardprofiel voor deze installatie markeren, het verwijderen als het specifieke standaardprofiel voor andere installaties van Firefox (op zo’n manier dat wanneer deze opnieuw worden gestart ze gewoon een nieuw profiel aanmaken in plaats van proberen het oude standaardprofiel te gebruiken). Verdergaan met opstarten. Het profiel is nu nog steeds gemarkeerd als het oude standaardprofiel, dus oudere versies van Firefox zullen het als hun standaardprofiel blijven gebruiken, totdat ze worden bijgewerkt.
    • Later tijdens het opstarten (dit kan om verschillende redenen niet vroeg tijdens het opstarten worden uitgevoerd) controleert Firefox of deze installatie is aangemerkt als de standaardbrowser in het besturingssysteem. Zo ja, het specifieke standaardprofiel markeren als “vergrendeld” voor deze installatie.

De gebruiker kan nog steeds het specifieke standaardprofiel voor deze installatie van Firefox wijzigen met de profielbeheerder, de wijziging is alleen van toepassing op deze installatie van Firefox. Op deze manier selecteren, markeert het gekozen profiel als “vergrendeld” voor deze installatie.

Firefox Developer Edition

Met Firefox Developer Edition 67 is de selectie van het standaardprofiel meer gestandaardiseerd. Developer Edition gebruikt nu hetzelfde systeem voor het selecteren van het specifieke standaardprofiel als andere versies van Firefox 67 en is niet langer afhankelijk van specifieke profielnamen. De enige wijziging ten opzichte van bovenstaande beschrijving is dat “oud profiel” verwijst naar het profiel met de naam “dev-edition-default” in plaats van het profiel dat in profiles.ini als standaard is gemarkeerd.

Meerdere exemplaren

Het uitvoeren van meerdere exemplaren van Firefox is met Firefox 67 ook gewijzigd. Windows en Linux gedragen zich nu identiek:

Tijdens opstarten loopt Firefox door de volledige profielselectie om te beslissen welk profiel gewenst is op basis van opdrachtregelargumenten, omgevingsvariabelen en informatie over het standaardprofiel. Firefox zoekt dan naar een bestaand exemplaar van Firefox dat het gewenste profiel gebruik. Als er een bestaat dan worden in plaats van opstarten enige opdrachtregelargumenten doorgezet naar het gevonden exemplaar.

Dit heeft als voordeel dat u verschillende installaties van Firefox naast elkaar kunt uitvoeren zonder extra opdrachtregelargumenten. Ze gebruiken elk een eigen standaardprofiel, er één opstarten gebruikt het standaardprofiel, een ander opstarten gebruikt het andere standaardprofiel. Als u Firefox Beta uitvoert en de reguliere Firefox de standaardbrowser van het besturingsgsysteem is, dan zorgt het openen van een koppeling in een andere toepassing dat deze wordt geopend in de reguliere Firefox, waar deze voorheen zou zijn geopend in welke Firefox dan ook op dat moment uitgevoerd zou worden.

Met deze functie zijn de labels -no-remote en -new-instance niet meer nodig om verschillende exemplaren van Firefox tegelijkertijd uit te voeren, maar het levert geen fouten op als ze worden gebruikt.

Blokkeren van downgrades

Een andere wijziging in Firefox 67 is de detectie van een profieldowngrade. Bij opstarten kijkt Firefox naar het profiel om te zien of dit voor het laatst door een nieuwere versie van Firefox dan de versie die de gebruiker probeert te starten is gebruikt. Hiervan is bekend dat het veel problemen kan veroorzaken, soms evidente, soms minder duidelijke. Firefox voorkomt nu dat de gebruiker dit doet en biedt in plaats daarvan de optie om een nieuw profiel aan te maken.

De wijzigingen uitschakelen

De wijzigingen aan de selectie van het profiel kunnen worden teruggedraaid door de omgevingsvariabele MOZ_LEGACY_PROFILES in te stellen. Dit draait echter de wijzigingen aan het uitvoeren van meerdere exemplaren niet terug. Downgradeblokkering kan worden omzeild door de omgevingsvariabele MOZ_ALLOW_DOWNGRADE in te stellen, of door het opdrachtregelargument --allow-downgrade door te geven bij het uitvoeren van Firefox.


Vroege alfa- en bètaversies van Firefox 67 bewaarden deze informatie in een ander bestand, genaamd installs.ini. Dit bestand bestaat nu nog steeds als een reservekopie van de gegevens in profiles.ini en wordt opnieuw geïmporteerd in profiles.ini als een oudere versie van Firefox dit mocht verwijderen. Aanpassen van het bestand profiles.ini wordt niet ondersteund en wordt sterk afgeraden, elke aanpassing van de informatie over installaties in profiles.ini zonder tevens installs.ini aan te passen kan verloren gaan als een versie van Firefox voor 67 wordt uitgevoerd.

Was dit artikel nuttig?

Een moment geduld…

Deze aardige mensen hebben geholpen bij het schrijven van dit artikel:

Illustration of hands

Vrijwilliger worden

Laat uw expertise groeien en deel deze met anderen. Beantwoord vragen en verbeter onze kennisbank.

Meer info