From ab2b38000ebb270da97a8f87c367c72d40ea263d Mon Sep 17 00:00:00 2001 From: Natsumi Date: Thu, 24 Jul 2025 20:12:50 +1200 Subject: [PATCH] Handle downgrading future Cef versions --- Dotnet/Cef/CefService.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Dotnet/Cef/CefService.cs b/Dotnet/Cef/CefService.cs index 1616bddb..35094826 100644 --- a/Dotnet/Cef/CefService.cs +++ b/Dotnet/Cef/CefService.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.IO.Compression; +using System.Text; using CefSharp; using CefSharp.SchemeHandler; using CefSharp.WinForms; @@ -12,15 +13,32 @@ namespace VRCX { public static readonly CefService Instance; private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + private static string _lastCefVersionPath = string.Empty; static CefService() { + _lastCefVersionPath = Path.Join(Program.AppDataDirectory, "LastCefVersion"); Instance = new CefService(); } internal void Init() { var userDataDir = Path.Join(Program.AppDataDirectory, "userdata"); + + // delete userdata if Cef version has been downgraded, fixes VRCX not opening after a downgrade + var currentVersion = Cef.ChromiumVersion; + if (File.Exists(_lastCefVersionPath)) + { + var lastCefVersion = File.ReadAllText(_lastCefVersionPath).Trim(); + if (string.Compare(lastCefVersion, currentVersion, StringComparison.Ordinal) > 0) + { + logger.Info("Cef downgrade detected, deleting userdata: {0} -> {1}", lastCefVersion, currentVersion); + Directory.Delete(userDataDir, true); + } + } + File.WriteAllBytes(_lastCefVersionPath, Encoding.UTF8.GetBytes(currentVersion)); + logger.Info("Cef version: {0}", currentVersion); + var cefSettings = new CefSettings { RootCachePath = userDataDir, @@ -99,9 +117,10 @@ namespace VRCX CefSharpSettings.ShutdownOnExit = false; CefSharpSettings.ConcurrentTaskExecution = true; - + if (Cef.Initialize(cefSettings, false) == false) { + logger.Error("Cef failed to initialize"); throw new Exception("Cef.Initialize()"); } }