Wir haben eine klassische Desktop-Anwendung unter Windows, die mit den Webbrowsern kommunizieren muss. Daher haben wir Webbrowser-Erweiterungen erstellt und verwenden die native Messaging-Technologie, um Nachrichten zwischen dem JavaScript auf einer Webseite und der nativen Desktop-Anwendung zu übergeben. Diese Art der Kommunikation wird derzeit in Google Chrome, Mozilla Firefox und Opera unterstützt. Nun möchten wir die gleiche Aufgabe in Microsoft Edge durchführen. Leider unterstützt Microsoft Edge natives Messaging anders als die anderen Browser. In Chrome/Firefox/Opera kann einfach eine serialisierte JSON-Zeichenfolge über stdin/stdout an eine native Messaging-Hostanwendung übergeben werden.MS Edge Extension mit Native Messaging auf Desktop-PC - UWP-App im Hintergrund ausführen/keine Benutzeroberfläche
Da Microsoft Edge eine universelle Windows-Plattform-Anwendung ist, unterstützt es nur die Kommunikation mit einer anderen UWP-App über AppService (und kommuniziert weiterhin mit unserer klassischen Desktop-Anwendung über FullTrustProcess). Unsere klassische Desktop-App kann aus vielen Gründen nicht in eine UWP-App konvertiert werden. Grundsätzlich ist das kein Problem, aber es gibt einige Probleme, die ich derzeit nicht lösen kann:
UWP Apps scheinen eine Benutzeroberfläche zu benötigen. Aber der Zweck der Erweiterung ist nur die Kommunikation, es ist keine Benutzeroberfläche vorgesehen.
So könnte ich einige Informationen über die UWP App/Edge Extension anzeigen, wenn der Benutzer die UWP App öffnet, aber wenn der Benutzer die App schließt (zB durch Klicken auf die (X) Taste), wird der UWP App Prozess beendet das System. Wenn dies während eines Kommunikationsprozesses geschieht, wird die native Messaging-Kommunikation unterbrochen und der Benutzer erhält einen Fehler. Bisher habe ich noch keinen Weg gefunden dies zu vermeiden. Wenn Microsoft Edge die UWP-App startet (initiiert durch "runtime.connectNative" im Hintergrund-JavaScript-Code der Erweiterung), wird sie im Hintergrundmodus ausgeführt und beendet, wenn Microsoft Edge beendet wird, was OK ist. Aber wenn der Benutzer die App öffnet (z. B. über das Startmenü), wird der Prozess für die App wiederverwendet und läuft nun im Vordergrundmodus. Und wenn die Benutzeroberfläche der App vom Benutzer geschlossen wird, wird der ursprünglich von Microsoft Edge gestartete Prozess beendet. Ich habe das offizielle "ExtendedExecution" -Beispiel von Microsoft angeschaut, das verhält sich aber genauso.
Wahrscheinlich kann ich die HWND der UWP-App von unserer nativen Desktop-App finden und einige hässliche Hacks damit durchführen, aber ich möchte das auf jeden Fall vermeiden.
Grüße, Dominik
Thank you! Einstellung 'AppListEntry =" none "' tut genau das, was ich will, damit der Benutzer die Anwendung nicht mehr direkt starten kann. – dominik
Es besteht jedoch immer noch die Möglichkeit, dass der Benutzer die Anwendung startet, wenn er die geladene appx-package-Seite installiert und dann den "Starten" -Button des Paketinstallationsdialogs drückt. – dominik
Wenn Sie eine App vom Windows Store aus starten und diese App eine Erweiterung ist, wird Edge gestartet. Sie sollten den Einstiegspunkt im Manifest leer lassen, damit er funktioniert. – 2Jura5