Проблема с компиляцией CEF / CefSharp

#cefsharp

#cefsharp

Вопрос:

 Environment: Windows 10, WinForm (.Net 4.7.2) x64 only, CefSharp 71.0.2.0
  

Нам нужна поддержка воспроизведения MP4 в нашем продукте (у нас есть лицензия), и мы пытаемся перекомпилировать CEF с включенными проприетарными кодеками.

Мы используем инструкции из: https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md#markdown-header-windows-setup

Наш файл create.bat выглядит следующим образом:

 set CEF_USE_GN=1
set GN_DEFINES=is_win_fastlink=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
call cef_create_projects.bat 
  

Наш файл update.bat выглядит следующим образом

 set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
python ..automateautomate-git.py --download-dir=C:codechromium_git --depot-tools-dir=C:codedepot_tools --no-distrib --no-build --branch=3578 
  

Мы пытаемся специально настроить сборку 3578, чтобы она соответствовала сборке, поставляемой с CefSharp. Мы также включили проприетарный кодек, используя флаг: proprietary_codecs= true

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

Мы копируем следующие файлы из выходной папки сборки в нашу .Сетевое приложение, заменяющее файлы, упакованные с помощью CefSharp:

 cef.pak
cef_100_percent.pak
cef_200_percent.pak
cef_extensions.pak
chrome_elf.dll
d3dcompiler_47.dll
devtools_resources.pak
icudtl.dat
libcef.dll
libEGL.dll
libGLESv2.dll
natives_blob.bin
snapshot_blob.bin
v8_context_snapshot.bin
locales*.*
swiftshaderlibEGL.dll
swiftshaderlibGLESv2.dll
  

При запуске нашего приложения приложение немедленно завершает работу, и это записывается в debug.файл журнала:

 [0326/094610.429:FATAL:cookie_manager_impl.cc(620)] Check failed: false. context not valid
Backtrace:
cef_string_utf16_to_upper [0x00007FFD2B53E1E5 1713061]
cef_string_utf16_to_upper [0x00007FFD2B53D44D 1709581]
cef_string_utf16_to_upper [0x00007FFD2B5765D5 1943445]
cef_zip_reader_create [0x00007FFD2B3107B8 159661640]
cef_cookie_manager_get_global_manager [0x00007FFD219B0436 54]
CefCookieManager::GetGlobalManager [0x00007FFD7322879E 94]
(No symbol) [0x00007FFD4E1C07DE]

[0326/094721.035:FATAL:cookie_manager_impl.cc(620)] Check failed: false. context not valid
  

Я смог увидеть, что 71.0.2.0 использует CEF 3.3558.1870.gc974488 / Chromium 71.0.3578.98 из:
https://github.com/cefsharp/CefSharp/commit/7d24861e7af79fc4721eb498bb8417b5aa6cad97

Когда мы запускаем cefclient.exe из нашей сборки и перейдите в chrome://об этом отображается:

 CEF 3.3578.1870.gc974488
Chromium    71.0.3578.98
  

Которая соответствует странице примечаний к выпуску CefSharp.

Будем признательны за любые предложения!

Комментарии:

1. Лично я бы посмотрел на использование github.com/mitchcapper/CefSharpDockerfiles поскольку в нем есть скрипты для сборки CEF и `CefSharp.