|
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