Hlavní navigace

Pozměňování Mozillího instalátoru

30. 3. 2004
Doba čtení: 10 minut

Sdílet

Znáte ten sen typického providera - vlastní instalaci internetového prohlížeče, se záložkami s těmi jedinečnými firemními odkazy, s reklamním heslem v titulku okna prohlížeče a v neposlední řadě také s přednastaveným emailovým účtem. Aby to mohl být i sen aktivisty za právo zdrojového kódu být zveřejněn, musel by to být instalátor ... třeba Mozilly. Nemusíte být programátor, abyste si vytvořili svůj vlastní instalátor Mozilly, ale neobejdeme se bez editace textových souborů v rozličných formátech.

(Pozn. ed.: do některých dlouhých cest byly nasekány mezery kvůli sazbě, snad to nikoho nezmate :) –Johanka)

Mozilla má instalátor, který jde poměrně snadno pozměnit. Tento článek je o tom, jak si pozměnit instalátor mozilly, aby vyhovoval požadavkům obyčejných BFU z nějaké firmy, instituce, školy. K tomuto článku je k dispozici rovněž dodatek pro neaktivisty preferující instalátor pro Windows.

Instalátor je potřeba si stáhnout – nejlépe ten počeštěný z czilla.cz. Já zde budu pracovat s verzí 1.6. Linuxová distribuce je tradiční .tar.gz, s jehož rozbalením vám jistě nemusím radit.

Rozbalením instalátoru získáme sadu souborů s příponou xpi, těm říkejme komponenty, a nějaké další soubory. Nejdůležitější z nich je soubor config.ini, ve kterém je nadefinováno, jaké komponenty se mají nainstalovat, dá se v něm předem odsouhlasit license a podobně. Pod Linuxem je přímočaře krátký a při vytvoření toho nejjednoduššeji pozměněného instalátoru v něm nemusíme dokonce ani nic měnit. Nicméně pokud byste chtěli třeba přidat do instalátoru nějaké rozšíření, víte, kde máte začít.

Zaměřme se nyní na vlastní komponenty. Celý instalátor Mozilly je založen na technologii XPInstall. Soubory s příponou xpi nejsou nic jiného než obyčejné archivy ve formátu zip, které můžeme rozbalit například utilitou unzip.

Pro nás nejdůležitější komponentou je regcz.xpi. Podívejme se do config.ini, ať víme, s kým máme tu čest (a nemusíme si kvůli tomu config.ini číst celé, stačí v něm vyhledat „regcz.xpi“):

config.ini, řádek 223:

[Component10]
Description Short=Český region
; *** LOCALIZE ME BABY ***
Description Long=Regionální balík pro české uživatele
Archive=regcz.xpi
Install Size=380
Archive Size=123
Attributes=SELECTED|INVISIBLE
URL0=http://ftp.czilla.cz/mozilla/1.6/linux-xpi/

Máme tedy tu čest s regionálním balíčkem, který v sobě skrývá lokalizovaný obsah tak, jak jej můžeme zvolit v dialogu Úpravy->Předvolby->Vzhled->Jazyky/Obsah. Mohli bychom si teď vytvořit vlastní regionální balíček, což by bylo zajisté čistší, ale zato mnohem složitější řešení, než prostě pozměnit tento balíček stávající. V Mozille může být najednou nainstalováno více lokalizovaných obsahů. Při prvním spuštění Mozilly se použije ten lokalizovaný obsah, který byl nainstalován první. Pořadí, v jakém budou jednotlivé komponenty nainstalovány, se dá určit pomocí config.ini v sekcích „Setup TypeN“, kde N náleží množině {0, 1, 2, 3}. Obsah této komponenty je shrnut v následující tabulce a bude podrobněji rozebrán dále. „/“ zde a v dalším textu neznamená kořenový adresář, ale obsah komponenty regcz.xpi.

