|
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