Entwickler-Ecke
WPF / Silverlight - WebView2 in WPF Anwendung für mehrere Benutzer
Günther Weber - Fr 15.09.23 14:11
Titel: WebView2 in WPF Anwendung für mehrere Benutzer
Hallo, Ich habe eine Wpf Anwendung erstellt die in einem Netzlaufwerk von mehreren Benutzern aufgerufen wird. Die Anwendung beinhaltet einen WebView2 Browser, der aber nicht bei allen Benutzern funktioniert. Der Browser legt einen Unterordner Programmname.exe.WebView2 an um dort temporäre Dateien zu speichern. Ich vermute, wenn ich den Ordner Benutzername.WebView2 nennen kann, sind die Probleme behoben.
Bei meiner Recherche bin ich auf die CoreWebView2Environment.CreateAsync Methode gestoßen, bei der ich die Eigenschaft userDataFolder übergeben soll. Ich habe aber überhaupt keine Idee, wo (Code Behind?) und wie ich das in C# Code umsetzen kann, der vom Compiler akzeptiert wird.
Wo finde ich ein Beispiel? Danke - Günther
Günther Weber - Fr 15.09.23 16:34
Danke, das war ja einfach. In der Doku hatte mich das
Zitat: |
public static System.Threading.Tasks.Task |
irritiert.
Aber WebView2 ignoriert diese Einstellung.
Der Ordner Benutzername.WebView2 wird von meinem Programm angelegt. Den Ordner Programmname.exe.WebView2 habe ich gelöscht, der wird aber dann sofort wieder neu angelegt.
Zitat: |
Wird denn der Ordner, bei den Benutzern, wo es nicht funktioniert, gar nicht angelegt? |
Der Ordner Programmname.exe.WebView2 ist ein Unterordner im Programmverzeichnis, der wird beim ersten Aufruf angelegt. Bei den Benutzern wo es nicht funktioniert ist er schon vorhanden, weil ein anderer das Programm schon aufgerufen hat. Bei einigen Benutzrn funktioniert es trotzdem. Wenn sich der Benutzer die Exe-Datei mit allen erforderlichen DLL's in einen anderen Ordner kopiert funktioniert alles.
Ralf Jansen - Fr 15.09.23 17:51
Ich würde empfehlen zumindest diesen Pfad lokal anzulegen und nach gebraucht also voraussichtlich beim schließen der Anwendung wieder zu löschen.
PS. Eigentlich würde ich empfehlen nichts aus einem Networkshare zu starten das war eigentlich schon immer eine Unart und spätestens seit ClickOnce ist deployment aus einem Networkshare einfach. Aber zumindest temporäres das nur zur App Laufzeit gebraucht wird sollte nur lokal existieren. Ich bin mir sicher Microsoft hat das Szenario das das temporäre Webview Zeug im sonstwo liegt nicht berücksichtig und funktioniert wenn überhaupt eher so zufällig.
Günther Weber - Fr 15.09.23 19:54
Inzwischen habe ich bereits auf Environment.SpecialFolder.ApplicationData umgestellt, aber ebenso erfolglos.
Beim Beenden löschen kommt nicht in Frage, weil dann immer wieder die Cookie-Abfrage kommt.
Ja, ClickOnce war mein Plan B, da werde ich mich jetzt also mit beschäftigen.
Vielen Dank.
Th69 - Sa 16.09.23 10:23
Günther Weber hat folgendes geschrieben : |
Danke, das war ja einfach. In der Doku hatte mich das
Zitat: | public static System.Threading.Tasks.Task | irritiert.
|
Stimmt, das habe ich hier komplett ignoriert.
Besser wäre daher
C#-Quelltext
1:
| await CoreWebView2Environment.CreateAsync(null, path); |
bzw.
C#-Quelltext
1:
| var env = await CoreWebView2Environment.CreateAsync(null, path); |
also diese Methode asynchron aufzurufen und zu warten, so daß man auch den Rückgabewert (
env) auslesen kann.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!