Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.NET混合开发解决方案5 WebView2运行时与分发应用

.NET混合开发解决方案5 WebView2运行时与分发应用

作者头像
张传宁IT讲堂
发布于 2022-05-09 12:09:11
发布于 2022-05-09 12:09:11
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

系列目录     【已更新最新开发文章,点击查看详细】

  发布使用Microsoft Edge WebView2的应用程序时,客户端计算机上需要安装WebView2运行时,可以安装自动更新的Evergreen运行时,也可以安装固定版本的。

  WebView2 运行时是可再发行运行时,充当 WebView2 应用的基础 (或 支持) Web 平台。 此概念类似于 Visual C++ 或适用于 C++/.NET 应用的 .NET 运行时。 WebView2 运行时包含已修改的Microsoft Edge二进制文件,这些二进制文件针对 WebView2 应用进行了微调和测试。 安装 WebView2 运行时后,它不会显示为用户可见的浏览器应用。 例如,用户在 “开始” 菜单中没有浏览器桌面快捷方式或条目。

可通过两种不同的方式将 WebView2 运行时分发和更新到客户端计算机:常青分发模式和固定版本分发模式。

下载地址:https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download-section

常青运行时分发模式

  在长青分发模式下,WebView2运行时不随应用打包,而是最初使用在线引导程序或离线安装程序安装到客户端。之后,WebView2运行时会在客户端机器上自动更新。然后,开发者可以从最新的 WebView2 SDK 分发使用最新 WebView2 API 的 WebView2 应用的更新。对于大多数开发人员,建议使用长青分发模式。

  • 优点
    • 底层web平台(WebView2运行时)会自动更新,无需您付出更多努力。
    • 客户端系统上的WebView2运行时需要更少的磁盘空间,因为客户端上的所有WebView2应用程序都共享WebView2运行时。
    • 在符合条件的系统上,Microsoft Edge和Evergreen WebView2运行时的二进制文件在同一版本上时会硬链接在一起。这种链接为磁盘占用、内存和性能提供了好处。
  • 缺点
    • WebView2应用程序无法指定需要特定版本的WebView2运行时。

固定版本运行时分发模式

在固定版本分发模式下,下载特定版本的 WebView2 运行时,并将其与应用包中的 WebView2 应用一起打包。 随应用打包的 WebView2 运行时仅由 WebView2 应用使用,而不由客户端计算机上的任何其他应用使用。

  • 优点
    • 可以更好地控制WebView2运行时的版本控制。清晰地知道应用程序可以使用哪些WebView2 API,因为开发者可以控制应用程序可以使用哪个版本的WebView2运行时。
    • 开发者应用程序不需要测试WebView2是否有最新的API。
  • 缺点
    • 需要自行管理 WebView2 运行时。 WebView2 运行时不会在客户端上自动更新,因此若要使用最新的 WebView2 API,必须定期将应用与更新的 WebView2 运行时一起更新。
    • 如果安装了多个 WebView2 应用,则客户端需要更多磁盘空间。
    • 无法使用安装程序安装固定版本运行时。

下载选项

上图中提供的三种下载方式,全部下载到本地,如下图

①是在客户端计算机上运行的小型常青运行时引导程序,体积仅有1.7M,安装过程中需要联网下载WebView2 真正的运行时程序,下载完成后才执行安装。采用这种模式安装的运行时始终与微软官方的最新版本保持一致。

②是32位的WebView2 Runtime长青版独立安装程序。

③是64位的WebView2 Runtime长青版独立安装程序。

④是固定版本运行时。截止我下载时最新版本为100.0.1185.50。开发者可以选择其他版本使用。下载后解压,将其打包到应用程序中即可使用。

对于大多数应用,建议使用常青分发模式。安装完成后,控制面板查看,版本号与Edge浏览器版本保持一致。但是WebView2运行时是独立的运行环境,不依赖于Edge。

长青版更新策略

WebView2 的正式发布版 (GA) 或预览版适用于以下编程环境:

  • 采用长青版安装程序安装WebView2运行时程序,之后通过通过 Windows Server Update Services (WSUS) 为 WebView2 运行时提供更新服务。建议使用默认更新程序接收 WebView2 Microsoft Edge更新。 应谨慎修改更新和服务路径。

