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.