Обновление CEF

CEF (Chromium Embedded Framework) — ХУЙНЯ РЕДКОСТНАЯ. ПРОСТО ПИЗДЕЦ. Вот как его обновить.

Скачайте последнюю стабильную сборку CEF

Перейдите сюда, скачайте последнюю стабильную сборку для Windows 64-bit и Linux 64-bit.

Обновление Xilium.CefGlue

Xilium.CefGlue — это привязка C# для CEF API, которую мы используем. Они не так часто обновляют апстрим, но когда делают это, стоит вливать их изменения. Вам придётся принять ИХ изменения для конфликтов, потому что мы сделали много изменений, которые иначе конфликтуют.

Обновите CefGlue.Interop.Gen/include последними заголовками из скачанного ранее пакета CEF, затем повторно запустите gen-cef3.cmd.

Если в CEF API были какие-либо изменения, возможно, вам потребуется обновить остальную часть CefGlue, чтобы сделать её совместимой и т. д. Сделайте это.

Обновление Robust.Natives.Cef

Это пакеты NuGet, которые поставляют бинарные файлы CEF обычным разработчикам RT/OpenDream, чтобы им не приходилось вручную скачивать CEF оттуда сверху.

Клонируйте build-dependencies. Извлеките ваши скачанные копии CEF (для обеих платформ) в natives/cef/, чтобы это выглядело так:

Сделайте strip бинарных файлов Linux, для этого запустите strip *.so в папке Release/ загрузки для Linux. Используйте WSL, если вы на Windows.

Затем обновите Packages/Robust.Natives.Cef/Robust.Natives.Cef.nuspec, чтобы файлы были корректны для новой версии CEF. Вам нужны файлы из Release/ и Resources/ в сборке CEF.

Запустите dotnet pack ./Packages/Robust.Natives.Cef/Robust.Natives.Cef.csproj, чтобы создать Packages/Robust.Natives.Cef/bin/Release/Robust.Natives.Cef.<VERSION>.nupkg.

Измените nuget.config в вашем тестовом репозитории

Ладно, очевидно, вы собираетесь что-то тестировать, да? Вы не хотите загружать вышеуказанный нативный пакет в NuGet, если он не работает, но как проверить, что он работает? Ну, это легко, используйте локальный источник NuGet!

В репозитории, который вы тестируете, рядом с solution будет файл nuget.config. Он будет выглядеть так (или похоже):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
  	<add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
  </packageSources>
</configuration>

Вы можете локально сделать вышеуказанный пакет NuGet доступным, добавив полный путь к вашему Packages/Robust.Natives.Cef/bin/Release/, указанному ранее, в качестве источника:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
  	<add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
    <add key="cef" value="E:\ss14\build-dependencies\Packages\Robust.Natives.Cef\bin\Release" />
  </packageSources>
</configuration>

Обновление Robust.Client.WebView

Со всеми предыдущими шагами, выполненными, вы теперь можете поднять PackageReference в Robust.Client.WebView до новой версии. После сборки и запуска, надеюсь, всё будет работать!

ПРОТЕСТИРУЙТЕ ВСЁ

CEF имеет неприятную привычку быть огромной чёртовой зависимостью, которая может сломаться морбиллионом способов. ПРОВЕРЬТЕ, ЧТО ВЫ НИЧЕГО НЕ СЛОМАЛИ.

В частности, протестируйте OpenDream на Windows, Linux и ещё раз на обоих через лаунчер. Вы можете протестировать лаунчер, следуя Тестированию с лаунчером. Просто используйте Tools/package_webview.py, чтобы упаковать zip для него.

Загрузите нативные файлы в NuGet

Загрузите Robust.Natives.Cef на https://www.nuget.org/. Там есть большая кнопка загрузки, используйте её. Это займёт некоторое время, потому что весь пакет весит пару сотен мегабайт (уф), но, к счастью, я не знаю об ограничениях.

Закоммитьте всё

Закоммитьте всё в CefGlue, build-dependencies и Robust. Ура!

Загрузите новый модуль Robust в centcomm

  • Подключитесь по SSH к suns
  • mkdir /var/lib/robust-builds/modules/Robust.Client.WebView/<rt_version>
  • scp release/Robust.Client.WebView* suns:/var/lib/robust-builds/modules/Robust.Client.WebView/<rt_version>
  • cd /home/robust-build-push
  • ./push_module.ps1 Robust.Client.WebView <rt_version>

Subpages