![]() |
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 |
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. |
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;
|
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
|
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
![]() |
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
|
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
|
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
![]() |
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Es gibt eine einfachere Möglichkeit, das Benutzerdatenverzeichnis zu setzen:
Code:
Zum Beispiel im Initialization-Teil der Unit oder im Projektquelltext vor dem Erstellen des Forms.
SetEnvironmentVariable('WEBVIEW2_USER_DATA_FOLDER', PWideChar(EdgeUserDataFolder));
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:
Damit wird z.B. das Lesen lokaler Dateien erlaubt, wenn man lokale HTML-Dateien anzeigt (und auch nur dann sollte man das aktivieren)
SetEnvironmentVariable('WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS', '--allow-file-access-from-files');
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. |
AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht
Zitat:
|
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