|  | 
| 4 | 4 | using System.IO; | 
| 5 | 5 | using System.Linq; | 
| 6 | 6 | using System.Threading.Tasks; | 
|  | 7 | +using Coder.Desktop.App.Services; | 
| 7 | 8 | using CommunityToolkit.Mvvm.ComponentModel; | 
| 8 | 9 | using Microsoft.Extensions.Logging; | 
| 9 | 10 | using Microsoft.UI.Xaml; | 
| 10 | 11 | using Microsoft.UI.Xaml.Controls; | 
|  | 12 | +using Microsoft.Web.WebView2.Core; | 
| 11 | 13 | using NetSparkleUpdater; | 
| 12 | 14 | using NetSparkleUpdater.Enums; | 
| 13 | 15 | using NetSparkleUpdater.Events; | 
| @@ -174,8 +176,18 @@ public async Task Changelog_Loaded(object sender, RoutedEventArgs e) | 
| 174 | 176 |         if (sender is not WebView2 webView) | 
| 175 | 177 |             return; | 
| 176 | 178 | 
 | 
| 177 |  | -        // Start the engine. | 
| 178 |  | -        await webView.EnsureCoreWebView2Async(); | 
|  | 179 | +        // Start the engine with a custom user data folder. The default for | 
|  | 180 | +        // unpackaged WinUI 3 apps is to write to a subfolder in the app's | 
|  | 181 | +        // install directory, which is Program Files by default and not | 
|  | 182 | +        // writeable by the user. | 
|  | 183 | +        var userDataFolder = Path.Join(SettingsManagerUtils.AppSettingsDirectory(), "WebView2"); | 
|  | 184 | +        _logger.LogDebug("Creating WebView2 user data folder at {UserDataFolder}", userDataFolder); | 
|  | 185 | +        Directory.CreateDirectory(userDataFolder); | 
|  | 186 | +        var env = await CoreWebView2Environment.CreateWithOptionsAsync( | 
|  | 187 | +            null, | 
|  | 188 | +            userDataFolder, | 
|  | 189 | +            new CoreWebView2EnvironmentOptions()); | 
|  | 190 | +        await webView.EnsureCoreWebView2Async(env); | 
| 179 | 191 | 
 | 
| 180 | 192 |         // Disable unwanted features. | 
| 181 | 193 |         var settings = webView.CoreWebView2.Settings; | 
|  | 
0 commit comments