在开发和测试期间,WebView2应用程序可以使用以下任一选项作为支持web平台:

  • WebView2运行时通常提供与Microsoft Edge浏览器稳定通道相同的web平台功能和更新节奏。在生产环境中使用WebView2运行时,或者根据用户现在拥有的web平台进行开发和测试。
  • 预览 (预览体验成员) Microsoft Edge浏览器频道。 这些Microsoft Edge预览频道是 Beta、Dev 和 Canary。 使用此方法测试应用是否具有前向兼容性,以便知道是否即将发生需要更新应用的重大更改。 请参阅 测试即将推出的 API 和功能

WebView2应用程序的生产版本只能使用WebView2运行时作为支持web平台,而不能使用Microsoft Edge

常青分发模式可确保 WebView2 应用正在利用最新的 WebView2 功能和安全更新。 常青分布模式具有以下特征:

  • WebView2 运行时会自动更新,而无需执行任何操作。 它接收Microsoft Edge稳定频道和Microsoft Edge安全更新发行说明中所述的相同Microsoft Edge更新。
  • 所有使用常青分发模式的 WebView2 应用都使用常青 WebView2 运行时的共享副本,从而节省磁盘空间。
  • 在符合条件的系统上,Microsoft Edge和 Evergreen WebView2 运行时的二进制文件在同一版本中硬链接在一起。 此链接为磁盘占用量、内存和性能提供了好处。

  使用 WebView2 运行时的长青分发模式时,WebView2 应用假定客户端具有最新的运行时。 对于客户端上的所有应用,应用不能要求特定版本的 WebView2 运行时。 发布新的 WebView2 SDK 包时,WebView2 运行时的兼容版本已分发给客户端。 因此,WebView2 应用可以使用最新版本的 WebView2 SDK 中的 API。请参阅 了解浏览器版本和 WebView2

固定版本更新策略

对于具有严格兼容性要求的受约束环境,请考虑使用固定版本分发模式。 固定版本分发模式以前称为自带版本分发模式。

  在固定版本分发模式下,开发者可以控制应用程序WebView2运行时的更新时间。下载特定版本的WebView2运行时,然后将其与WebView2应用程序打包。客户端上的WebView2运行时不会自动更新。相反,开发者可以定期更新WebView2运行时,该运行时与更新的应用程序一起打包和分发。固定版本方法不使用WebView2运行时的注册表项。

若要使用固定版本分发模式,请执行以下操作:

1、下载 WebView2 运行时的固定版本作为包。

可在此站点下载最新版本和第二大版本的最修补版本。 保留所需任何版本的存档副本。

2、将下载的文件进行解压缩

3、在应用包中包括所有解压缩的固定版本二进制文件,约368M,这些二进制文件将在应用安装期间部署在目标计算机上。

4、在创建WebView2环境时指示固定版本二进制文件的路径。

  • 对于 Win32 C/C++,可以使用 CreateCoreWebView2EnvironmentWithOptions 函数创建环境。 browserExecutableFolder使用该参数指示包含msedgewebview2.exe的文件夹的路径。
  • 对于 .NET,必须在 WebView2 Source 属性生效之前指定环境。 对于 WinUI,请通过指定已安装的位置并为运行时路径设置环境变量来确保应用有权访问该文件夹。 执行此操作的一种方法是将以下 C# 代码添加到应用
    •  对于 .NET,可以使用以下任一方法来指定环境:在CreationProperties元素上WebView2设置 (WPFWinForms/) 属性。 BrowserExecutableFolder使用 (WPFWinForms /) 类中CoreWebView2CreationProperties的成员来指示固定版本二进制文件的路径。
代码语言:txt
AI代码解释
复制
-  或者使用`EnsureCoreWebView2Async` ([WPFWinForms](https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.web.webview2.winforms.webview2.ensurecorewebview2async) /) 来指定环境。 `browserExecutableFolder`使用 [CoreWebView2Environment.CreateAsync](https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.web.webview2.core.corewebview2environment.createasync) 中的参数来指示固定版本二进制文件的路径。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
StorageFolder localFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
String fixedPath = Path.Combine(localFolder.Path, "FixedRuntime\\(version number)");
Debug.WriteLine($"Launch path [{localFolder.Path}]");
Debug.WriteLine($"FixedRuntime path [{fixedPath}]");
Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", fixedPath);