Tabulka č. 555
/bin/chrome/CZ.jar regionální balíček chrome
/bin/defaults/is­p/CZ šablony účtu
/bin/defaults/mes­senger/ CZ/mailViews.dat náhledy na zprávy v menu Pošta & Diskuze-> Zobrazit->Zprávy
/bin/defaults/pref výchozí hodnoty předvoleb
/bin/defaults/pro­file/CZ výchozí nastavení profilu
/bin/mozilla.bmp splashscreen pro windows
/bin/searchplugins

vyhledávací moduly

/install.js instalační script techonologie XPInstall

Ovšem ne vše, co je v této komponentě, bude ovlivňovat Mozillu jen pokud bude český lokalizovaný obsah vybrán. Obsah celého regcz.xpi je nainstalován do instalačního adresáře Mozilly, takže například soubor mozilla.bmp bude v instalačním adresáři vždy, i když bude vybrán americký lokalizovaný obsah. Ty soubory, která budou Mozillu ovlivňovat jen tehdy, když bude tento lokalizovaný obsah vybrán, jednoduše (ale ne obecně :)) poznáte podle toho, že mají „CZ“ ve svém názvu nebo jsou v nějakém podadresáři nazvaném „CZ“. A co všechno můžeme tímhle balíčkem změnit na Mozille? Vezmeme si to popořadě:

V souboru install.js je kupříkladu zapsáno, že (kromě jiných důležitých věcí) se veškerý obsah adresáře /bin má zkopírovat do instalačního adresáře Mozilly. Radši se jím nebudeme příliš zabývat, to by bylo na samostatný článek.

Profile Defaults

V adresáři /bin/defaults/profile/CZ je výchozí nastavení profilu. V profilu je veškeré vaše nastavení. Rychlý přehled nejdůležitějších souborů:

Tabulka č. 556
bookmarks.html soubor, ve kterém jsou uloženy záložky
localstore.rdf v tomto souboru je například uloženo, který panel má být zobrazen při spuštění, pozice a velikost oken při spuštění, zda se má Mozilla spustit maximalizovaně a podobně.
mimeTypes.rdf mime-typy pro pomocné aplikace, jinak se k nim dá dostat přes  Úpravy->Předvolby-> Prohlížeč->Pomocné aplikace
panels.rdf v tomto souboru je seznam panelů (sidebarů)
search.rdf a tady je seznam vyhledávacích modulů
prefs.js, user.js soubory s předvolbami, vysvětleno dále.

V podstatě nejjednodušším způsobem, jak upravit soubory v profile defaults, je vzít je z nějakého již existujícího profilu. Ale buďme opatrní – třeba v případě localstore.rdf je možná na místě vybrat si z něj jen části, které chceme, i když prosté překopírování by mělo taky stačit. Třeba tady jsou soubory v profilu rozebrány docela dopodrobna.

Preference čili předvolby

Soubory v adresáři /bin/defaults/pref (respektive defaults/pref v instalačním adresáři Mozilly) jsou ty, které určují výchozí nastavení předvoleb. Pokud by snad někdo nevěděl, co jsou v Mozille předvolby, tak ať do adresováho řádku své Mozilly zadá „about:config“. Ano, toto jsou předvolby. Předvolby se normálně nastavují v dialogu Úpravy->Předvolby. Každá předvolba má kromě svého místečka v dialogu také svůj interní název, to je ten, který je zobrazen v „about:config“. Povídání o tom, kde jsou předvolby uloženy, nepatří zrovna k těm krátkým příběhům, ale bohužel pro to, abychom dokázali předvolby správně přednastavit, je nezbytné.

Jak už jsem řekl, výchozí hodnoty předvoleb jsou souborech v adresáři defaults/pref v instalačním adresáři Mozilly. Tyto soubory jsou v Javascriptu a volají jedinou funkci: pref("jméno předvolby", "hodnota předvolby"), takže se na ně můžeme dívat i jako na jednoduchý textový konfigurák. Tyto soubory jsou načítány při spuštění Mozilly v obráceném abecedním pořadí, přičemž pokud je hodnota některé předvolby uvedena dvakrát, platí poslední uvedená.

