Ik heb Firefox op CentOS gebouwd en heb problemen met het instellen van standaardvoorkeuren. Volgens de officiële documenten :

  1. Maak een JavaScript-bestand in defaults / pref (op Linux) genaamd autoconfig.js

Hier is mijn /tmp/ff-build/bin/defaults/pref/autoconfig.js:

// First line must be a comment pref("general.config.filename", "mozconfig.cfg"); pref("general.config.obscure_value", 0); 
  1. Maak een .cfg-bestand (volgens afspraak mozilla.cfg – het kan elk bestand zijn naam echt; het moet gewoon overeenkomen met wat is gespecificeerd in general.config.filename prefer, hierboven) in de programmamap.

Hier is mijn /tmp/ff-build/bin/mozconfig.cfg waar het enige firefox binaire bestand is:

// Disable updater lockPref("app.update.enabled", false); // make absolutely sure it is really off lockPref("app.update.auto", false); lockPref("app.update.mode", 0); lockPref("app.update.service.enabled", false); // Disable updater lockPref("app.update.enabled¨, false); 

Firefox werkt prima zonder de autoconfig.js aanwezig, maar met de bovenstaande configuratie start Firefox niet met een pop-up display ying:

Kan het configuratiebestand niet lezen. Neem contact op met uw systeembeheerder.

Foutbericht

Ik “heb geprobeerd de mozconfig.cfg naar verschillende mappen te kopiëren, maar zonder wijzigingen. Hoe Firefox de -bestand? Begrijp ik de documenten verkeerd?

(Profielen worden verwijderd en opnieuw aangemaakt, zodat de oplossing niet inhoudt dat er iets aan een op ~ / gebaseerde map moet worden toegevoegd. Het bovenstaande is om standaardvoorkeuren te krijgen werken. Dank je.)

Reacties

  • Je zou kunnen proberen een absolute bestandsnaam op te geven als general.config.filename, gewoon om te zien of het het bestand aan het lezen is. En omring de code met try{ ... }catch(e){ displayError("myerror", e); }
  • Ik probeerde zoals je suggereerde om een absoluut pad in te stellen naar /tmp/ff-build/bin/mozconfig.cfg, en ik verpakte het in een try / catch-blok zoals voorgesteld. Het absolute pad werkte ook niet ', en try / catch heeft ' de fout niet opgevangen. Dezelfde algemene waarschuwing komt naar voren.
  • Misschien is er een niet-afdrukbaar onecht karakter in het .cfg-bestand. Probeer een leeg bestand en voeg elke regel een voor een toe totdat deze breekt. strace -e open het binaire programma om te zien welke bestanden het opent.
  • @meuh Vond een vreemde ¨ die wordt verondersteld een " zijn. Probeer / catch won ' om syntaxisfouten op te vangen, en er is geen ontwikkelaarsconsole. Was moeilijk te herkennen. Bedankt voor de hulp.

Antwoord

De “Kan het configuratiebestand niet lezen. Neem contact op met uw systeembeheerder . ” is een generiek foutbericht. Het probleem kan zijn in autoconfig.js of in mozconfig.js.

Met strace -e ./firefox zoals voorgesteld door @meuh toonde aan dat Firefox het configuratiebestand laadt:

open("/tmp/ff-build/bin/mozconfig.cfg", O_RDONLY) = 5 

Het plaatsen van een try / catch in mozconfig.cfg op deze manier levert geen problemen op, maar:

// Disable default browser check try { lockPref("browser.defaultbrowser.notificationbar", false); lockPref("browser.shell.checkDefaultBrowser", false); lockPref("browser.shell.skipDefaultBrowserCheck¨, true); // Disable updater lockPref("app.update.enabled¨, false); } catch(e) { displayError("Error", e); } 

Een lege mozconfig.cfg werkt echter, dus een regel voor regel verwijdering en test werd uitgevoerd en ontdekte een vreemd dubbel aanhalingsteken: ¨. Dit is een syntaxisfout en terecht werd de try / catch niet aangeroepen.

Normaal gesproken zouden dit soort fouten voorkomen gevangen in het ontwikkelaarspaneel, maar dat is nog niet beschikbaar.

Het bovenstaande script uitvoeren via jslint rapporten

Niet-gesloten string.

lockPref("app.update.enabled¨, false); 

Dit zijn de stappen die ik heb genomen om die algemene foutmelding te debuggen en op te lossen. Ik hoop dat deze stappen helpen p iemand anders ook.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *