【问题标题】:TEdgeBrowser Navigate fails with error "File not found"TEdgeBrowser Navigate 失败并出现错误“找不到文件”
【发布时间】:2020-11-23 13:38:59
【问题描述】:

我第一次尝试新的TEdgeBrowser 失败并显示“系统找不到文件”

procedure TFrmTEdgeBrowser.BtnNavigateClick(Sender: TObject);
var lErrCode: Integer;
begin
  if not EdgeBrowser.Navigate('https://www.google.com') then
  begin
     lErrCode := EdgeBrowser.LastErrorCode;
     ShowMessage(IntToStr(lErrCode) + ': ' + SysErrorMessage(lErrCode));
  end;
end;

错误代码 -2147024894 = $80070002 is indeed ERROR_FILE_NOT_FOUND

序列(例如按照https://www.delphipraxis.net/204266-new-vcl-tedgebrowser-component-coming-rad-studio-10-4-a.htmlhttp://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_TEdgeBrowser_Component_and_Changes_to_the_TWebBrowser_Component):

  • 新建 Win10 VM,启动 Edge,win 安装程序运行并正确安装 Edge
  • 通过GetIt下载安装Edgeview2 SDK
  • 复制c:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\win32\WebView2Loader.dll到应用目录

配置:Delphi 10.4.3 Sydney,在 Win10 虚拟机中运行 32 位应用程序,安装 Edge 84.0.522.52

尝试:前面没有https:,重启,尝试从TApplicationEvents.OnException获取更多信息

然后我尝试运行演示 c:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Object Pascal\VCL\WebBrowser\Edge\EdgeBrowser.dproj(将 dll 也复制到该目录中),但这会从其末尾给出初始化错误:

procedure TfrmMain.EdgeBrowserCreateWebViewCompleted(Sender: TCustomEdgeBrowser; AResult: HResult);
begin
{$IFDEF DEBUG}
  OutputDebugString('EdgeBrowser OnCreateWebViewCompleted');
{$ENDIF}
  if Succeeded(AResult) then
  begin
    tbCancel.Enabled := True;
    tbReload.Enabled := True;
    tbGo.Enabled := True;
    edtAddress.Enabled := True;
    Sender.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE);
  end
  else
  begin
    if AResult = HResultFromWin32(ERROR_FILE_NOT_FOUND) then
      Application.MessageBox('Could not find Edge installation. ' +
        'Do you have a version installed that''s compatible with this WebView2 SDK version?',
        'Edge initialisation error', MB_OK or MB_ICONERROR)
    else
      Application.MessageBox('Failed to initialise Edge browser control',
        'Edge initialisation error', MB_OK or MB_ICONERROR)
  end;
end;

但现在 AResult 是 -2147467259 = $80004005
这似乎与数据/ODBC 相关。

更新到 Microsoft.Web.Webview2 的更高版本 0.9.579(2020 年 7 月 20 日)没有帮助。

【问题讨论】:

  • 运行 Process Explorer 并在底部窗格中确保您的 DLL 实际加载到您的 EXE 中,而不是位于其他地方的。在运行 Edge 时执行相同操作,以查看它是否不加载不同/更多的 DLL。
  • Edge Chromium 现已正式发布。如果应用了 Windows 更新,你应该已经有了(我有版本 84.0.522.52)。
  • @Olivier 此处版本相同
  • @AmigoJack 在我的测试应用程序中根本没有 DLL; MSEdge.exe 没有 webview2loader.dll
  • 我也遇到了同样的问题,你有没有找到解决办法?

标签: delphi microsoft-edge delphi-10.4-sydney tedgebrowser


【解决方案1】:

我下载了 Edge 的 Beta 版,并为我修复了它。

我使用的是版本 84.0.522.59 (Official build) (64-bit),遇到了和你一样的问题。

我下载的版本是 85.0.564.30 (Official build) beta (64-bit)。

另外,我查看了文档,它说要获取金丝雀频道版本。因此,虽然我下载了测试版,但我假设金丝雀版本是您应该下载的,并且也会解决问题。

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_TEdgeBrowser_Component_and_Changes_to_the_TWebBrowser_Component

基于 Microsoft Edge Chromium 的浏览器目前可从 https://www.microsoftedgeinsider.com/download (金丝雀频道 版本 虽然 WebView2 SDK 处于预发布阶段,但目前 最低要求版本为 82.0.430.0)。

【讨论】:

  • 这很奇怪。所以现在 Edge 有一个“官方”版本,但它不起作用 ;-) 好吧,我们现在只处于探索/测试阶段(我们可以用其他东西替换 CEF4Delphi 吗?),我会给这个尝试。如果我们让它工作并想在生产代码中使用它,这将不得不等到我们的客户有一个 official 版本可以工作
  • @JanDoggen 我完全同意。我可以发誓我阅读了一些文档,说明一旦 Edge 正式发布了 Windows 更新,我们就可以使用那个版本,但现在我找不到它。哦,好吧,我想我们等着。我不确定我什至可以使用这个新组件,因为它缺少我们从旧组件中使用的许多功能(发布数据、文档访问等)。希望 embarcadero 能显着增强它。
  • 已确认。我刚刚下载了 Canary 版本(86.something),效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
相关资源
最近更新 更多