5、使用应用打包并寄送固定版本二进制文件。 根据需要更新二进制文件。

  • 对于 WinUI,这可能包括在代码编辑器中打开项目文件 (.csproj) ,然后在项目标记中添加以下代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ItemGroup>
   <Content Include="FixedRuntime\(version number)\\**\*.*">
   <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
   </Content>
</ItemGroup>

bin\**designated architecture**\Release验证文件夹是否具有匹配的 FixedRuntime\ (版本号) 文件夹,其中包含运行时文件。

WebView2 不支持 Microsoft Edge 稳定通道

WebView2应用程序不允许使用Microsoft Edge的稳定频道作为支持web平台。此限制可防止WebView2应用程序的生产版本依赖于浏览器。WebView2应用程序在生产过程中不能依赖浏览器,原因如下:

  • Microsoft Edge不能保证存在于所有用户设备上。 企业和教育部门的许多设备都与Windows Update断开连接,或者不受 Microsoft 直接管理。 此类设备可能未安装Microsoft Edge。 要求 WebView2 应用的生产版本使用 WebView2 运行时而不是Microsoft Edge避免使Microsoft Edge成为运行 WebView2 应用的先决条件。
  • 浏览器和应用有不同的用例。 如果 WebView2 应用需要客户端上存在Microsoft Edge,则可能会对 WebView2 应用产生意外的副作用。 例如,IT 管理员可以阻止从特定版本更新浏览器,以使浏览器与内部网站兼容。 要求 WebView2 应用的生产版本使用 WebView2 运行时而不是浏览器,即使客户端管理员阻止了浏览器更新,WebView2 应用也可保持常青。
  • 与浏览器不同,WebView2 运行时是针对应用方案开发和测试的,在某些情况下,WebView2 运行时可能包含浏览器中尚不可用的 bug 修复。

  长青版 WebView2 运行时将作为Windows 11操作系统的一部分包含在内。   在Windows 11之前,各种 WebView2 应用已在具有操作系统的设备上安装了长青版运行时。 但是,某些设备可能未预安装运行时,因此最好检查客户端上是否存在运行时。      在应用创建 WebView2 之前,应用应通过检查注册表项或调用 API 来检查 WebView2 运行时是否存在,并在缺少运行时时安装它。 在安装或更新应用 (建议的) 或应用运行时,应用可以执行此检查。   请参考我的博客《.NET混合开发解决方案6 检测是否已安装合适的WebView2运行时》

系列目录     【已更新最新开发文章,点击查看详细】

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.NET混合开发解决方案6 检测是否已安装合适的WebView2运行时
  长青版WebView2运行时将作为Windows 11操作系统的一部分包含在内。但是在Windows 11之前(Win10、Win8.1、Win7等),某些设备可能未预安装WebView2运行时。在桌面程序(WinForm、WPF、WinUI、Win32)安装、更新、启动后或创建 WebView2对象之前,程序可以自动执行此检查。通过检查注册表项或调用 API 来检查客户端电脑中是否已经安装了 WebView2 运行时,并在缺少时自动安装它。
张传宁IT讲堂
2022/05/09
2.6K0
.NET混合开发解决方案6 检测是否已安装合适的WebView2运行时
.NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件
  在我的博客《.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件》中介绍了WinForm程序中集成WebView2控件的基本实现方式,首先通过NuGet管理器引用Microsoft.Web.WebView2控件
张传宁IT讲堂
2022/05/09
1.3K0
.NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件
.NET混合开发解决方案1 WebView2简介
  在我的博客《.NET桌面程序集成Web网页开发的多种解决方案》中介绍了10种.NET集成网页开发的控件。本系列着重介绍 Microsoft Edge WebView2 组件技术。
张传宁IT讲堂
2022/05/09
2.2K0
.NET混合开发解决方案1 WebView2简介
.NET混合开发解决方案24 WebView2对比CefSharp的超强优势
.NET混合开发解决方案19 使用 DevTools 协议帮助程序  .NET混合开发解决方案20 使用 Microsoft Edge WebDriver 自动执行和测试 WebView2 应用 .NET混合开发解决方案21 WebView2 应用的开发最佳做法 .NET混合开发解决方案22 开发安全的 WebView2 应用 .NET混合开发解决方案23 将 WebView2 应用分发为单个可执行文件
张传宁IT讲堂
2022/06/30
3.4K0
.NET混合开发解决方案24 WebView2对比CefSharp的超强优势
.NET混合开发解决方案3 WebView2的进程模型
  WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。
