Når Firefox kjører, bruker den en innstillingskatalog, eller profil, til å lagre alle brukerspesifikke innstillinger som bokmerker, historikk og utvidelser. Ved oppstart velger Firefox hvilken katalog basert noen kriterier, inklusive kommandolinje-argumenter, miljøvariabler og en fil som lister opp kjente og standard profiler.
Firefox 67 hadde som mål å la brukere bruke forskjellige installasjoner av Firefox samtidig, uten å måtte konfigurere kommandolinjeargumenter, og stoppe oppførselen til å bruke profiler med eldre versjoner av Firefox enn de har sett siden denne oppførselen ikke støttes og er kjent for å forårsake problemer som er vanskelige å diagnostisere og fikse og i noen tilfeller er alvorlige nok til å gjøre Firefox helt ubrukelig. For å oppnå dette ble det gjort endringer i profilvalg.
Denne artikkelen beskriver i detalj hvordan valg av profil fungerte før, hvordan den fungerer nå fra og med Firefox 67, og hvordan brukere migreres fra tidligere versjoner.
Table of Contents
Tidligere oppførsel
Ved oppstart lastet Firefox opp en liste over kjente profiler fra filen profiles.ini plassert på et gitt sted i brukerens hjemmekatalog. Filen inneholdt noen innstillinger og en liste over de kjente profilene og hvor på disken de var lagret. En av disse var market som standard profilen. Standardprofilen gjaldt enhver versjon eller installasjon av Firefox som brukeren kjørte.
Firefox sjekket så en del miljøvariabler og kommandolinje-argumenter som kunne overstyre standardprofilen. Detaljer om dette utelates, siden dette ikke er endret. Det holder å nevne at når disse sjekkene er gjort, vil Firefox enten ha valgt en profil å starte med, eller ikke ha funnet noen i det hele tatt.
Om ingen profil ble funnet og det var listet profiler i profiles.ini (et tegn enten på et galt kommandolinje-argument eller at ingen av profilene var markert som standardprofil), ble en profilbehandler vist, slik at brukeren kunne velge en profil eller lage en ny standardprofil.
Om det ikke ble funnet noen profil og profiles.ini var tom, ble dette sett på som første gangs kjøring av Firefox, og en ny tom profil ble laget og brukt uten at brukeren ble involvert.
Brukeren kunne endre hva som skulle være standard profil ved hjelp av profilbehandleren, og det endret standardprofilen for alle installasjoner og versjoner av Firefox.
Firefox Developer Edition
En kompliserende sak var Firefox Developer Edition, som normalt brukte en standardprofil forskjellig fra andre versjoner av Firefox. Dette ble løst ved å ignorere markeringen av normal standardprofil i profiles.ini og i stedet bruke en profil merket "dev-edition-default" som standard. Denne forskjellen forårsaket mange feil og det ble nødvendig å få Developer Edition til å oppføre seg som andre versjoner.
Flere instanser
En tilleggsutfordring var hva som skjedde når det allerede var en instans av Firefox som kjørte. Før valg av profil ble startet, forsøkte Firefox å finne ut om det allerede kjørte en instans av Firefox på systemet. Om så, i stedet for å starte opp programmet, ble eventuelle kommandolinje-argumenter sendt til den eksisterende instansen og eksekvert av den.
På Windows kunne bare en instans av Firefox kjøre av gangen, med mindre kommandolinje-argumentet -no-remote
ble brukt for de neste instansene. Disse ville da starte uansett om det kjørte andre instanser, men også fremtidige Firefox-starter ville ikke kunne detektere disse instansene, og ville derfor starte om ikke en normal instans ble funnet. Når mer enn en instans skulle kjøre, måtte alle ha hver sin profil. Profillåser sørget for dette.
På Linux var det tilsvarende, men med noen kompliserende faktorer. Om et kommandolinje-argument som spesifiserte en bestemt profil ble sendt, ville Firefox kun forsøke å finne og overlate til en eksisterende instans som brukte den profilen; hvis den ikke fant en slik instans, ville den fortsette å starte opp. Selv kommandolinje-argumentet -no-remote
ble sendt videre, noe som medførte at Firefox startet uansett om det fantes kjørende instanser allerede.
Ny oppførsel
Fra og med Firefox versjon 67 har hver installasjon av Firefox (basert på den fysiske lokasjonen på disken etter å ha fulgt hvilken som helst symbolsk lenke) sin egen profil, isteden for at det er en standardprofil for alle installasjoner.
I denne delen av artikkelen brukes begrepet gammel profil om profilen som ville vært brukt som standard av Firefox versjoner før 67, mens dedikert profil brukes om profilen merket som standard for en installasjon av Firefox.
Ved oppstart laster Firefox fremdeles profiles.ini, som inneholder samme informasjon som før. En av de kjente profilene kan være markert som den gamle standardprofilen. I tillegg inneholder nå profiles.ini en liste over kjente Firefox-installasjoner. Hvert installasjonsavsnitt har et navn basert på en hash av katalogen til den Firefox-installasjonen. Hvert installasjonsavsnitt har informasjon om disklokasjonen for den dedikerte profilen for installasjonen, så vel som en markering av om profilen er “låst” til den installasjonen.
Som før sjekker Firefox om eventuelle kommandolinje-argumenter og miljøvariabler overstyrer valget av standard profil. Om denne sjekken ikke gir noe annet utfall, og det finnes en dedikert standardprofil for denne installasjonen, så brukes den og oppstarten fortsetter.
Der oppførselen avviker fra tidligere, er når det ikke finnes noen dedikert standardprofil for denne installasjonen (dette inkluderer tilfeller der Firefox starter som resultat av en omstart og den forrige økten brukte den gamle standardprofilen, generelt skjer dette ved en automatisk omstart for å ta i bruk en oppdatering til versjon 67 eller høyere).
Om installasjons-avsnittet finnes i profiles.ini men ikke hadde noen referanse til en eksisterende profil (profilen har blitt slettet), blir det opprettet en ny dedikert standardprofil som brukes.
Om det ikke finnes noe installasjons-avsnitt i profiles.ini for denne installasjonen, ansees det som første gang denne installasjonen har kjørt som versjon 67 eller høyere. I dette tilfellet brukes følgende tommelfingerregler for å avgjøre om det skal opprettes en ny dedikert standardprofil eller om den gamle standardprofilen skal merkes som dedikert standardprofil for denne installasjonen:
- Den gamle standardprofilen inneholder en compatibility.ini fil, og den kan leses. Hvis ikke, opprett en ny dedikert standardprofil og fortsett med oppstart. (Kun de aller aller eldste versjonene av Firefox opprettet ikke denne filen, så det at den mangler, betyr at dette er en helt tom profil eller at den er så gammel at den høyst sannsynlig ikke fungerer med nyere, moderne versjoner av Firefox).
- Filen compatibility.ini har informasjon om hva som er seneste installasjonen av Firefox som bruker den gamle standardprofilen. Om den gamle standardprofilen ble sist brukt av en annen installasjon av Firefox, så opprett en ny dedikert standardprofil og fortsett med oppstart.
- Sjekk om noen andre kjente installasjoner av Firefox har den gamle standardprofilen angitt som sin dedikerte standardprofil og profilen er merket som “låst” til den installasjonen. Om det finnes, opprett en ny dedikert standardprofil og fortsett med oppstart.
- Merk den gamle standardprofilen som dedikert standardprofil for denne installasjonen, fjern den som dedikert standardprofil for andre installasjoner av Firefox (gjort på en slik måte at når de startes neste gang, vil de bare lage en ny profil istedenfor å forsøke å bruke den gamle standardprofilen). Fortsett med oppstart. Profile er fremdeles merket som den gamle standardprofilen på dette tidspunktet, så eldre versjoner av Firefox vil fortsette å bruke den inntil de oppdateres.
- På et senere stadium i oppstarten (det kan av ulike årsaker ikke gjøres tidligere i oppstartsekvensen), sjekk om denne installasjonen av Firefox er merket som standard nettleser for operativsystemet. Om så, merk den dedikerte standardprofilen som “låst” til denne installasjonen.
Brukeren kan fremdeles endre den dedikerte standardprofilen for denne installasjonen av Firefox ved hjelp av profilbehandleren, endringen vil kun gjelde denne installasjonen av Firefox. Ved å velge på denne måten, vil den valgte profilen merkes som “låst” til denne installasjonen.
Firefox Developer Edition
I Firefox Developer Edition 67 er funksjonen for valg av standardprofil blitt endret til det som er standard for Firefox. Developer Edition bruker nå samme system for å velge den dedikerte standardprofilen som andre versjoner av Firefox 67, og bruker ikke lenger egen konvensjon for navngivning av profiler. Den eneste endringen i forhold til beskrivelsen over, er at “gammel profil” refererer til profilen “dev-edition-default” istedenfor profilen markert som standard i profiles.ini.
Flere instanser
Å kjøre flere samtidige instanser av Firefox endret seg også med Firefox 67. Nå oppfører dette seg likt i Windows og Linux:
Under oppstart gjennomfører Firefox hele profilvalgprosessen for å avgjøre hvilken profil som er ønsket basert på kommandolinje-argumentene, miljøvariabler og informasjon om standardprofil. Så ser Firefox etter om det allerede kjører en Firefox-instans som bruker den ønskede profilen, blir en funnet, sendes kommandolinje-argumentene til den instansen som er funnet, istedet for å starte en ny.
Fordelen med dette er at du kan kjøre forskjellige installasjoner av Firefox samtidig uten bruk av ekstra kommandolinje-argumenter. Hver instans vil ha sin egen standardprofil; startes en, vil den bruke sin egen standardprofil, starter du en annen, brukes den andre standardprofilen. Om du har Firefox beta kjørende og Firefox Release er standard nettleser for operativsystemet, vil en lenke åpnet fra en annen applikasjon åpnes i Firefox Release, der den tidligere ville ha blitt åpnet i den instansen av Firefox som tilfeldigvis kjørte på det tidspunktet.
Med denne funksjonaliteten på plass er det ikke lenger behov for flaggene -no-remote
og -new-instance
for samtidig å kjøre forskjellige instanser av Firefox, men de forårsaker ingen feil om de brukes.
Blokkering av nedgraderinger
En annen endring i Firefox 67 er deteksjon av nedgradering. I løpet av oppstarten sjekker Firefox profilen for å se om den sist ble brukt av en nyere versjon av Firefox enn det brukeren er i ferd med å starte nå. Dette er kjent for å skape mange problemer, noen ganger av innlysende årsaker, andre ganger er det mer uklart. Nå vil Firefox stoppe brukeren fra å starte en eldre versjon, og tilbyr i steden å opprette en ny profil å bruke i steden.
Deaktivere endringer
Endringer i profil-valg kan reverseres ved å sette miljøvariabelen MOZ_LEGACY_PROFILES
. Dette reverserer dog ikke endringene i kjørende multiple instanser. Blokkering av nedgradering kan forbigås ved å sette miljøvariabelen MOZ_ALLOW_DOWNGRADE
eller ved å legge på kommandolinje-argumentet --allow-downgrade
når Firefox kjøres.