WebView2 用户原生 NetForms App 分发:真的需要 WebView2 Runtime 吗?
Distribution of WebView2 user native NetForms App: is WebView2 Runtime really needed?
由于 IE 生命周期结束,我将 WebBrowser
(基于 IE)控件替换为 .net forms app (c#) 到 Microsoft.Web.WebView2.WinForms.WebView2
.
distribution page表示,用户需要安装WebView2 Runtime,大约100MB!
我的问题是,这真的需要吗?安装 MS Edge 还不够吗(每 Windows 10 台机器上都有)?
This page 说:
先决条件:确保在继续之前安装以下先决条件列表。 WebView2 Runtime 或任何 Microsoft Edge Insider(预览版)频道(Beta、Dev 或 Canary)安装在受支持的 OS(目前 Windows 10,Windows 8.1,和 Windows 7).
但是我不确定Edge Insider是不是普通用户的Edge浏览器?
那么,我真的需要将 100MB WebView2 运行时(我们的一些客户是离线用户)与我的应用程序安装程序(它使用 WinForms.WebView2 控件在我的本机应用程序中显示 HTML 页面)一起分发吗? ,或者如果在这些系统上安装了 MS Edge 就足够了?
答案是:是的,您需要安装WebView2 Runtime!安装在用户机器上的 Edge 版本不是内部通道 - 它是稳定通道。
虽然您可以使用 Edge Insider 频道,但除了开发人员外,不建议使用此频道,因为只有开发人员才有此版本。
引用您链接到的页面:“WebView2 不支持 Microsoft Edge 稳定版”。
是的,您确实需要分发 WebView2 运行时。从the doc你link,你可以找到原因:
- 在本段开发或生产期间的运行时或浏览器支持下,您可以发现:
A production release of a WebView2 app can only use the WebView2 Runtime as the backing web platform, not Microsoft Edge.
- Windows10 上预装的浏览器是Edge Stable Channel,大多数人不会安装Edge Insider(预览)频道,以及:
Microsoft Edge Stable channel isn't supported for WebView2
是的,将 WebView2 运行时间包含在您的分发包中。
如果您在工具包中包含 WebView2 Evergreen Bootstrapper,它将获取最新的 evergreen 嵌入式浏览器。它旨在面向未来,即使您有一段时间不更新您的工具包。
当我包含 <2MiB 引导程序和 运行 它时,我的套件可以在 W10、W7SP1、W8.1、WS2016 和 WS2019 上正确安装。
而且,您的安装程序可以 detect whether WebView2 is already installed,并跳过重新安装。我希望每个编写安装程序的人都会这样做。如果我们这样做,那么我们的用户将免于重新安装每个使用 WebView2 的新应用程序。
这个小小的 Inno Setup 代码节为我正确地检测到了它。 Returns True
当需要 运行 WebView2 安装程序时。
function WebView2IsNotInstalled: Boolean;
var Pv: String;
var key64: String;
var key32: String;
begin
key64 := 'SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}';
key32 := 'SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}';
Result := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, key64, 'pv', Pv) then
begin
Result := 0 = Length(pV);
end
else begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, key32, 'pv', Pv) then
begin
Result := 0 = Length(pV);
end;
end;
end;
(请仔细检查此代码:我不是安装高手。)
由于 IE 生命周期结束,我将 WebBrowser
(基于 IE)控件替换为 .net forms app (c#) 到 Microsoft.Web.WebView2.WinForms.WebView2
.
distribution page表示,用户需要安装WebView2 Runtime,大约100MB!
我的问题是,这真的需要吗?安装 MS Edge 还不够吗(每 Windows 10 台机器上都有)?
This page 说:
先决条件:确保在继续之前安装以下先决条件列表。 WebView2 Runtime 或任何 Microsoft Edge Insider(预览版)频道(Beta、Dev 或 Canary)安装在受支持的 OS(目前 Windows 10,Windows 8.1,和 Windows 7).
但是我不确定Edge Insider是不是普通用户的Edge浏览器?
那么,我真的需要将 100MB WebView2 运行时(我们的一些客户是离线用户)与我的应用程序安装程序(它使用 WinForms.WebView2 控件在我的本机应用程序中显示 HTML 页面)一起分发吗? ,或者如果在这些系统上安装了 MS Edge 就足够了?
答案是:是的,您需要安装WebView2 Runtime!安装在用户机器上的 Edge 版本不是内部通道 - 它是稳定通道。
虽然您可以使用 Edge Insider 频道,但除了开发人员外,不建议使用此频道,因为只有开发人员才有此版本。
引用您链接到的页面:“WebView2 不支持 Microsoft Edge 稳定版”。
是的,您确实需要分发 WebView2 运行时。从the doc你link,你可以找到原因:
- 在本段开发或生产期间的运行时或浏览器支持下,您可以发现:
A production release of a WebView2 app can only use the WebView2 Runtime as the backing web platform, not Microsoft Edge.
- Windows10 上预装的浏览器是Edge Stable Channel,大多数人不会安装Edge Insider(预览)频道,以及:
Microsoft Edge Stable channel isn't supported for WebView2
是的,将 WebView2 运行时间包含在您的分发包中。
如果您在工具包中包含 WebView2 Evergreen Bootstrapper,它将获取最新的 evergreen 嵌入式浏览器。它旨在面向未来,即使您有一段时间不更新您的工具包。
当我包含 <2MiB 引导程序和 运行 它时,我的套件可以在 W10、W7SP1、W8.1、WS2016 和 WS2019 上正确安装。
而且,您的安装程序可以 detect whether WebView2 is already installed,并跳过重新安装。我希望每个编写安装程序的人都会这样做。如果我们这样做,那么我们的用户将免于重新安装每个使用 WebView2 的新应用程序。
这个小小的 Inno Setup 代码节为我正确地检测到了它。 Returns True
当需要 运行 WebView2 安装程序时。
function WebView2IsNotInstalled: Boolean;
var Pv: String;
var key64: String;
var key32: String;
begin
key64 := 'SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}';
key32 := 'SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}';
Result := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, key64, 'pv', Pv) then
begin
Result := 0 = Length(pV);
end
else begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, key32, 'pv', Pv) then
begin
Result := 0 = Length(pV);
end;
end;
end;
(请仔细检查此代码:我不是安装高手。)