5

Ich habe vor kurzem eine Google Chrome-Erweiterung entwickelt, die ein NPAPI-Plugin verwendet mit dem FireBreath-Framework verwendet. Ich habe gerade herausgefunden, dass Google diese Arten von Plugins in Kürze beenden wird und schließlich alle vorhandenen Erweiterungen, die sie verwenden, verbieten. Also würde ich gerne zur NaCl/PPAPI-Architektur wechseln, aber ich bin mir nicht sicher, ob diese Architektur sogar das unterstützen kann, was ich gerade im NPAPI-Plugin mache.Google Chrome Erweiterung mit NPAPI Umzug nach NaCl

In meinem aktuellen NPAPI-Plugin unterstütze ich OSX und Windows. In der OSX-Version führt das Plugin die Funktion system() aus, die ein kleines 1-zeiliges Applescript ausführt. Es sieht so aus:

osascript -e 'tell app ... 

In der Windows-Version führt es Funktionen in einer COM-Bibliothek aus. Beide Versionen machen genau das Gleiche. Eine andere Option, die ich habe, ist ein Python-Skript auszuführen. Wenn ich diesen Weg gehen würde, würde ich höchstwahrscheinlich Python in die native Komponente einbetten wollen.

Ist das mit NaCl/PPAPI überhaupt noch möglich?

Antwort

3

Da Sie bereits eine Erweiterung verwenden, können Sie sich Native Messaging als Ersatz für Ihre Verwendung von NPAPI ansehen.

+0

Natives Messaging funktioniert nicht, da der Prozess, mit dem ich interagiere, es nicht unterstützt. –

+0

Sie sagten, Sie haben ein NPAPI-Plugin entwickelt; Im nativen Messaging-Modell ist der Prozess, mit dem Ihre Erweiterung kommuniziert, eine von Ihnen erstellte Binärdatei, die denselben Code wie Ihr NPAPI-Plug-in ohne den gesamten NPAPI-Kleber und stattdessen die systemeigene native Nachrichtenbehandlung aufweist.Der Prozess, mit dem Sie letztendlich sprechen, unterstützt vermutlich auch das Laden als ein NPAPI-Plugin, aber das bedeutet nicht, dass NPAPI nicht als Vermittler arbeitet. – smorgan

+1

Ja, ich weiß, dass ich eine Brücke bauen kann, aber das wird mein letzter Ausweg sein. Mir gefällt, dass die NPAPI-Komponente in einem einfach zu installierenden Bundle aus dem Extension Store kommt. Die Browsererweiterung zu installieren und dann eine separate native Komponente zu installieren ist etwas, was ich nicht tun möchte, wenn ich es helfen kann. –

5

Die Möglichkeit, eine beliebige system() - Funktion auszuführen oder beliebige Funktionen aus einer COM-Bibliothek auszuführen, ist der Grund für die NPAPI-Verschrottung. Dito für die Ausführung eines Python-Skripts (Sie können natürlich Python-Skript in NaCl ausführen - aber es wird nicht in der Lage, System() -Funktion oder eine COM-Bibliothek entweder aufrufen).

Es ist nicht news: wie in dem Chrome-Comic am Tag der Chromium Release NPAPI Plugins wurde festgestellt ist uneingeschränkt und dass es ein großes Problem: http://www.google.com/googlebooks/chrome/small_30.html

Es war offensichtlich schon damals, dass diese Situation nur sein kann so lange toleriert. Plugins wurden für fünf Jahre toleriert, weil einige wichtige Dinge ohne sie nicht praktikabel waren, aber jetzt ist es an der Zeit Plugins zu löschen und sicherzustellen, dass nichts im Browser direkt auf das Betriebssystem zugreifen kann.

Wenn Sie einige Funktionen implementieren möchten, die derzeit nicht im Browser implementiert werden können, weil es keine entsprechende API gibt, ist es richtig, auf Chrom-Dev nachzufragen und diese API zu Chromium (und vielleicht auch anderen Browsern) hinzuzufügen). Zum Beispiel wurde kürzlich Zugang zu COM-Ports (nicht Bibliotheken) hinzugefügt (siehe http://developer.chrome.com/apps/app_hardware.html).

+0

Was das Plugin derzeit tatsächlich tut, interagiert mit Skype. Es legt den Skype-Status fest. Es ist enttäuschend, dass ich dies in einem Stock-Chrome-Browser bald nicht mehr tun kann. Danke für die Rückmeldung, ich werde mich nach Chrom-Dev erkundigen. –

+1

Wir sind Jahre weg von dem Tag, wo der Browser alles verarbeiten kann. Dateisystemzugriff, zum Beispiel die aktuellen Sandbox-JS-APIs funktionieren nicht, wenn Sie die Datei in einer echten App wie Autocad bearbeiten müssen. Die Entscheidung von Google wird lediglich den IE im Unternehmen verankern. –

0

Wenn Sie keine Interaktion zwischen Browser und Anwendung benötigen, können Sie externe Protokollunterstützung verwenden. Sie müssen das Protokoll in der Registrierung unter Windows registrieren. Ich weiß nicht, wie externe Protokolle auf OSX funktionieren. Wenn der Benutzer auf die externe Protokollverknüpfung klickt, zeigt Chrome ein Dialogfeld an, in dem der Benutzer die Anwendung starten kann.