Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Twebbrowser, edge verwenden wenn vorhanden greift nicht (https://www.delphipraxis.net/210106-twebbrowser-edge-verwenden-wenn-vorhanden-greift-nicht.html)

fisipjm 2. Mär 2022 07:53

Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Moin,

da die meisten Delphi online Seiten ja irgendwie immer noch down sind, mal wieder eine kleien Frage hier in die Runde.

Ich habe eine VCL Anwendung die als DLL eine Twebbrowser Komponente in einer anderen Anwendung bereit stellt. In den Einstellungen habe ich ausgewählt dass er Edge benutzen soll wenn er verfügbar ist.
Das System auf dem die Anwednung läuft ist ein Win 2016 Terminalserver. Edge Browser ist installiert. Die WebView2Loader.dll liegt im gleichen Verzeichniss wie die Anwednung. Allerdings wird immer nur der Internetexplorer verwendet. Hab ich irgendwas vergessen?

Auf meiner Dev Umgebung funktionierts, aber da hab ich auch schreibzugriff auf das Verzeichniss in dem die Anwendung liegt, es wird bei mir ein Ordner mit dem Namen der Exe und ".WebView2" angelegt. Das wird auf dem Terminalserver also nicht funktionieren und müsst wahrscheinlich in das jeweilige Temp verzeichniss des Benutzers. Bin ich da auf dem richtigen Weg? Habt ihr schonmal Erfahrungen damit gemacht?

Grüße
PJM

Bernhard Geyer 2. Mär 2022 09:07

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Die Installation des "normalen" Edge reicht nicht.
MS ist auf die "glorreiche" Idee gekommen, das noch parallel (der gleiche SW-Stand) ein "embeddable" Version des Edge installiert werden muss.
Das Edge-Control (bzw. WebView2Loader.dll) aus der normalen Installation kann nicht genutzt werden.

Alternativ lieferst du eine Edge-Version als "Beilage" zu deiner Anwendung in einem Unterverzeichnis mit und verweist auf dieses.

GPRSNerd 2. Mär 2022 11:01

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Hi, ich setze in einer meiner Apps direkt die Webbrowser-Komponente TEdgeBrowser für den Edge ein und konfiguriere den Cache-Pfad beim Start:
Delphi-Quellcode:
ebWetter.UserDataFolder := IncludeTrailingPathDelimiter(TPath.GetTempPath) + appProductName;

fisipjm 3. Mär 2022 06:51

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1502846)
Die Installation des "normalen" Edge reicht nicht.
MS ist auf die "glorreiche" Idee gekommen, das noch parallel (der gleiche SW-Stand) ein "embeddable" Version des Edge installiert werden muss.
Das Edge-Control (bzw. WebView2Loader.dll) aus der normalen Installation kann nicht genutzt werden.

Alternativ lieferst du eine Edge-Version als "Beilage" zu deiner Anwendung in einem Unterverzeichnis mit und verweist auf dieses.

Okay, den Edge Embedded lass ich jetzt mal nachinstallieren. Hast du zufällig noch einen Tipp wie ich das Speicherverhalten der WebView2Loader.dll verändern kann. Ich befürchte da wird der nächste Stolperstein liegen.

Bernhard Geyer 3. Mär 2022 10:00

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von fisipjm (Beitrag 1502877)
Okay, den Edge Embedded lass ich jetzt mal nachinstallieren. Hast du zufällig noch einen Tipp wie ich das Speicherverhalten der WebView2Loader.dll verändern kann. Ich befürchte da wird der nächste Stolperstein liegen.

Das da -> https://www.delphipraxis.net/1502854-post3.html

fisipjm 3. Mär 2022 11:43

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1502886)
Zitat:

Zitat von fisipjm (Beitrag 1502877)
Okay, den Edge Embedded lass ich jetzt mal nachinstallieren. Hast du zufällig noch einen Tipp wie ich das Speicherverhalten der WebView2Loader.dll verändern kann. Ich befürchte da wird der nächste Stolperstein liegen.

Das da -> https://www.delphipraxis.net/1502854-post3.html

Wie der Kollege ja schon gesagt hat, verwendet er den TedgeBrowser. Der hat diese Funktion. Beim TWebBrowser kann ich es nicht finden. Oder bin ich Blind?:oops:

Bernhard Geyer 3. Mär 2022 17:08

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von fisipjm (Beitrag 1502894)
Wie der Kollege ja schon gesagt hat, verwendet er den TedgeBrowser. Der hat diese Funktion. Beim TWebBrowser kann ich es nicht finden. Oder bin ich Blind?:oops:

Keine Ahnung. Wir nutzen nur TEdgeBrowser (bzw. TWebbrowser nur im IE-Modus)

peterbelow 4. Mär 2022 10:43

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von fisipjm (Beitrag 1502894)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1502886)
Zitat:

Zitat von fisipjm (Beitrag 1502877)
Okay, den Edge Embedded lass ich jetzt mal nachinstallieren. Hast du zufällig noch einen Tipp wie ich das Speicherverhalten der WebView2Loader.dll verändern kann. Ich befürchte da wird der nächste Stolperstein liegen.

Das da -> https://www.delphipraxis.net/1502854-post3.html

Wie der Kollege ja schon gesagt hat, verwendet er den TedgeBrowser. Der hat diese Funktion. Beim TWebBrowser kann ich es nicht finden. Oder bin ich Blind?:oops:

Vielleicht hilft Dir das hier: https://en.delphipraxis.net/topic/59...&comment=51909

gubbe 8. Mär 2022 08:43

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Es gibt eine einfachere Möglichkeit, das Benutzerdatenverzeichnis zu setzen:
Code:
 SetEnvironmentVariable('WEBVIEW2_USER_DATA_FOLDER', PWideChar(EdgeUserDataFolder));
Zum Beispiel im Initialization-Teil der Unit oder im Projektquelltext vor dem Erstellen des Forms.

Die Variante mit dem Zugriff auf die geschützte Funktion "GetEdgeInterface" hat neben dem etwas unschönen "Hack" den Nachteil, dass der Browser ggf. schon initialisiert wurde und versucht hat, das Datenverzeichnis im Programmverzeichnis anzulegen. Das dann notwendige erneute Initialisieren des Webviews würde mich auch stören.

Mit dem Setzen von Environment-Variablen kann man auch weitere Parameter beeinflussen.
Als Beispiel zusätzliche Parameter, die man auch bei Chrome per Kommandozeile übergeben kann:
Code:
SetEnvironmentVariable('WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS', '--allow-file-access-from-files');
Damit wird z.B. das Lesen lokaler Dateien erlaubt, wenn man lokale HTML-Dateien anzeigt (und auch nur dann sollte man das aktivieren)

Es wäre natürlich schöner, wenn Embarcadero daran gedacht hätte, das Initialisieren des Webviews in einer abgeleiteten Klasse überschreibbar zu machen, aber mit den Environment-Variablen kann man sich zumindest ohne weitere Hacks behelfen.

fisipjm 4. Apr 2022 14:59

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
 
Zitat:

Zitat von gubbe (Beitrag 1503034)
Es gibt eine einfachere Möglichkeit, das Benutzerdatenverzeichnis zu setzen:
Code:
 SetEnvironmentVariable('WEBVIEW2_USER_DATA_FOLDER', PWideChar(EdgeUserDataFolder));
Zum Beispiel im Initialization-Teil der Unit oder im Projektquelltext vor dem Erstellen des Forms.

Habs in den Initialization Teil gepackt und dafür ioutils.tpath.GetCachePath verwendet, funktioniert wunderbar. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz