Delphi、WebView2/TEdgeBrowser 和固定运行时间

Delphi, WebView2/TEdgeBrowser and the fixed runtime

我一直在使用 TEdgeBrowser/WebView2 和已安装的 Edge Beta/Canary 浏览器版本作为“运行时”,这似乎工作正常。然而,对于生产部署,我们更愿意从我们的应用程序目录中发布运行时的固定版本。

我一直在尝试使用以下内容:

MyEdgeBrowser.BrowserExecutableFolder := ExtractFileDir(Application.ExeName) + '\WebView2Runtime';

在上面引用的路径中,我有 msedgewebview2.exe 以及完整安装的固定版本运行时和所有支持文件和文件夹。这是我下载并提取的文件:

微软.WebView2.FixedVersionRuntime.98.0.1108.62.x86.cab

这是提取后的样子的图像:

我试图将 WebView2Loader.dll 放在我的应用程序目录、WebView2Runtime 文件夹中,甚至放在 WebView2Runtime\win-x86\native 文件夹中,始终作为我的应用程序目录的子文件夹。

我已经尝试了 Embarcadero 使用 GetIt 包管理器分发的 WebView2Loader.dll 11/20/2021 版本,以及 Microsoft 通过 NuGet 包管理器分发的最新和最好的版本。

CreateWebView 调用总是失败。

有没有人成功获得与 Delphi 和 WebView2Loader.dll 一起工作的固定版本运行时?是否存在特定于版本的问题?需要什么文件夹结构?

谢谢。

更新:我发现的一个糟糕的解决方法是安装 Edge 的开发版或金丝雀版,然后将“C:\Program Files(x86)\Microsoft\Edge Beta”文件夹中的所有文件复制到我的应用程序文件夹,卸载 Edge Beta/Canary,然后将 BrowserExecutableFolder 指向“Edge Beta\Application”文件夹。这是我第一次看到没有安装 Edge 或 Canary 的“固定版本运行时”功能。

我在 64 位模式下启动项目,但由于内部原因不得不切换到 32 位模式。不幸的是,我没有切换回 WebView2Loader.dll 的 32 位版本,而是使用运行时的 32 位版本。

一旦我切换到 WebView2Loader.dll 的 32 位版本,TEdgeBrowser 就可以使用固定版本的运行时,无需进一步安装。