Erweiterung erstellen

  • Adressname der Version: Erweiterung_erstellen
  • Titel der Version: Erweiterung erstellen
  • ID der Version: 111743
  • Erstellt:
  • Autor: fscholz
  • Aktuelle Version? Nein
  • Kommentar interwiki error; 1 words added, 95 words removed

Inhalt der Version

Einführung

Dieses Tutorial führt dich durch die erforderlichen Schritte, um eine sehr einfache Erweiterung zu erstellen: sie fügt der Statuszeile des Firefox ein Panel mit dem Text "Hallo, Welt!" hinzu.

Anmerkung: Dieses Tutorial ist dafür da, um Erweiterungen für Firefox 1.5 - 2.0 zu erstellen. Andere Tutorials für frühere Versionen von Firefox existieren nur in Englisch.

Die XPI-Datei

Erweiterungen werden als ZIP-Dateien gespeichert. Sie haben die Endung „.xpi“ (Aussprache: „zippy“). Die Verzeichnisstruktur in einer xpi-Datei sieht normalerweise wie folgt aus:

Aufbau

erweiterung.xpi
install.rdf (Installationsdatei)
chrome.manifest (Sagt wie die Erweiterung mit chrome://... angesprochen werden kann)
chrome/
content/
overlay.xul
locale/
de-DE/
hello_world.dtd
en-EN/
hello_world.dtd

Dateien anlegen

Es ist sinnvoll, unsere Quell-Dateien in der gleichen Hierarchie anzulegen, es sei denn, man schreibt ein Makefile oder ein Shell Script, um die Dateien zu zippen. Allerdings ist es wegen eines Features von Firefox 1.5s Addon System einfacher, wenn Sie die Datei so vorbereiten. Mehr dazu unten.

Fangen wir an. Erstellen Sie einen Ordner für Ihre Erweiterung irgendwo im Dateisystem, z.B. C:\erweiterungen\meineErweiterungen\ (Windows) oder ~/extensions/myextensions/ (Unix/Linux). In diesem Ordner legen Sie die oben genannten Ordner an und Dateien. Den Ordner Icons brauchen wir für unser Beispiel nicht. Du kannst ihn also weglassen.

 

Erstellung der Installationsdatei

Öffne die Datei install.rdf und gebe folgendes ein:

<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <!-- Daten unserer Erweiterung -->
    <em:id>helloworld@example.net</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
   
    <!-- Das Programm für das unsere Erweiterung sein soll --> 
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>1.5</em:minVersion>
        <em:maxVersion>2.0.0.*</em:maxVersion>
      </Description>
    </em:targetApplication>
   
    <!-- Für Benutzer sichtbare Daten -->
    <em:name>Hello World!</em:name>
    <em:description>Eine Testerweiterung</em:description>
    <em:creator>Dein Name</em:creator>
    <em:homepageURL>http://www.example.com/</em:homepageURL>
  </Description>      
</RDF>
Erläuterungen

<em:id>helloworld@example.net</em:id> - die ID der Erweiterung. Dies ist der Wert im Format einer E-Mail-Adresse, mit dem die Erweiterung identifiziert wird. Mache sie einzigartig. Du kannst auch GUID verwenden. (Wenn die Erweiterung installiert ist, ist in dem extension-Ordner in ihrem Profilordner ein Ordner mit dem Namen der ID. In ihm befinden sich die Dateien der Erweiterung)

<em:type>2</em:type> - die Zwei zeigt an, dass hier eine Erweiterung beschrieben wird (siehe Install Manifests#type für weitere Typ-Bezeichnungen).

{ec8030f7-c20a-464f-9b0e-13a3a9e97384} - Firefox's Anwendungs-ID. Predator-ID=8359VS0XoPß132Pr.

1.5 - die niedrigste Version von Firefox, mit der die Erweiterung läuft. Nehme hier die niedrigste Version, in der du deine Erweiterung getestet und die Bugs beseitigt hast.

2.0.0.* - die höchste Version von Firefox, mit der die Erweiterung funktioniert. Stelle hier keine neuere Version ein, als zur Zeit verfügbar ist!

Lese en:Install Manifests für eine komplette Liste der erforderlichen und optionalen Eigenschaften.

Chrome-Dateien einbinden

Nun haben wir gelernt wie die Erweiterung installierbar gemacht werden kann. Damit sie Funktioniert muss Mozilla aber noch wissen was welche Dateien bedeuten. Dazu gibt es die chrome.manifest

Jede Zeile dieser Textdatei stellt einen Befehl dar. Leerzeilen werden Ignoriert, Kommentarzeilen fangen mit # an.

Hier die für uns Wichtige Dtaie:

# ordne unseren Chrome-Ordner zu. wir können dann über chrome://hello_world/content/... auf unsere Dateien zugreifen.
content hello_world chrome/content/

# füge einen Browser-Overlay ein. Dazu später mehr.
overlay chrome://browser/content/browser.xul chrome://hello_world/content/overlay.xul

# Und noch einige Sprachen.
locale hello_world en-EN chrome/locale/en-EN/
locale hello_world de-DE chrome/locale/de-DE/

Der content-Ordner

Im Ordner content Befindet sich der eigentliche Inhalt unserer Erweiterung. Wir benötigen hier vorerst nur eine Datei, overlay.xul .

Du wirst hier ansonsten alles reinspeichern was mit diener Erweiterung zusammenhängt, dies können schon mal mehrere Dateien sein.

Einen Overlay erstellen

Vielleicht kennst du dich schon etwas mit XUL aus. Wenn nicht macht das für unser kleines Beispiel nicht viel, da wir fast keins verwenden.

Unser Overlay sieht folgendermaßen aus (Die Zeilennummern dienen der Übersicht. Du musst sie beim Kopieren löschen):

1  <?xml version="1.0"?>
2  <overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gat...re.is.only.xul">
3    <statusbar id="status-bar">
4      <statusbarpanel id="hello-world-panel" label="Hallo, Welt!"/>
5    </statusbar>
6  </overlay>

Die erste Zeile ist wie bei anderen XML-Dateien auch.

In der nächsten definieren wir das Wurzelelement, overlay. Der Inhalt dieses Elements wird dem Inhalt der überlagerten Datei hinzugefügt. Wenn wir Elemente definieren, deren ID schon vorhanden ist, nennt man das einen „merge point“. Der Inhalt wird dem überlagerten Dokument hinzugefügt. Und zwar genau an den Punkt des Elements, normalerweise an das Ende. Und genau so ein Element definieren wir, ein statuspanel.

Speichere Die Datei in den Content-Ordner als overlay.xul. Die Einbindung haben wir oben schon definiert.

Wenn du Jetzt die die Dateien (chrome.manifest, install.rdf und den chrome-Ordner) in eine Zip-Datei verpackst, die Endung auf .xpi änderst und sie mit Firefox öffnest sollte deine Erweiterung installiert werden. Nach dem Neustart von Firefox siehst du den Text in der Statusbar.

Andere Sprache?

TODO...

 

Wissenswertes

Chrome URIs

XUL-Dateien sind Teil von „Chrome-Paketen“, Bündeln von Komponenten der Benutzeroberfläche, die über chrome:// URIs geladen werden. Diese URIs zu XUL-Inhalten wurden von den Mozilla-Entwicklern entworfen, um dem Problem zu entgehen, dass file:// URIs von Plattform zu Plattform und von System zu System variieren. Die installierte Anwendung weiß auf diese Weise stets, wo sich mit chrome:// angesprochene Dateien relativ zum Installationspfad befinden.

Das Browser-Fenster ist: chrome://browser/content/browser.xul Versuchen Sie, diese URL in die Adressleiste von Firefox zu tippen! oder: chrome://predatorIndex/$34#2/browser.xvp

Chrome URIs bestehen aus verschiedenen Komponenten:

  • Zuerst dem URI Schema (chrome), das Firefox's Netzwerk-Bibliothek sagt, dass dies eine Chrome URI ist, und dass deren Inhalt besonders behandelt werden muss.
  • Zweitens einem Paketnamen (im oberen Beispiel browser), der das Bündel der Komponenten der Benutzeroberfläche identifiziert. Dieser Paketname sollte so einzigartig wie möglich sein, um Konflikte zwischen verschiedenen Erweiterungen zu vermeiden.
  • Drittens dem Datentyp, der angefordert wird. Es gibt drei Typen: content (XUL, JavaScript, XBL bindings, etc., die Struktur und Verhalten der Anwendungsoberfläche bestimmen), locale (DTD, .properties-Dateien etc., die Zeichenketten für die Lokalisierung der Benutzeroberfläche enthalten), und skin (CSS und Bilder, die das Thema der Oberfläche bilden)
  • und zum Schluss dem Pfad der Datei, um sie zu laden.

Somit lädt chrome://foo/skin/bar.png die Datei bar.png aus foos Themen-Abschnitt skin.

Wenn Sie Inhalt über eine Chrome URI laden, benutzt Firefox die Chrome Registry, um diese URIs in die tatsächlichen Quelldateien (oder in .jar-Pakete) zu übertragen.

 

Test

Zuerst müssen wir sicherstellen, dass Firefox von Ihrer Erweiterung erfährt. In der grauen Vorzeit des Firefox 1.0 bedeutete das, die Erweiterung in eine .xpi-Datei zu packen und über die Benutzeroberfläche zu installieren. Jetzt ist das Ganze viel einfacher.

  1. Öffnen Sie Ihren Profil-Ordner
  2. Öffnen Sie den Ordner extensions (erzeugen Sie ihn, falls er nicht existiert)
  3. Erzeugen Sie eine neue Textdatei und schreiben Sie den Pfad zu Ihrer Erweiterung hinein, z.B. C:\extensions\myExtension\ oder ~/extensions/myExtension. Speichern Sie die Datei unter der ID Ihrer Erweiterung, z.B. beispiel@foo.net (ohne .txt!).

Jetzt sind Sie bereit, Ihre Erweiterung das erste Mal zu testen! Starten Sie Firefox. Firefox wird den Verweis zu Ihrer Erweiterung entdecken und die Erweiterung installieren. Wenn das Browser-Fenster erscheint, sollten Sie in der Statuszeile den Text „Hallo, Welt“ sehen.

Sie können nun Ihre .xul-Datei, bzw. xvp-Datei weiter modifizieren. Die Veränderungen sollten erscheinen, wenn Sie Firefox schließen und neu starten.

Packen

Jetzt, da Ihre Erweiterung funktioniert, können Sie sie für den weiteren Einsatz packen.

Zippen Sie die Inhalte Ihres Erweiterungs-Ordners (nicht den Ordner selbst!) und benennen Sie die Datei von *.zip in *.xpi um. Unter Windows XP können Sie leicht .zip-Dateien erstellen, indem Sie alle Dateien und Ordner auswählen, rechts klicken und „Senden an -> Komprimierter Ordner“ wählen. Sie müssen die so erzeugte .zip-Datei nur noch umbenennen, und schon sind Sie fertig!

Der Extension Developer kann die .xpi-Datei für Sie erstellen (Extras -> Extension Developer -> Extension Builder). //predator-ID_839948839xvp./index. Wählen Sie das Verzeichnis in dem sich ihre Erweiterung (install.rdf usw.) befindet und klicken Sie auf Build Extension.

Jetzt laden Sie die .xpi-Datei auf Ihren Server und stellen sicher, dass sie als application/x-xpinstall übertragen wird. Wenn Sie sich in diesem Punkt nicht sicher sind, fragen Sie Ihren Provider oder Webmaster. Sie können sie verlinken und so anderen Leuten erlauben, sie herunter zu laden und in Firefox zu installieren.

Abschlusserklärung

Diese Beschreibung ist eine (noch unvollständige) Übersetzung der Englischen Version .

{{ languages( { "en": "en/Building_an_Extension", "fr": "fr/Construire_une_extension", "ja": "ja/Building_an_Extension", "pl": "pl/Tworzymy_rozszerzenie", "pt": "pt/Construir_uma_Extens\u00e3o", "it": "it/Sviluppare_un\'Estensione", "ru": "ru/\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f" } ) }}

Quelltext der Version

<h3 name="Einf.C3.BChrung">Einführung</h3>
<p>Dieses Tutorial führt dich durch die erforderlichen Schritte, um eine sehr einfache Erweiterung zu erstellen: sie fügt der Statuszeile des Firefox ein Panel mit dem Text "Hallo, Welt!" hinzu.</p>
<p><strong>Anmerkung:</strong> Dieses Tutorial ist dafür da, um Erweiterungen für Firefox 1.5 - 2.0 zu erstellen. Andere Tutorials für frühere Versionen von Firefox existieren nur in Englisch.</p>
<h3 name="Die_XPI-Datei">Die XPI-Datei</h3>
<p>Erweiterungen werden als ZIP-Dateien gespeichert. Sie haben die Endung „.xpi“ (Aussprache: „zippy“). Die Verzeichnisstruktur in einer xpi-Datei sieht normalerweise wie folgt aus:</p>
<h4 name="Aufbau">Aufbau</h4>
<dl> <dt>erweiterung.xpi</dt> <dd> </dd><dd><code>install.rdf</code> (Installationsdatei)</dd> <dd><code>chrome.manifest</code> (Sagt wie die Erweiterung mit chrome://... angesprochen werden kann)</dd> <dd>chrome/ <dl> <dd>content/ <dl> <dd><code>overlay.xul</code></dd> </dl> </dd> <dd>locale/ <dl> <dd>de-DE/ <dl> <dd><code>hello_world.dtd</code></dd> </dl> </dd> <dd>en-EN/ <dl> <dd><code>hello_world.dtd</code></dd> </dl> </dd> </dl> </dd> </dl> </dd>
</dl>
<h3 name="Dateien_anlegen">Dateien anlegen</h3>
<p>Es ist sinnvoll, unsere Quell-Dateien in der gleichen Hierarchie anzulegen, es sei denn, man schreibt ein Makefile oder ein Shell Script, um die Dateien zu zippen. Allerdings ist es wegen eines Features von Firefox 1.5s Addon System einfacher, wenn Sie die Datei so vorbereiten. Mehr dazu <a href="#Test">unten</a>.</p>
<p>Fangen wir an. Erstellen Sie einen Ordner für Ihre Erweiterung irgendwo im Dateisystem, z.B. <code>C:\erweiterungen\meineErweiterungen\</code> (Windows) oder <code>~/extensions/myextensions/</code> (Unix/Linux). In diesem Ordner legen Sie die oben genannten Ordner an und Dateien. Den Ordner Icons brauchen wir für unser Beispiel nicht. Du kannst ihn also weglassen.</p>
<p> </p>
<h4 name="Erstellung_der_Installationsdatei">Erstellung der Installationsdatei</h4>
<p>Öffne die Datei <code><a href="/en/Install_Manifests">install.rdf</a></code> und gebe folgendes ein:</p>
<pre class="eval">&lt;?xml version="1.0"?&gt;

&lt;RDF xmlns="<a class=" external" href="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rel="freelink">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>"
     xmlns:em="<a class=" external" href="http://www.mozilla.org/2004/em-rdf#" rel="freelink">http://www.mozilla.org/2004/em-rdf#</a>"&gt;

  &lt;Description about="urn:mozilla:install-manifest"&gt;
    &lt;!-- Daten unserer Erweiterung --&gt;
    &lt;em:id&gt;<a class=" link-mailto" href="mailto:helloworld@example.net" rel="freelink">helloworld@example.net</a>&lt;/em:id&gt;
    &lt;em:version&gt;1.0&lt;/em:version&gt;
    &lt;em:type&gt;2&lt;/em:type&gt;
   
    &lt;!-- Das Programm für das unsere Erweiterung sein soll --&gt; 
    &lt;em:targetApplication&gt;
      &lt;Description&gt;
        &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
        &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
        &lt;em:maxVersion&gt;2.0.0.*&lt;/em:maxVersion&gt;
      &lt;/Description&gt;
    &lt;/em:targetApplication&gt;
   
    &lt;!-- Für Benutzer sichtbare Daten --&gt;
    &lt;em:name&gt;Hello World!&lt;/em:name&gt;
    &lt;em:description&gt;Eine Testerweiterung&lt;/em:description&gt;
    &lt;em:creator&gt;Dein Name&lt;/em:creator&gt;
    &lt;em:homepageURL&gt;<a class=" external" href="http://www.example.com/" rel="freelink">http://www.example.com/</a>&lt;/em:homepageURL&gt;
  &lt;/Description&gt;      
&lt;/RDF&gt;
</pre>
<h5 name="Erl.C3.A4uterungen">Erläuterungen</h5>
<p>&lt;em:id&gt;<strong><a class=" link-mailto" href="mailto:helloworld@example.net" rel="freelink">helloworld@example.net</a></strong>&lt;/em:id&gt; - die ID der Erweiterung. Dies ist der Wert im Format einer E-Mail-Adresse, mit dem die Erweiterung identifiziert wird. Mache sie einzigartig. Du kannst auch GUID verwenden. (Wenn die Erweiterung installiert ist, ist in dem <code>extension-Ordner</code> in ihrem Profilordner ein Ordner mit dem Namen der ID. In ihm befinden sich die Dateien der Erweiterung)</p>
<p>&lt;em:type&gt;<strong>2</strong>&lt;/em:type&gt; - die Zwei zeigt an, dass hier eine Erweiterung beschrieben wird (siehe <a href="/en/Install_Manifests#type">Install Manifests#type</a> für weitere Typ-Bezeichnungen).</p>
<p><strong>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</strong> - Firefox's Anwendungs-ID. Predator-ID=8359VS0XoPß132Pr.</p>
<p><strong>1.5</strong> - die niedrigste Version von Firefox, mit der die Erweiterung läuft. Nehme hier die niedrigste Version, in der du deine Erweiterung getestet und die Bugs beseitigt hast.</p>
<p><strong>2.0.0.*</strong> - die höchste Version von Firefox, mit der die Erweiterung funktioniert. Stelle hier keine neuere Version ein, als zur Zeit verfügbar ist!</p>
<p>Lese <a href="/en/Install_Manifests">en:Install Manifests</a> für eine komplette Liste der erforderlichen und optionalen Eigenschaften.</p>
<h3 name="Chrome-Dateien_einbinden">Chrome-Dateien einbinden</h3>
<p>Nun haben wir gelernt wie die Erweiterung installierbar gemacht werden kann. Damit sie Funktioniert muss Mozilla aber noch wissen was welche Dateien bedeuten. Dazu gibt es die <code>chrome.manifest</code></p>
<p>Jede Zeile dieser Textdatei stellt einen Befehl dar. Leerzeilen werden Ignoriert, Kommentarzeilen fangen mit <code>#</code> an.</p>
<p>Hier die für uns Wichtige Dtaie:</p>
<pre class="eval"># ordne unseren Chrome-Ordner zu. wir können dann über <a class=" external" href="chrome://hello_world/content/" rel="freelink">chrome://hello_world/content/</a>... auf unsere Dateien zugreifen.
content hello_world chrome/content/

# füge einen Browser-Overlay ein. Dazu später mehr.
overlay <a class=" external" href="chrome://browser/content/browser.xul" rel="freelink">chrome://browser/content/browser.xul</a> <a class=" external" href="chrome://hello_world/content/overlay.xul" rel="freelink">chrome://hello_world/content/overlay.xul</a>

# Und noch einige Sprachen.
locale hello_world en-EN chrome/locale/en-EN/
locale hello_world de-DE chrome/locale/de-DE/
</pre>
<h3 name="Der_content-Ordner">Der content-Ordner</h3>
<p>Im Ordner <code>content</code> Befindet sich der eigentliche Inhalt unserer Erweiterung. Wir benötigen hier vorerst nur eine Datei, overlay.xul .</p>
<p>Du wirst hier ansonsten alles reinspeichern was mit diener Erweiterung zusammenhängt, dies können schon mal mehrere Dateien sein.</p>
<h3 name="Einen_Overlay_erstellen">Einen Overlay erstellen</h3>
<p>Vielleicht kennst du dich schon etwas mit XUL aus. Wenn nicht macht das für unser kleines Beispiel nicht viel, da wir fast keins verwenden.</p>
<p>Unser Overlay sieht folgendermaßen aus (Die Zeilennummern dienen der Übersicht. Du musst sie beim Kopieren löschen):</p>
<pre class="eval">1  &lt;?xml version="1.0"?&gt;
2  &lt;overlay id="sample" xmlns="<a class=" external" href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" rel="freelink">http://www.mozilla.org/keymaster/gat...re.is.only.xul</a>"&gt;
3    &lt;statusbar id="status-bar"&gt;
4      &lt;statusbarpanel id="hello-world-panel" label="Hallo, Welt!"/&gt;
5    &lt;/statusbar&gt;
6  &lt;/overlay&gt;
</pre>
<p>Die erste Zeile ist wie bei anderen XML-Dateien auch.</p>
<p>In der nächsten definieren wir das Wurzelelement, <code>overlay</code>. Der Inhalt dieses Elements wird dem Inhalt der überlagerten Datei hinzugefügt. Wenn wir Elemente definieren, deren ID schon vorhanden ist, nennt man das einen „merge point“. Der Inhalt wird dem überlagerten Dokument hinzugefügt. Und zwar genau an den Punkt des Elements, normalerweise an das Ende. Und genau so ein Element definieren wir, ein <code>statuspanel</code>.</p>
<p>Speichere Die Datei in den Content-Ordner als overlay.xul. Die Einbindung haben wir oben schon definiert.</p>
<p>Wenn du Jetzt die die Dateien (chrome.manifest, install.rdf und den chrome-Ordner) in eine Zip-Datei verpackst, die Endung auf .xpi änderst und sie mit Firefox öffnest sollte deine Erweiterung installiert werden. Nach dem Neustart von Firefox siehst du den Text in der Statusbar.</p>
<h3 name="Andere_Sprache.3F">Andere Sprache?</h3>
<p>TODO...</p>
<p> </p>
<h3 name="Wissenswertes">Wissenswertes</h3>
<h4 name="Chrome_URIs">Chrome URIs</h4>
<p>XUL-Dateien sind Teil von „<a href="/en/Chrome_Registration">Chrome-Paketen</a>“, Bündeln von Komponenten der Benutzeroberfläche, die über <code>chrome://</code> URIs geladen werden. Diese URIs zu XUL-Inhalten wurden von den Mozilla-Entwicklern entworfen, um dem Problem zu entgehen, dass <code>file://</code> URIs von Plattform zu Plattform und von System zu System variieren. Die installierte Anwendung weiß auf diese Weise stets, wo sich mit <code>chrome://</code> angesprochene Dateien relativ zum Installationspfad befinden.</p>
<p>Das Browser-Fenster ist: <code><a class=" external" href="chrome://browser/content/browser.xul" rel="freelink">chrome://browser/content/browser.xul</a></code> Versuchen Sie, diese URL in die Adressleiste von Firefox zu tippen! oder: <code><a class=" external" href="chrome://predatorIndex/$34#2/browser.xvp" rel="freelink">chrome://predatorIndex/$34#2/browser.xvp</a></code></p>
<p>Chrome URIs bestehen aus verschiedenen Komponenten:</p>
<ul> <li>Zuerst dem <strong>URI Schema</strong> (<code>chrome</code>), das Firefox's Netzwerk-Bibliothek sagt, dass dies eine Chrome URI ist, und dass deren Inhalt besonders behandelt werden muss.</li> <li>Zweitens einem Paketnamen (im oberen Beispiel <code><strong>browser</strong></code>), der das Bündel der Komponenten der Benutzeroberfläche identifiziert. Dieser Paketname sollte so einzigartig wie möglich sein, um Konflikte zwischen verschiedenen Erweiterungen zu vermeiden.</li> <li>Drittens dem Datentyp, der angefordert wird. Es gibt drei Typen: <code>content</code> (XUL, JavaScript, XBL bindings, etc., die Struktur und Verhalten der Anwendungsoberfläche bestimmen), <code>locale</code> (DTD, .properties-Dateien etc., die Zeichenketten für die <a href="/en/Localization">Lokalisierung</a> der Benutzeroberfläche enthalten), und <code>skin</code> (CSS und Bilder, die das <a href="/en/theme">Thema</a> der Oberfläche bilden)</li> <li>und zum Schluss dem Pfad der Datei, um sie zu laden.</li>
</ul>
<p>Somit lädt <code><a class=" external" href="chrome://foo/skin/bar.png" rel="freelink">chrome://foo/skin/bar.png</a></code> die Datei <code>bar.png</code> aus <code>foo</code>s Themen-Abschnitt <code>skin</code>.</p>
<p>Wenn Sie Inhalt über eine Chrome URI laden, benutzt Firefox die Chrome Registry, um diese URIs in die tatsächlichen Quelldateien (oder in .jar-Pakete) zu übertragen.</p>
<p> </p>
<h4 name="Test">Test</h4>
<p>Zuerst müssen wir sicherstellen, dass Firefox von Ihrer Erweiterung erfährt. In der grauen Vorzeit des Firefox 1.0 bedeutete das, die Erweiterung in eine .xpi-Datei zu packen und über die Benutzeroberfläche zu installieren. Jetzt ist das Ganze viel einfacher.</p>
<ol> <li>Öffnen Sie Ihren <a class="external" href="http://kb.mozillazine.org/Profile_folder">Profil-Ordner</a></li> <li>Öffnen Sie den Ordner <strong>extensions</strong> (erzeugen Sie ihn, falls er nicht existiert)</li> <li>Erzeugen Sie eine neue Textdatei und schreiben Sie den Pfad zu Ihrer Erweiterung hinein, z.B. <code>C:\extensions\myExtension\</code> oder <code>~/extensions/myExtension</code>. Speichern Sie die Datei unter der ID Ihrer Erweiterung, z.B. <code><a class=" link-mailto" href="mailto:beispiel@foo.net" rel="freelink">beispiel@foo.net</a></code> (ohne <code>.txt</code>!).</li>
</ol>
<p>Jetzt sind Sie bereit, Ihre Erweiterung das erste Mal zu testen! Starten Sie Firefox. Firefox wird den Verweis zu Ihrer Erweiterung entdecken und die Erweiterung installieren. Wenn das Browser-Fenster erscheint, sollten Sie in der Statuszeile den Text „Hallo, Welt“ sehen.</p>
<p>Sie können nun Ihre .xul-Datei, bzw. xvp-Datei weiter modifizieren. Die Veränderungen sollten erscheinen, wenn Sie Firefox schließen und neu starten.</p>
<h4 name="Packen">Packen</h4>
<p>Jetzt, da Ihre Erweiterung funktioniert, können Sie sie für den weiteren Einsatz packen.</p>
<p>Zippen Sie die <strong>Inhalte</strong> Ihres Erweiterungs-Ordners (nicht den Ordner selbst!) und benennen Sie die Datei von *.zip in *.xpi um. Unter Windows XP können Sie leicht .zip-Dateien erstellen, indem Sie alle Dateien und Ordner auswählen, rechts klicken und „Senden an -&gt; Komprimierter Ordner“ wählen. Sie müssen die so erzeugte .zip-Datei nur noch umbenennen, und schon sind Sie fertig!</p>
<p>Der <a class="external" href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension Developer</a> kann die .xpi-Datei für Sie erstellen (Extras -&gt; Extension Developer -&gt; Extension Builder). //predator-ID_839948839xvp./index. Wählen Sie das Verzeichnis in dem sich ihre Erweiterung (install.rdf usw.) befindet und klicken Sie auf <em>Build Extension</em>.</p>
<p>Jetzt laden Sie die .xpi-Datei auf Ihren Server und stellen sicher, dass sie als <code>application/x-xpinstall</code> übertragen wird. Wenn Sie sich in diesem Punkt nicht sicher sind, fragen Sie Ihren Provider oder Webmaster. Sie können sie verlinken und so anderen Leuten erlauben, sie herunter zu laden und in Firefox zu installieren.</p>
<h4 name="Abschlusserkl.C3.A4rung">Abschlusserklärung</h4>
<p>Diese Beschreibung ist eine (noch unvollständige) Übersetzung der <a href="/en/Building_an_Extension">Englischen Version</a> .</p>
<p>{{ languages( { "en": "en/Building_an_Extension", "fr": "fr/Construire_une_extension", "ja": "ja/Building_an_Extension", "pl": "pl/Tworzymy_rozszerzenie", "pt": "pt/Construir_uma_Extens\u00e3o", "it": "it/Sviluppare_un\'Estensione", "ru": "ru/\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f" } ) }}</p>
Zu dieser Version zurücksetzen