如何在win7同样支持Webview2 在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime
创始人
2024-11-19 05:37:54
0

项目运行环境:

  • .Net Framework 4.5.2

  • Windows 7 x64 Service Pack 1

  • WebView2 Microsoft.WebView2.FixedVersionRuntime.120.0.2210.91.x64

考虑到很多老项目,本项目使用的是.Net Framework 4.5.2.Net 更高版本的其实也是可以支持的。

1、下载 WebView2 固定版本 Runtime

WebView2 Runtime: https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download

首先下载自己想要的固定版本的 WebView2 Runtime[1]

下载下来的文件为 Cab 格式的文件,此文件为压缩文件 

将其解压,可得到如下的目录

2、创建项目,将Webview2 复制到项目中

创建.Net Framework 4.5.2 WPF 项目,将解压的Webview2 复制到项目中,如下图所示:

文件夹 WebView2 中就是cap文件解压后的二进制文件以及文件夹

将 WebView2 文件夹中所有文件

属性 - 高级 - 复制到输入目录 设置为 如果较新则复制

属性 - 高级 - 生成操作 设置为 

如下图所示:

3、在项目的 MainWindow 后台代码中写逻辑

MainWindow.cs 文件中添加代码

 Public partial class MainWindow : Window     {       public string Url { get; set; } = "https://www.bing.com";       public MainWindow()       {           InitializeComponent();       }        protected override async void OnContentRendered(EventArgs e)       {           base.OnContentRendered(e);            await webView.EnsureCoreWebView2Async(               await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory;, "WebView2")));           webView.Source = new Uri(Url);       }    }

添加后,即可在无 WebView2 Runtime 的系统中运行

4、一些问题

项目运行时,有些问题可能会出现,

  • 报错 Microsoft.Web.WebView2.Core.WebView2RuntimeNotFoundException:“Couldn't find a compatible Webview2 Runtime installation to host WebViews.” 这个可能是因为wenview2的文件没有设置为 较新则复制 导致的

  • 报错 System.ArgumentException:“WebView2 was already initialized with a different CoreWebView2Environment. Check to see if the Source property was already set or EnsureCoreWebView2Async was previously called with different values. 这个可能是因为在执行 OnContentRendered 方法前,,对CoreWebview2设置了source属性,此时webview2会自动初始化环境,后面不能重复初始化
    去掉source属性(设置属性或者在构造时去掉都可以)

    上面代码可以看到,Source 属性是在 最后才指定的

protected override async void OnContentRendered(EventArgs e)   {       base.OnContentRendered(e);        await webView.EnsureCoreWebView2Async(           await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory;, "WebView2")));       webView.Source = new Uri(Url);//最后才指定的Source   }

5、运行

将生成的 Debug 直接拷贝到不存在 Webview2 的系统中,是可以运行的,如果报错,请参考第四点进行检查项目

相关内容

热门资讯

八分钟工具!心悦云南麻将有挂吗... 八分钟工具!心悦云南麻将有挂吗,天天真人麻将怎么增加胜率(都是真的是有挂)1、上手简单,内置详细流程...
3分钟揭秘!荔枝竞技有挂吗,中... 3分钟揭秘!荔枝竞技有挂吗,中至丰城双剑其实有辅助挂,解密教程(有挂工具);1、下载好荔枝竞技有挂吗...
科技介绍!天天斗地主修改器(透... 科技介绍!天天斗地主修改器(透明挂)真是真的有挂(2023已更新)(哔哩哔哩);天天斗地主修改器辅助...
一分钟揭秘!兴动互娱辅助器怎么... 一分钟揭秘!兴动互娱辅助器怎么收费(透明挂)外挂透视辅助软件(2020已更新)(哔哩哔哩);1、构建...
四分钟攻略!和和麻将攻略,三哥... 四分钟攻略!和和麻将攻略,三哥玩辅助器(都是有挂)1、首先打开三哥玩辅助器最新版本,在三哥玩辅助器首...
四分钟了解!青龙大厅有没有辅助... 四分钟了解!青龙大厅有没有辅助,中至赣牌圈祈福果然有辅助挂,详细教程(有挂秘籍);1)青龙大厅有没有...
科普!雀友游戏辅助(辅助挂)透... 科普!雀友游戏辅助(辅助挂)透明挂透视辅助app(2022已更新)(哔哩哔哩);1)雀友游戏辅助辅助...
技术分享!鄂州晃晃麻将app有... 技术分享!鄂州晃晃麻将app有没有挂(透明挂)原来是有挂(2023已更新)(哔哩哔哩);鄂州晃晃麻将...
4分钟规律!开心武汉花辅助软件... 4分钟规律!开心武汉花辅助软件,爱来麻将有没有挂(本来有辅助挂);1、全新机制【开心武汉花辅助软件软...
总算了解!!微信里的欢乐麻将是... 总算了解!!微信里的欢乐麻将是不是有挂(透明挂)透明挂透视辅助神器(2022已更新)(哔哩哔哩)1、...