Ошибка TEdgeBrowser Navigate с ошибкой Файл не найден

Моя первая попытка попробовать новый 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 действительно ERROR_FILE_NOT_FOUND

Последовательность (например, согласно https://www.delphipraxis.net/204266-new-vcl-tedgebrowser-component-coming-rad-studio-10-4-a.html или http://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_TEdgeBrowser_Component_and_Changes_to_the_TWebBrowser_Component):

  • Новая виртуальная машина Win10, запустите Edge, запустится установщик win и правильно установите Edge
  • Скачайте и установите Edgeview2 SDK через GetIt
  • Скопируйте c:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\win32\WebView2Loader.dll в каталог приложения

Конфигурация: Delphi 10.4.3 Sydney, запуск 32-разрядного приложения на виртуальной машине Win10, установлен 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 (20 июля 2020 г.) не помогло.


person Jan Doggen    schedule 03.08.2020    source источник
comment
Запустите Process Explorer и в нижней панели убедитесь, что ваша DLL на самом деле загружен в ваш EXE, а не тот, который находится в другом месте. Сделайте то же самое при запуске Edge, чтобы увидеть, не загружает ли он другие/больше DLL.   -  person AmigoJack    schedule 03.08.2020
comment
Edge Chromium теперь официально выпущен. Если применяются обновления Windows, они уже должны быть у вас (у меня версия 84.0.522.52).   -  person Olivier    schedule 04.08.2020
comment
@Olivier Та же версия здесь   -  person Jan Doggen    schedule 06.08.2020
comment
@AmigoJack В моем тестовом приложении вообще нет DLL; нет webview2loader.dll для MSEdge.exe   -  person Jan Doggen    schedule 11.08.2020
comment
У меня точно такая же проблема, вы так и не нашли решение?   -  person Austin Shaw    schedule 12.08.2020
comment
@AustinShaw Еще нет. Вчера я попытался обновить DLL, но у него низкий приоритет, связанный с другой работой. Когда узнаю, обязательно напишу ответ.   -  person Jan Doggen    schedule 12.08.2020


Ответы (1)


Я загрузил бета-версию Edge, и это исправило ее для меня.

Я использовал версию 84.0.522.59 (официальная сборка) (64-разрядная), и у меня была та же проблема, что и у вас.

Я скачал версию 85.0.564.30 (официальная сборка) бета (64-разрядная).

Кроме того, я просмотрел документацию, и в ней говорится, что нужно получить версию канареечного канала. Поэтому, хотя я скачал бета-версию, я предполагаю, что вы должны загрузить канареечную версию, которая также решит проблему.

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

Браузер Microsoft Edge на базе Chromium в настоящее время доступен по адресу https://www.microsoftedgeinsider.com/download ( Canary Channel Version, пока WebView2 SDK находится в предварительной версии, в настоящее время минимальная требуемая версия — 82.0.430.0).

person Austin Shaw    schedule 13.08.2020
comment
Это странно. Итак, теперь есть «официальный» выпуск для Edge, и он не работает ;-) Что ж, сейчас мы находимся только на стадии изучения/тестирования (можно ли заменить CEF4Delphi чем-то другим?), я дам этому пытаться. Если мы заставим это работать и захотим использовать это в производственном коде, нам придется подождать, пока у наших клиентов не появится официальная версия, работающая. - person Jan Doggen; 13.08.2020
comment
@JanDoggen Я полностью согласен. Я мог бы поклясться, что читал документацию, в которой говорилось, что после того, как Edge был официально выпущен с обновлениями Windows, мы могли бы просто использовать эту версию, но теперь я не могу ее найти. Ну ладно, думаю, подождем. Я не уверен, что вообще смогу использовать этот новый компонент, потому что в нем отсутствуют многие функции, которые мы использовали в старом компоненте (данные публикации, доступ к документам и т. д.). Надеюсь, embarcadero значительно улучшит его. - person Austin Shaw; 14.08.2020
comment
Подтвержденный. Я только что скачал канарскую версию (86.something), и она отлично работает. - person Jan Doggen; 18.08.2020