WebView2 wirklich so umständlich zum Veröffentlichen?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    WebView2 wirklich so umständlich zum Veröffentlichen?

    Hallo Leute,

    ich wollte letztens eine kleine Webseite auf einer Form anzeigen.
    Mit dem Webbrowser-Control gings nicht mehr, weil da HTML5 Elemente drauf sind die es nicht versteht.

    Also habe ich mir über die NuGets das WebView2 (EDGE-Browserengine) heruntergeladen und eingebunden.
    Ging auf dem Entwicklungsrechner recht einfach und zeigte die Webseite an wie ich sie brauchte.

    Aber ich hatte große Probleme (ich bekam es nicht hin), das auch auf anderen Rechnern in der echten Umgebung außerhalb der IDE hinzubekommen.
    Hat jemand von Euch eine echt gute Anleitung welche Dateien ich wo hin kopieren muss (DLLs etc), damit das WebView auch auf einem Zielrechner funktioniert?
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    In unser Setup-Paket (Nullsoft) haben wir nun einen kompletten WebView2-Installer mit reingepackt, und fahren den nu bei jedem Setup ab. Der prüft, ob WebView2 installiert ist, und wenn nicht, installierters.

    Ja, ist grotesk aufwändig, und frisst enorm Resourcen, im Vergleich zum guten alten Webbrowser-Control.
    Irgendwann wirds besser werden, wenns in jedem Windows von vornherein installiert ist.

    Nur iwas iwo hinkopieren reicht nicht, der Kram muss in die Registry eingetragen werden.
    Und dabei auch beachten, dass spätere Windows-Updates das WebView2 mitbringen mögen.
    Was sicherlich keine gute Idee ist, wenn am Ende auf einem Rechner das WebView2 zweimal installiert ist (obwohl es ja eiglich grad genau so heisst ;) )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades
    Dann ist das ein Ausschlusskriterum für die Verwendung in meinen Apps.

    Gibt es eine Alternative zu WebView2 und WebBrowserControl?

    Ich müsste nur diese Webseite(n) in einem Control anzeigen lassen. Mehr brauche ich eigentlich nicht: bonit.at/bopvapp
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    dive26 schrieb:

    Gibt es eine Alternative zu WebView2 und WebBrowserControl?

    Gibt es. Die WinRT bietet eine Möglichkeit ein IWebViewControl zu erzeugen wo Du dann Deine Seite laden kannst. -> learn.microsoft.com/en-us/uwp/…wcontrol?view=winrt-22621
    Nachteil: Das WinRT IWebViewControl gibt mir als Kennung/UserAgent folgendes zurück: Mozilla/5.0 (Windows NT 10.0; Win64; x64; WebView/3.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19045. Also keine WebView2 Unterstützung. Basiert wohl noch auf dem alten Edge 18. HTML5 sollte das WinRT IWebViewControl, laut MS-Doku, können.

    Edit: Im Bild Deine Website mit WinRT geladen. Ach ja, ich hab das nur als VB6 Code. ;) Könnte man auch nach .NET übersetzen. Ich glaub Du konntest noch VB6 oder? Dann hier der VB6 Code zum download: activevb.de/cgi-bin/upload/download.pl?id=3914 Du musst ja nicht alles übersetzen. Es reicht ja das Control zu erzeugen und die Website zu laden. Evt. ein paar Events das die Seite fertig ist mit laden z.B.

    Second Edit: Falls Du noch mit .NET 4.8.xx unterwegs bist, kannst Du Dir auch die Windows.winmd -> "C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0\Windows.winmd" als Verweis hinzufügen (die 10.0.22621.0 kann auch eine andere sein, jenachdem welches Win10 SDK bei Dir installiert ist). Evtl brauchst Du dann noch die NuGet-Pakete "System.Runtime.WindowsRuntime" (wegen Windows.Foundation.Rect plus der Extensions für Await -> GetAwaiter/TaskAwaiter, könnte man auch selbst Programmieren) und "System.Runtime.WindowsRuntime.UI.XAML" (wird für dieses Bsp. nicht benötigt). Dann ist das relativ einfach.

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Imports Windows.Web.UI.Interop
    3. Public Class Form1
    4. Private WVC As WebViewControl
    5. Private WVCP As New WebViewControlProcess()
    6. Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    7. WVC = Await WVCP.CreateWebViewControlAsync(CLng(Me.Handle), New Windows.Foundation.Rect(0, 0, Me.Width, Me.Height))
    8. WVC?.Navigate(New Uri("https://www.google.de/"))
    9. End Sub
    10. Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize
    11. If WVC IsNot Nothing Then
    12. WVC.Bounds = New Windows.Foundation.Rect(0, 0, Me.Width, Me.Height)
    13. End If
    14. End Sub
    15. Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
    16. WVC.Close()
    17. WVC = Nothing
    18. WVCP = Nothing
    19. End Sub
    20. End Class

    Bilder
    • WinRT_WebView.png

      26,22 kB, 1.053×628, 73 mal angesehen
    Mfg -Franky-

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „-Franky-“ ()