张传宁IT讲堂
2022/05/09
9630
.NET混合开发解决方案3 WebView2的进程模型
.NET混合开发解决方案16 管理WebView2的用户数据
  在我的博客《.NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明》中介绍了将WebView2控件集成到WinForm程序中编译后的文件及结构信息
张传宁IT讲堂
2022/05/15
2.5K0
.NET混合开发解决方案16 管理WebView2的用户数据
.NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明
WinForm程序中集成WebView2控件后,编译项目(不运行),查看编译后的内容如下
张传宁IT讲堂
2022/05/14
1.5K0
.NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明
.NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法
  在我的博客《.NET混合开发解决方案10 WebView2控件调用网页JS方法》中介绍了C#调用网页中定义的JavaScript方法以执行某种业务逻辑,同样WebView2控件中加载的网页中自定义的JavaScript方法中也可以调用C#方法。
张传宁IT讲堂
2022/05/11
11.3K1
.NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法
.NET混合开发解决方案10 WebView2控件调用网页JS方法
  客户端程序(WinForm、WPF、Win32、WinUI)集成WebView控件加载Web完成后,还有两种常见的需求
张传宁IT讲堂
2022/05/09
3.3K0
.NET混合开发解决方案10 WebView2控件调用网页JS方法
.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件
  WebView2组件支持在WinForm、WPF、WinUI3、Win32应用程序中集成加载Web网页功能应用。本篇主要介绍如何在WinForm程序中集成WebView2组价的详细过程。
张传宁IT讲堂
2022/05/09
1.2K0
.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件
.NET混合开发解决方案9 WebView2控件的导航事件
  在我的博客《.NET混合开发解决方案7 WinForm程序中集成WebView2》中介绍了WinForm程序中集成WebView2组件的详细步骤以及注意事项。这只是最基本的应用,WebView2功能之所以强大,是因为它提供了很多开放的属性与事件供开发者调用以完成复杂的功能。具体可以参考我的博客《.NET混合开发解决方案2 WebView2与Edge浏览器的区别》。
张传宁IT讲堂
2022/05/09
1.1K0
.NET混合开发解决方案9 WebView2控件的导航事件
微软的混合开发解决方案 WebView2
我们都知道对于桌面应用开发来说,人们常用的方式就是采用c++或者c#,java等进行开发,然而这些语言开发效率不够高,不如网页开发灵活。因此,人们思考能否采用html+css+js的方式来开发桌面客户端呢,于是人们就提出了混合开发概念,并且开发了electron框架进行桌面开发。
程序那些事儿
2023/03/07
2K0
微软的混合开发解决方案 WebView2
.NET混合开发解决方案14 WebView2的基本身份验证
  WebView2 应用的基本身份验证包括从 HTTP 服务器检索网页的一系列身份验证和导航步骤。 WebView2 控件充当主机应用和 HTTP 服务器之间通信的中介。
张传宁IT讲堂
2022/05/13
1.9K0
.NET混合开发解决方案14 WebView2的基本身份验证
Electron 吞噬资源,微软 Teams 为性能改用 WebView2
微软近期宣布,旗下 Teams 应用活跃用户已经达到惊人的 2.5 亿。这让 Teams 成了继 Word 和 Excel 之后,微软 Office 生产力套件中的又一位当红明星。然而,Teams 一直受到性能问题的困扰,用户们对此吐槽不断。
HelloGitHub
2021/11/12
3.7K0
.NET混合开发解决方案13 自定义WebView2中的上下文菜单
对比可以看出WebView2控件中的右键上下文菜单内容比Edge浏览器中网页的右键右键上下文菜单的数量少。结合我的博客《.NET混合开发解决方案2 WebView2与Edge浏览器的区别》可知,WebView2控件中对于网页右键上下文菜单做了裁剪。
张传宁IT讲堂
2022/05/12
3.2K0
.NET混合开发解决方案13 自定义WebView2中的上下文菜单
.NET混合开发解决方案2 WebView2与Edge浏览器的区别
  WebView2 基于Microsoft Edge浏览器。 开发者可以将功能从浏览器扩展到基于 WebView2 的应用。 由于 WebView2 不限于类似浏览器的应用,因此需要修改或删除一些浏览器功能。
