Mail Extension: Zugriff auf Dateisystem und Windows-Registry

Wenn Sie plötzlich keine E-Mails mehr empfangen können

Bitte lesen Sie die Hinweise zu den beiden derzeit häufigsten Problemursachen!

Hier bitte klicken!

Diese rote Box verschwindet, wenn Sie in der rechten oberen Ecke auf das X klicken.

  • Hallo verehrte Thunderbird-Gesellschaft,


    ich bin ein wenig am verzweifeln und erhoffe mir bei euch einen Wink in die richtige Richtung zu erhalten. Hoffe nur, dass ihr mir hier technisch unter die Arme greifen könnt und ich auch richtig bin.


    Bisher hatte ich ein einfaches Thunderbird Add-on, dass XPCOM verwendet hatte, um auf die Registry wie auch auf das Dateisystem unter Windows zugreifen zu können. Es kann nicht online bezogen werden, sondern wird im Rahmen einer Desktop-Installation bereitgestellt. Doch das neuste Thunderbird verlangt nun, dass das "alte" XUL Overlay" etc. in eine Mail Extension umgestellt werden muss. Natürlich war mein bisheriges Overlay nicht kompatible (auch nicht im Legacy-Mode!) und ich musste neue UI-Wege gehen, was soweit geklappt hat.


    Nun aber zum konkreten Problem:

    Beim Auslesen von Registry-Werten wurde bisher via XPCOM im JavaScript auf Components.classes zugegriffen:

    Code
    this.windowsRegistry = Components.classes["@mozilla.org/windows-registry-key;1"].createInstance(Components.interfaces.nsIWindowsRegKey);


    Jedoch erhalte ich nun im Log diese beiden Meldungen dazu:

    - Das Components-Objekt sollte nicht mehr verwendet werden. Es wird bald entfernt.

    - exception TypeError: Components.classes is undefined


    Bisher konnte ich bei Recherchen keine Informationen darüber finden, mit was "Components" in Mail Extensions ersetzten werden sollte und wie ich dann dort auf Components.classes zugreifen kann. Habt ihr dazu vielleicht eine Idee oder Anhaltspunkt? Oder entwickelt sich hier Thunderbird zu einer reinen Web-Lösung, die keinen lokalen Zugriff (Registry, Dateisystem etc.) mehr ermöglicht? Bin für alle Hinweise dankbar.


    Danke vorab und Grüße,

    Oliver

  • graba

    Approved the thread.
  • In 68 und allen bislang geplanten Versionen gibt es für privilegiertes JS eigentlich keinen Unterschied im Bezug auf Components.classes. Ich habe auch nichts gehört, dass sich das bald ändern soll.


    Kann das sein, dass du unprivilegiertes JavaScript nutzt (d.h. eine "reine" WebExtension in einer Sandbox ohne XPCOM)? Dort ist nur erlaubt, was dir deine Berechtigungen explizit ermöglichen. Wenn du in einer WebExtension an XPCOM willst, musst du ein "Experiment" anhängen. Im Experiment darfst du privilegiertes JS schreiben – und für die WebExtension eine API bereitstellen, mit dem dieses dann privilegierte Funktionen nutzen kann.


    Die Idee ist, dass Thunderbird solche Experimente einerseits mehr oder weniger direkt übernehmen kann, um so die WebExtension-Schnittstellen langfristig zu verbessern. Andererseits sollen größere Umbauten für neue Thunderbird-Versionen zukünftig nur in den Experimenten notwendig sein (diese aber dafür umso größer ausfallen!). Es empfiehlt sich also, die Experimente so klein wie möglich zu halten.

  • Das sind ja schon mal sehr interessant Informationen - vielen Dank dafür.


    Aktuell verwende ich eine "Mail Extension" - ist aber vermutlich eine "Web Extension" wie in Firefox, nur dass es in Thunderbird "Mail Extension" genannt wird.

    Quote

    Dort ist nur erlaubt, was dir deine Berechtigungen explizit ermöglichen.

    Mit den Berechtigungen hier wird vermutlich "permissions" im manifest.json gemeint sein, oder? Hier konnte ich jedoch noch keine Option/Kombi finden, die mir das XPCOM zugänglich machen könnten.


    Die Alternative mit "Experiment" klingt spannen und unsicher zugleich. Ist das tatsächlich ein Pferd, auf das man langfristig setzen kann? Denn alleine der Name verheißt nichts wasserdichtes und ich will vermeiden in den kommenden Monaten schon wieder Hand anlegen zu müssen, nur weil es "Experimente" nicht mehr gibt - waren ja schließlich nur ein Experimente 8)


    Gibt es einen sinnvollen Zugang zu diesen "Experimenten", so dass ich mir die Entwicklung, API etc. anschauen kann, um es als mögliche Option in betracht zu ziehen? Wäre klasse, wenn es aus Erfahrung hierzu schon ein klasse Einstieg gäbe.


    Besten Dank vorab für weitere Infos zu diesem Thema.

  • Hier konnte ich jedoch noch keine Option/Kombi finden, die mir das XPCOM zugänglich machen könnten.

    Das wird es auch niemals geben, soviel wurde bereits beschlossen. Wenn du "alles" machen können willst (was XPCOM ja zulässt), brauchst du ein Experiment (das sollte dann auch irgendwie als "Berechtigung" dem Nutzer angezeigt werden, auch wenn es technisch keine Berechtigung ist).

    Ist das tatsächlich ein Pferd, auf das man langfristig setzen kann?

    Nein, soll es auch nicht sein. Rechne damit, dass das Experiment für jede ESR-Version vollständig neu geschrieben werden muss. Daher soll man es ja auch klein halten.

    Gibt es einen sinnvollen Zugang zu diesen "Experimenten", so dass ich mir die Entwicklung, API etc. anschauen kann, um es als mögliche Option in betracht zu ziehen?

    Ist zwar eigentlich für Firefox, aber ich würde zuerst die offizielle Übersicht unter https://webextensions-experiments.readthedocs.io/en/latest/ lesen und anschließend das dort verlinkte crashme anschauen. Dann sollte man loslegen können.




    Beim Lesen der Übersicht nicht erschrecken: in Firefox-Beta und -Release sind Experiments bewusst gesperrt (d.h. Mozilla verbietet Drittentwicklern, Experiments zu veröffentlichen) – für Thunderbird ist eine solche Sperre meines Wissens bislang nicht geplant.


    Edit: es gibt eine offizielle Dokumentation für Thunderbird. Frag mich nicht warum ich die gerade übersehen habe...

  • Danke für die super Infos.


    Aber so richtig Spaß macht es - in meinem Fall ja dann nicht - eine Mail Extension zu schreiben, wenn ich unter Windows Zugriff auf das Dateisystem oder die Registry benötige. Da ist es natürlich auch nur ein schwacher Trost, dass man es zwar jetzt mit Experimente lösen könnte (hoffentlich auch für den Release-Kanal von Thunderbird lauffähig?!) - es aber offenbar nicht von Dauer sein wird. Da muss ich mir tatsächlich was überlegen oder schlicht den Thunderbird-Support was das Add-on angeht auf Eis legen.


    Nochmal besten Dank für den prima Austausch hier.