Während der Laufzeit von Firefox werden die benutzerspezifischen Einstellungen wie Lesezeichen, Chronik und Erweiterungen in einem separaten Ordner, dem sogenannten „Profil“, gesichert. Dieser Profilordner wird getrennt von den Firefox-Programmdateien gespeichert. Beim Startvorgang wählt Firefox diesen Profilordner anhand einiger Kriterien aus (z. B. Kommandozeilenparameter, Umgebungsvariablen und einer Datei, die bekannte und Standardprofile enthält).
Firefox-Version 67 wollte seinen Nutzern die gleichzeitige Verwendung verschiedener installierter Firefox-Instanzen ermöglichen, ohne dazu Kommandozeilenparameter konfigurieren zu müssen. Außerdem sollte verhindert werden, dass Profile, die in neueren Firefox-Versionen erstellt wurden, in älteren Versionen verwendet werden, da Firefox dieses Verhalten nicht unterstützt und dadurch bekanntermaßen Probleme verursacht werden, die nur schwer zu diagnostizieren und zu beheben sind – einige dieser Fälle sind so schwerwiegend, dass Firefox dadurch völlig unbrauchbar wird. Deshalb wurde die Auswahl der Firefox-Benutzerprofile geändert.
Dieser Artikel beschreibt ausführlich, wie die Auswahl eines Profils früher funktionierte, was sich ab Firefox-Version 67 änderte und wie die Nutzer von älteren Versionen migriert werden.
Inhaltsverzeichnis
Früheres Verhalten
Beim Starten lädt Firefox eine Liste mit den bekannten Benutzerprofilen aus der Datei profiles.ini, die sich an einem bestimmten Speicherort im Benutzerverzeichnis befindet. Sie enthält einige Einstellungen und eine Liste der bekannten Benutzerprofile, zusammen mit deren Speicherort auf der Festplatte. Eines dieser Profile wird als Standardprofil festgelegt und für jede vom Benutzer ausgeführte Firefox-Instanz oder Version gleich verwendet.
Firefox prüft dann eine Anzahl von Umgebungsvariablen und Kommandozeilenparameter, die das Standardprofil überschreiben könnten. Da sich das Verhalten nicht geändert hat, wird an dieser Stelle nicht näher auf die Einzelheiten eingegangen – es reicht die Information, dass Firefox nach Abschluss der Prüfung entweder ein Profil gewählt hat, mit dem er ausgeführt wird, oder dass kein Profil gefunden wurde.
Wenn kein Profil gefunden wurde, obwohl Profile in der Datei profile.ini aufgeführt sind, weist dies meist entweder auf einen falschen Kommandozeilenparameter hin oder es bedeutet, dass keines der Benutzerprofile als Standardprofil festgelegt wurde. In diesem Fall wird die Profilverwaltung angezeigt und der Nutzer kann dort manuell ein Profil wählen oder ein neues Profil erstellen und es als Standardprofil festlegen.
Wurde kein Profil gefunden und die Datei profile.ini ist leer, wird angenommen, dass Firefox zum ersten Mal ausgeführt wird, deshalb erstellt Firefox ein neues leeres Standardprofil und verwendet es ohne Benutzerinteraktion.
Der Benutzer kann das Standardprofil jederzeit in der Profilverwaltung ändern, dadurch ändert sich das Standardprofil für alle Firefox-Instanzen und Versionen.
Firefox Developer Edition
Eine Abweichung davon stellt Firefox Developer Edition dar, denn sie verwendet normalerweise ein anderes Standardprofil als die restlichen Versionen. Das geschieht, da die normale Kennzeichnung des Standardprofils in der Datei profile.ini ignoriert und stattdessen ein Profil mit dem Namen „dev-edition-default“ als Standard verwendet wird. Dieser Unterschied verursachte verschiedene Fehler und führte zum Bestreben, dass sich die Firefox Developer Edition genauso verhält wie die anderen Versionen.
Mehrere Instanzen
Dieser Absatz beschreibt, was geschieht, wenn auf Ihrem System bereits eine Instanz von Firefox ausgeführt wird: Bevor die Profilauswahl gestartet wird, sucht Firefox auf Ihrem System nach einer bereits laufenden Firefox-Instanz. Ist eine solche vorhanden, werden anstelle des Starts der Profilauswahl die Kommandozeilenparameter an die vorhandene Firefox-Instanz gesendet und werden von dieser ausgeführt.
Unter dem Betriebssystem Windows kann nur eine Firefox-Instanz ausgeführt werden, es sei denn, der Kommandozeilenparameter -no-remote wird zur Ausführung von weiteren Firefox-Instanzen verwendet. Damit erfolgt der Start einerseits unabhängig von einer anderen bereits laufenden Instanz und andererseits werden weitere Starts von Firefox eine solche Instanz nicht erkennen. Sollen mehrere Instanzen gleichzeitig ausgeführt werden, muss jede Instanz ein gesondertes Profil verwenden. Dieses Verhalten wird durch Profilsperren erzwungen.
Unter dem Betriebssystem Linux verhält es sich ähnlich, allerdings mit zusätzlicher Komplexität. Wenn ein Kommandozeilenparameter mit einem spezifizierten Profil übergeben wird, versucht Firefox nur, unter Verwendung dieses Profils eine vorhandene Instanz zu finden und an sie zu übergeben, wird sie nicht gefunden, wird der Startvorgang fortgesetzt. Auch der Parameter -new-instance kann übergeben werden, dadurch startet Firefox unabhängig von vorhandenen Instanzen.
Neues Verhalten
Seit Firefox-Version 67 und höher erhält jede Firefox-Installation ein eigenes separates Standardprofil (basierend auf dem tatsächlichen Speicherort im Dateisystem hinter eventuell vorhandenen symbolischen Verknüpfungen), anstatt ein einziges Standardprofil für alle Firefox-Installationen zu verwenden.
In diesem Abschnitt bezieht sich die Bezeichnung „altes Profil“ auf das Profil, das vor Firefox-Version 67 als Standardprofil verwendet worden wäre. „Gesondertes Profil“ bezeichnet dagegen das Profil, das als Standardprofil für eine Firefox-Instanz festgelegt ist.
Beim Start lädt Firefox weiterhin die Datei profile.ini, diese enthält dieselben Informationen wie zuvor. Eines der bekannten Profile kann als das alte Standardprofil gekennzeichnet sein. Zusätzlich enthält die Datei profile.ini jetzt eine Liste mit den bekannten Firefox-Installationen. Der Name jedes neuen Abschnitts basiert auf einem Hash des Firefox-Installationsverzeichnisses. Jeder Installationsabschnitt enthält den Speicherort des gesonderten Profils für diese Installation im Dateisystem sowie eine Information, ob das Profil für diese Installation „gesperrt“ ist.
Wie zuvor auch prüft Firefox weiterhin die Kommandozeilenparameter und Umgebungsvariablen, mit denen der standardmäßige Auswahlvorgang von Profilen überschrieben werden kann. Danach wird geprüft, ob für diese Installation bereits ein gesondertes Profil festgelegt wurde – falls ja, wird dieses als Standardprofil verwendet, und der Start wird fortgesetzt.
Das Verhalten unterscheidet sich dann, wenn für diese Installation kein gesondertes Profil als Standard festgelegt wurde (das trifft für den Fall zu, dass Firefox – bedingt durch einen Neustart – erneut ausgeführt wird und bei der vorherigen Laufzeit das alte Standardprofil verwendet wurde. Meistens geschieht dies während eines automatischen Neustarts zur Aktualisierung auf die Firefox-Version 67 oder höher).
Wenn der Installationsabschnitt in der Datei profile.ini vorhanden ist, sich aber auf kein vorhandenes Profil bezieht (da es inzwischen gelöscht wurde), wird ein neues gesondertes Standardprofil erstellt und verwendet.
Ist in der Datei profile.ini noch kein Installationsabschnitt vorhanden, wird davon ausgegangen, dass diese Installation zum ersten Mal als Version 67 oder höher ausgeführt wurde. In diesem Fall wird anhand folgender Heuristik entschieden, ob ein neues gesondertes Standardprofil erstellt oder das alte Standardprofil als gesondertes Profil für diese Installation festgelegt werden soll:
- Enthält das alte Standardprofil eine Datei namens compatibility.ini und kann diese geparst werden? Wenn nicht, wird ein neues gesondertes Standardprofil erstellt und der Start fortgesetzt. (Nur völlig veraltete Firefox-Versionen erstellen diese Datei nicht. Ihr Fehlen bedeutet entweder, es handelt sich um ein komplett leeres Profil, oder es ist so alt, dass es mit neueren Firefox-Versionen wahrscheinlich nicht verwendet werden kann.)
- Die Datei compatibility.ini enthält Informationen über die letzte Firefox-Installation, in der das alte Standardprofil verwendet wurde. Wenn das alte Standardprofil zuletzt von einer anderen Firefox-Installation verwendet wurde, wird ein neues gesondertes Standardprofil erstellt und der Start fortgesetzt.
- Es wird geprüft, ob bei einer anderen bekannten Firefox-Installation das alte Standardprofil als gesondertes Standardprofil festgelegt und das Profil für die Installation als „gesperrt“ gekennzeichnet ist. In diesem Fall wird ein neues gesondertes Standardprofil erstellt und der Start fortgesetzt.
- Das alte Standardprofil wird als gesondertes Standardprofil für diese Installation festgelegt und als gesondertes Standardprofil für andere Firefox-Installationen entfernt (damit beim nächsten Start anderer Firefox-Installationen ein neues Profil erstellt wird, anstatt zu versuchen, wieder das alte Standardprofil zu verwenden). Danach wird mit dem Start fortgesetzt. Das Profil ist zu diesem Zeitpunkt immer noch als das alte Standardprofil festgelegt, sodass es von älteren Firefox-Versionen weiterhin als Standardprofil verwendet wird, und zwar so lange, bis die alten Versionen aktualisiert werden.
- Später während des Startvorgangs (aus verschiedenen Gründen kann dies nicht schon früher im Startvorgang erfolgen) wird geprüft, ob diese Firefox-Installation als Standardbrowser des Betriebssystems festgelegt ist. In diesem Fall wird das gesonderte Standardprofil als für diese Installation „gesperrt“ markiert.
Der Nutzer kann das gesonderte Standardprofil für eine Firefox-Installation immer noch mithilfe der Profilverwaltung ändern. Diese Änderung wirkt sich nur auf diese eine Firefox-Installation aus und dadurch wird das gewählte Profil für diese Installation als „gesperrt“ markiert.
Firefox Developer Edition
Seit der Firefox Developer Edition Version 67 änderte sich die Profilauswahl und wurde den anderen Versionen angeglichen. Firefox Developer Edition verwendet jetzt das gleiche System zur Auswahl des gesonderten Standardprofils wie die anderen Versionen ab Firefox 67 und erfordert keine speziellen Profilnamen mehr. Der einzige Unterschied zur obigen Beschreibung besteht darin, dass sich „altes Profil“ auf das Profil mit dem Namen „dev-edition-default“ bezieht und nicht auf das Profil, das in profile.ini als Standardprofil gekennzeichnet ist.
Mehrere Instanzen
Auch das Ausführen von mehreren Firefox-Instanzen änderte sich mit Firefox-Version 67. Die Betriebssysteme Windows und Linux verhalten sich nun identisch:
Während des Startvorgangs durchläuft Firefox den vollen Profilauswahlprozess, um anhand der Kommandozeilenparameter, Umgebungsvariablen und Informationen des Standardprofils zu entscheiden, welches Profil gewünscht wird. Firefox sucht dann nach einer laufenden Firefox-Instanz, die das gewünschte Profil bereits verwendet. Wird eine solche gefunden, werden anstelle des Starts die Kommandozeilenparameter an die gefundene Instanz übergeben.
Dadurch können Sie verschiedene Firefox-Installationen gleichzeitig ausführen, ohne dazu vor dem Start erst zusätzliche Kommandozeilenparameter eingeben zu müssen. Jede Installation hat ihr eigenes Standardprofil und beim Starten einer Firefox-Installation wird das ihr zugeordnete Standardprofil verwendet, beim Starten einer anderen Firefox-Installation das dieser Installation zugeordnete Standardprofil. Wenn Firefox Beta ausgeführt wird und Firefox Release der Standardbrowser des Betriebssystems ist, wird beim Öffnen eines Links in einer anderen Anwendung dieser Link in Firefox Release geöffnet, während er früher in der Firefox-Installation geöffnet worden wäre, die zu diesem Zeitpunkt ausgeführt wurde.
Durch diese Funktion werden die Markierungen -no-remote und -new-instance nicht mehr benötigt, um verschiedene Firefox-Instanzen gleichzeitig ausführen zu können (sie verursachen aber auch keinen Fehler, wenn sie weiterhin verwendet werden).
Die Verwendung eines älteren Profils verhindern („Profil-Downgrade“)
Eine weitere Änderung in Firefox 67 ist das Erkennen von „Profil-Downgrades“. Beim Start prüft Firefox nun das Profil, um zu sehen, ob es zuletzt von einer neueren Firefox-Version verwendet wurde, als der Version, mit welcher der Nutzer zu starten versucht (denn dadurch werden viele Probleme verursacht, die manchmal ziemlich offensichtlich sind, manchmal aber nur schwer erkannt werden können). Firefox verhindert nun dieses Vorgehen und bietet dem Nutzer stattdessen die Möglichkeit, ein neues Profil zu erstellen.
Deaktivieren der Änderungen
Die Änderungen an der Profilauswahl können durch Setzen der Umgebungsvariablen MOZ_LEGACY_PROFILES rückgängig gemacht werden. Davon werden aber die Änderungen beim Ausführen mehrerer Instanzen nicht berührt. Die Blockierung des „Profil-Downgrades“ kann umgangen werden, indem die Umgebungsvariable MOZ_ALLOW_DOWNGRADE festgelegt oder bei Ausführung von Firefox der Kommandozeilenparameter --allow-downgrade übergeben wird.