Po načtení výchozích hodnot se Mozilla pokusí načíst tzv. konfigurační soubor (config file), kterým se dají předvolby i zamknout (zabránit jejich přenastavení uživatelem), ale ten teď pomiňme. Dalším souborem, ze kterého jsou předvolby načítány, je soubor prefs.js v uživatelském profilu. Tam jsou ukládány všechny uživatelsky nastavené předvolby. Jeho formát je podobný předchozím souborům s předvolbami, s tím rozdílem, že pro nastavení předvolby nevolá funkci pref, ale funkci user_pref("jméno předvolby", "hodnota předvolby"). Tento soubor by ale neměl být ručně editován, je generován automaticky.

Pokud si normální uživatel chce nastavit sám nějakou předvolbu jinak než přes dialog „Předvolby“ nebo přes „about:config“, může tak učinit v posledním souboru, který je zpracováván při načítání předvoleb – v souboru user.js v uživatelském profilu. Jelikož je tento soubor načítán jako poslední, předvolby v něm uvedené uvedené„přebijí“ výchozí nastavení předvoleb i uživatelské nastavení v prefs.js. Do tohoto souboru navíc není nikdy automaticky zapisováno, takže pokud si například uživatel běžným způsobem změní některou z předvoleb, kterou má i v souboru user.js, je toto nastavení uloženo do souboru prefs.js a při dalším spuštění Mozilly je opět přebito nastavením z  user.js. V  user.js se hodnota předvolby zadává stejně jako v prefs.js  – voláním funkce  user_pref("jméno předvolby", "hodnota předvolby").

V případě instalátoru bude nejvyužitelnější změnit výchozí nastavení předvoleb. Jména předvoleb, které chceme nastavit, se dají zjistit tak, že si zazálohujeme soubor prefs.js, potom běžným způsobem v dialogu předvolby nastavíme, Mozillu zavřeme, čímž zajistíme uložení souboru prefs.js, a tím i námi nově nastavených předvoleb, a oba soubory prefs.js (před a po) porovnáme. Předvolby, které do souboru prefs.js přibyly, jsou ty, které chceme nastavit. Abychom je přidali do instalátoru jako výchozí, zkopírujeme je z prefs.js  do /bin/defaults/pref/all.js na konec souboru a změníme user_pref na pref. To, že budou na konci souboru all.js zajistí, že budou načítány až jako poslední a budou opravdu nastaveny jako výchozí.

Regionální balíčky chrome

Soubor /bin/chrome/CZ.jar (a jemu podobné v jiných lokalizovaných obsazích) je opět archiv ve formátu zip, ve kterém jsou obsaženy tzv. regionální balíčky chrome. V nich jsou mimo jiné nastaveny výchozí hodnoty některých předvoleb, které jsou závislé na zvoleném lokalizovaném obsahu. Toho je dosaženo tak, že v souborech s výchozími hodnotami předvoleb je pro tyto předvolby uveden pouze jakýsi odkaz na to, kde je hodnota této proměnné umístěna v regionálním balíčku chrome zvoleného lokalizovaného obsahu.

Například výchozí hodnota domovské stránky je v souboru all.js nastavena takto:

soubor all.js, řádek 125:

pref("browser.startup.homepage",
    "chrome://navigator-region/locale/region.properties"); 

Vlastní hodnota této předvolby při vybraném českém lokalizovaném obsahu je potom uvedena v souboru CZ.jar!/locale/CZ/ navigator-region/ region.properties na řádku 18:

browser.startup.homepage=http://www.czilla.cz/start/

Vysvětlení, na jakých principech je založen onen odkaz, již není předmětem této kapitoly.

Kromě výchozích hodnot některých předvoleb obsahují regionální balíčky i různá další nastavení, která se vážou s lokalizovaným obsahem. Kromě několika výjimek obsahují regionální balíčky chrome pouze dva typy souborů.

