private CefLoader(ChromelyPlatform platform) { _platform = platform; _architecture = RuntimeInformation.ProcessArchitecture; _build = ChromelyRuntime.GetExpectedCefBuild(); Logger.Instance.Log.LogInformation($"CefLoader: Load CEF for {_platform} {_architecture}, version {_build}"); _lastPercent = 0; _numberOfParallelDownloads = Environment.ProcessorCount; _tempTarStream = Path.GetTempFileName(); _tempBz2File = Path.GetTempFileName(); _tempTarFile = Path.GetTempFileName(); _tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); }
public DynamicCefLoader(IServiceProvider serviceProvider) { _logger = serviceProvider.GetService <ILogger>(); _platform = serviceProvider.GetService <IChromelyConfiguration>().Platform; _architecture = RuntimeInformation.ProcessArchitecture; _build = ChromelyRuntime.GetExpectedCefBuild(); _logger?.LogInformation($"CefLoader: Load CEF for {_platform} {_architecture}, version {_build}"); _lastPercent = 0; _numberOfParallelDownloads = Environment.ProcessorCount; _tempTarStream = Path.GetTempFileName(); _tempBz2File = Path.GetTempFileName(); _tempTarFile = Path.GetTempFileName(); _tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); }
/// <summary> /// /// </summary> /// <param name="platform"></param> /// <param name="processArchitecture"></param> /// <param name="build"></param> /// <returns></returns> public string FindCefArchiveName(ChromelyPlatform platform, Architecture processArchitecture, CefBuildNumbers build) { var arch = processArchitecture.ToString() .Replace("X64", "64") .Replace("X86", "32"); var platformIdentifier = (platform + arch).ToLower(); var indexUrl = CefBuildsDownloadIndex(platformIdentifier); // cef_binary_3.3626.1895.g7001d56_windows64_client.tar.bz2 var binaryNamePattern1 = $@"""(cef_binary_[0-9]+\.{build}\.[0-9]+\.(.*)_{platformIdentifier}_client.tar.bz2)"""; // cef_binary_73.1.5+g4a68f1d+chromium-73.0.3683.75_windows64_client.tar.bz2 // cef_binary_77.1.18+g8e8d602+chromium-77.0.3865.120_windows64_client.tar.bz2 var versionPattern = build.CefVersion.Replace("+", "%2B"); var binaryNamePattern2 = $@"""(cef_binary_{versionPattern}_{platformIdentifier}_minimal.tar.bz2)"""; using (var client = new WebClient()) { Logger.Instance.Log.LogInformation($"CefLoader: Load index page {indexUrl}"); var cefIndex = client.DownloadString(indexUrl); // up to Chromium version 72 var found = new Regex(binaryNamePattern1, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase).Match(cefIndex); if (found.Success) { return(found.Groups[1].Value); } // from Chromium version 73 up found = new Regex(binaryNamePattern2, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase).Match(cefIndex); if (found.Success) { return(found.Groups[1].Value); } #region https://github.com/chromelyapps/Chromely/issues/257 // Hack until fixed. if (!string.IsNullOrEmpty(binaryNamePattern1)) { if (binaryNamePattern1.Contains("83.0.4103.106")) { return($"cef_binary_83.5.0%2Bgbf03589%2Bchromium-83.0.4103.106_{platformIdentifier}_minimal.tar.bz2"); } } if (!string.IsNullOrEmpty(binaryNamePattern2)) { if (binaryNamePattern2.Contains("83.0.4103.106")) { return($"cef_binary_83.5.0%2Bgbf03589%2Bchromium-83.0.4103.106_{platformIdentifier}_minimal.tar.bz2"); } } #endregion Hack until fixed. var message = $"CEF for chrome version {CefRuntime.ChromeVersion} platform {platformIdentifier} not found."; Logger.Instance.Log.LogError("CefLoader: " + message); } return(""); }
/// <summary> /// /// </summary> /// <param name="platform"></param> /// <param name="processArchitecture"></param> /// <param name="build"></param> /// <returns></returns> public string FindCefArchiveName(ChromelyPlatform platform, Architecture processArchitecture, CefBuildNumbers build) { var arch = processArchitecture.ToString() .Replace("X64", "64") .Replace("X86", "32"); var platformIdentifier = (platform + arch).ToLower(); var indexUrl = CefBuildsDownloadIndex(platformIdentifier); // cef_binary_3.3626.1895.g7001d56_windows64_client.tar.bz2 var binaryNamePattern1 = $@"""(cef_binary_[0-9]+\.{build}\.[0-9]+\.(.*)_{platformIdentifier}_client.tar.bz2)"""; // cef_binary_73.1.5+g4a68f1d+chromium-73.0.3683.75_windows64_client.tar.bz2 // cef_binary_77.1.18+g8e8d602+chromium-77.0.3865.120_windows64_client.tar.bz2 var versionPattern = build.CefVersion.Replace("+", "%2B"); var binaryNamePattern2 = $@"""(cef_binary_{versionPattern}_{platformIdentifier}_minimal.tar.bz2)"""; using (var client = new WebClient()) { Logger.Instance.Log.Info($"CefLoader: Load index page {indexUrl}"); var cefIndex = client.DownloadString(indexUrl); // up to Chromium version 72 var found = new Regex(binaryNamePattern1, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase).Match(cefIndex); if (found.Success) { return(found.Groups[1].Value); } // from Chromium version 73 up found = new Regex(binaryNamePattern2, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase).Match(cefIndex); if (found.Success) { return(found.Groups[1].Value); } var message = $"CEF for chrome version {CefRuntime.ChromeVersion} platform {platformIdentifier} not found."; Logger.Instance.Log.Fatal("CefLoader: " + message); } return(""); }