张传宁IT讲堂
2022/05/09
1.3K0
.NET混合开发解决方案2 WebView2与Edge浏览器的区别
.NET混合开发解决方案4 WebView2的线程模型
  WebView2控件基于组件对象模型(COM),必须在单线程单元(STA)线程上运行。
张传宁IT讲堂
2022/05/09
3.5K0
.NET混合开发解决方案4 WebView2的线程模型
微软偷偷决定不开源 Linux 及 macOS 版 WebView2,网友:等了四年,我还是用 Electron?!
2021 年,有用户曾在 GitHub 上发帖询问微软的 WebView2 组件是否会支持 Linux 和 macOS 系统。WebView2 是微软基于自家 Edge 浏览器打造的开源渲染组件,相当于微软 Edge 浏览器的一个缩小版本。
深度学习与Python
2024/07/24
3080
微软偷偷决定不开源 Linux 及 macOS 版 WebView2,网友:等了四年,我还是用 Electron?!
.NET桌面程序集成Web网页开发的十种解决方案
  B/S架构的Web程序几乎占据了应用软件的绝大多数市场,但是C/S架构的WinForm、WPF客户端程序依然具有很实用的价值,如设计类软件 AutoCAD与Autodesk Revit、WPS、IT类的集成开发环境(数据库、图形处理软件)、PC端的小工具等等,充分利用了客户端电脑的资源综合计算能力,处理性能更加优秀。如果想在C/S架构的客户端程序中集成Web应用,也只能借助Web网页,然后将网页集成到客户端程序中,这样就间接的达到了目的。下面是客户端审图系统中集成Web网页的实际应用案例
张传宁IT讲堂
2022/05/09
3.1K0
.NET桌面程序集成Web网页开发的十种解决方案
C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案
  在我的博客《C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案》、《C#开发BIMFACE系列50 Web网页中使用jQuery加载模型与图纸》、《C#开发BIMFACE系列51 Web网页中使用Vue.js加载模型与图纸》三篇文章中介绍了Web网页中集成BIMFace应用开发的技术方案与示例程序。在建筑领域中涉及的应用管理系统绝大部分都是BS架构Web形式,这是主流趋势。BIMFACE在网页中加载浏览模型图纸时用到了HTML5、CSS3、WebGL等新技术,无需安装任何插件,极速流畅的浏览体验,并且可以集成应用于App、小程序、公众号等移动端。
张传宁IT讲堂
2021/10/21
4.8K0
推荐阅读
.NET混合开发解决方案6 检测是否已安装合适的WebView2运行时
2.6K0
.NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件
1.3K0
.NET混合开发解决方案1 WebView2简介
2.2K0
.NET混合开发解决方案24 WebView2对比CefSharp的超强优势
3.4K0
.NET混合开发解决方案3 WebView2的进程模型
9630
.NET混合开发解决方案16 管理WebView2的用户数据
2.5K0
.NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明
1.5K0
.NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法
11.3K1
.NET混合开发解决方案10 WebView2控件调用网页JS方法
3.3K0
.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件
1.2K0
.NET混合开发解决方案9 WebView2控件的导航事件
1.1K0
微软的混合开发解决方案 WebView2
2K0
.NET混合开发解决方案14 WebView2的基本身份验证
1.9K0
Electron 吞噬资源,微软 Teams 为性能改用 WebView2
3.7K0
.NET混合开发解决方案13 自定义WebView2中的上下文菜单
3.2K0
.NET混合开发解决方案2 WebView2与Edge浏览器的区别
1.3K0
.NET混合开发解决方案4 WebView2的线程模型
3.5K0
微软偷偷决定不开源 Linux 及 macOS 版 WebView2,网友:等了四年,我还是用 Electron?!
3080
.NET桌面程序集成Web网页开发的十种解决方案
3.1K0
C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案
4.8K0
相关推荐
.NET混合开发解决方案6 检测是否已安装合适的WebView2运行时
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验