Soubory s příponou .properties jsou v kódování, ve kterém jsou všechny znaky, které nepatří do ACSII, reprezentovány jako sekvence \uNNNN, kde NNNN je kód příslušného znaku v kódování Unicode (toto kódování je z javy známo jako unicode escapes. V těchto souborech jsou nastaveny výchozí hodnoty některých předvoleb a různá další nastavení. Pro zjištění, v kterém souboru je nastavena ta která předvolba, stačí dát vyhledat jméno předvolby v obsahu CZ.jar nebo se podívat, na který soubor vede onon „odkaz“ v souborech s výchozími hodnotami předvoleb. Nejdůležitější předvolby, které lze nastavit v souborech .properties, jsou shrunuty v následující tabulce.

Tabulka č. 557
browser.throb­ber.url

Adresa, na kterou Mozilla přejde po
kliknutí na jednotlivé throbbery – což
jsou „takové ty maličkaté obrázky“ v levém
horním rohu oken Mozilly.

messenger.thor­bber.url
compose.throb­ber.url
addressbook.throb­ber.url
editor.throbber.url
mailnews.star­t_page.url Úvodní stránka pošty
browser.startup­.homepage Výchozí domovská stránka
startup.homepa­ge_override_url Stránka, která se zobrazí místo domovské stránky při prvním spuštění Mozilly.

Soubory contents.rdf v kódování UTF-8 popisují obsahy regionálních balíčků. Pokud pouze pozměňujeme existující lokalizovaný obsah, nemusíme se jimi zabývat.

Jediný další soubor v regionálních balíčcích, který bych zde chtěl blíže popsat, je soubor CZ.jar!/locale/CZ/ global-region/region.dtd. V tomto kratičkém souboru je zajímavá hlavně entita releaseURL, kterou můžeme nastavit adresu poznámek k verzi ( Navigator->Nápověda-> Poznámky k verzi):

soubor region.dtd, řádek 3, UTF-8:

<!ENTITY releaseURL "http://www.mozilla.org/releases/mozilla1.6"> 

Přednastavení emailového účtu

Pokud jsou dopředu známy servery, na kterých budou mít uživatelé své emailové schránky, bylo by jistě vhodné, aby v „Průvodci vytvořením nového účtu“ byly tyto informace již přednastavené. Přesně to lze provést soubory v adresáři /bin/defaults/isp/CZ. Nejjednodušší způsob, jak vytvořit nějakou takovou šablonu emailového účtu, je pozměnit šablonu exitující – například tuto, která je pro AOL a je použita v Netscape 7. Pokud v tomto souboru čistě zaměníte adresy a názvy serverů, bude to pravděpodobně to, co jste potřebovali.

Titulek okna prohlížeče

I když ještě z dob MS IE nesnáším lecjaké pozměněné titulky oken, některé instituce by mohly změnu titulku okna prohlížeče požadovat. Lze jej změnit v souborech langcscz.xpi!/ bin/chrome/cs-CZ.jar!/ locale/cs-CZ/global/ brand.dtd a brand.properties. Přepsáním klasického „Mozilla“ v řádcích s „brandShortName“ změníme text téměř všude, kde se vyskytuje slovo Mozilla – tedy i v titulku okna prohlížeče. Dále ještě musíme pozměnit soubor langcscz.xpi!/ bin/chrome/cs-CZ.jar!/ locale/cs-CZ/navigator/ navigator.dtd, kde se musíme „zbavit“ úvodního „{czilla.cz}“ při spuštění prohlížeče.

CS24_early

Možnosti toho, co bychom mohli s Mozillou ještě provést, jsme ani zdaleka nevyčerpali. Ale to bychom se museli alespoň lehce seznámit s dalšími technologiemi, na nichž je Mozilla postavena, což už by nepatřilo do tohoto článku. Pokud by vás zajímalo, co všechno lze například s instalátorem Mozilly provést, můžete se podívat na poznámky k verzi jednoho podobně pozměněného instalátoru. Z prostorových důvodů bohužel tento instalátor nemohu dát k dispozici na vyzkoušení. Pokud by o něj někdo měl opravdu veliký zájem, tak jsou k dispozici zdrojáky tohoto upraveného instalátoru.

Co na závěr? Doufejme, že až příště potkáte nějaké CDčko od providera, bude tam i dvakrát Mozilla, jednou s .exe, podruhé s  .tar.bz!

Byl pro vás článek přínosný?