如何在win7同样支持Webview2 在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime

项目运行环境:

  • .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 的系统中,是可以运行的,如果报错,请参考第四点进行检查项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vmware安装龙蜥操作系统

vmware安装龙蜥操作系统 1、下载龙蜥操作系统 8.8 镜像文件2、安装龙蜥操作系统 8.83、配置龙蜥操作系统 8.83.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载龙蜥操作系统 8.8 镜像文件 这里选择 2023年2月发布的 8.8 版本 官方下载链接 https://mirro…

起名+算命+塔罗+星座+八字测算大全小程序源码系统 带完整的安装包以及搭建教程

随着科技的发展和人们生活水平的提高,越来越多的人开始关注个人命运和运势,希望通过各种方式了解自己的未来。在这样的背景下,一款集合了起名、算命塔、罗星座、八字测算等多种功能的小程序应运而生。这款小程序源码系统旨在为用户提供全方位…

mybatis-flex笔记

MyBatis-Flex 的增删改功能 - MyBatis-Flex 官方网站https://mybatis-flex.com/zh/base/add-delete-update.html 代码https://gitee.com/hntianshu/mybatis-flex-test 一 新增数据 不忽略 null 值。 就是允许有null 忽略null 就是不允许有null BaseMapper 的接口提供了 inser…

jmeter的安装与目录介绍

1、启动 apache-jmeter-5.0\bin 2、永久修改中文配置 zh-CN就行了

图像分割-漫水填充法 floodFill (C#)

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的VB版本请访问:图像分割-漫水填充法 floodFill-CSDN博客 FloodFill方法是一种图像处理算法,它的目的是…

2023年度最热 AI 应用 TOP 50,除了 ChatGPT 还有这么多宝藏

原文章链接:年度最热 AI 应用 TOP 50,除了 ChatGPT 还有这么多宝藏 - IT之家 更多消息:AI人工智能行业动态,aigc应用领域资讯 在 AI 工具激烈竞争的一年中,尽管ChatGPT在访问量上遥遥领先,但单次使用时长未…

Java LinkedList解密

一、LinkedList最底层的原理 LinkedList其实底层是链表: 当初始化的时候,会将链表这个节点的值、prev指针和next指针初始化。 二、LinkedList初始化 无参构造并没有做什么。有参构造会先调用无参构造,然后调用addAll方法将链表的节点都初始化…

什么是高防 IP?哪些行业适合用高防 IP?

在数字化浪潮席卷全球的今天,网络安全问题日益凸显。有听说过“高防 IP”这个名词吗?它究竟是什么东西,又能在哪些领域大显身手呢? 一、什么是高防 IP? 高防 IP,顾名思义,就是具备高级防护能力…

1_并发编程_线程的基本概念和线程终止及线程问题排查

1.线程的运行状态 在Java中,线程的状态一共是6种状态,分别是 NEW:初始状态,线程被构建,但是还没有调用start方法 RUNNABLED:运行状态,JAVA线程把操作系统中的就绪和运行两种状态统一称为“运行…

【C程序设计】C判断

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。 下面…

.mallox勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

引言: 随着技术的不断发展,网络空间也不可避免地面临着各种威胁,其中之一就是勒索病毒,而.mallox是近期引起关注的一种恶意软件。本文将介绍.mallox勒索病毒,以及如何有效地恢复被其加密的数据文件,并提供…

OpenFeign相关面试题及答案(2024)

1、什么是OpenFeign,它如何简化远程服务调用? OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分,可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…

Lingo 17安装包下载及安装教程

Lingo 17下载链接:https://docs.qq.com/doc/DUndEVXd4WVVweGFR 1.鼠标右键解压到“Lingo 17.0” 2.双击打开【Setup】文件夹 3.选中Lingo 17.0,鼠标右键选择“以管理员身份运行” 4.点击“Next” 5.选中I accept the terms in the license agreement&…

贪心算法part05 435无重叠区间

435无重叠区间 763 划分字母区间 56合并区间

javascript中location对象的属性与方法

前言 本章介绍js中的location中的属性和方法。 文章目录 前言什么是location为什么要用locationlocation对象属性location对象方法总结 什么是location 在JavaScript中,location 是一个包含当前页面的URL信息的对象。它允许你获取和操作当前页面的URL,比…

速通C语言第十二站 文件操作

系列文章目录 速通C语言系列 速通C语言第一站 一篇博客带你初识C语言 http://t.csdn.cn/N57xl 速通C语言第二站 一篇博客带你搞定分支循环 http://t.csdn.cn/Uwn7W 速通C语言第三站 一篇博客带你搞定函数 http://t.csdn.cn/bfrUM 速通C语言第四站 一篇博客带…

QML 项目中使用 Qt Design Studio 生成的UI界面

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 今天来和大家聊一下 Qt Design Studio 这个软件。这个软件的主要功能是用来快速完成 UI 界面,就和 widget 中的 desig…

栈实现后缀表达式的计算

后缀表达式计算 过程分析 中缀表达式 (15)*3 > 后缀表达式 153* (可参考这篇文章:中缀转后缀) 第一步:我们从左至右扫描 后缀表达式(已经存放在一个字符数组中),遇到第一个数字字符 ‘1’ 放入栈中第二步&#xf…

市场复盘总结 20240103

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: 方法一:指标选股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240103;方法二:趋势选股法 1、最低价持续3日上涨 2、均价…

jmeter线程组

特点:模拟用户,支持多用户操作;可以串行也可以并行 分类: setup线程组:初始化 类似于 unittest中的setupclass 普通线程组:字面意思 teardown线程组:环境恢复,后置处理