Skip to content

Commit e12a66d

Browse files
committed
fix: use custom user data dir for updater WebView2
The default location was in the install directory, which is not writeable by regular users. We now store the WebView2 data directory in our AppData/Local folder.
1 parent dbb8d76 commit e12a66d

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

App/App.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<LangVersion>preview</LangVersion>
1818
<!-- We have our own implementation of main with exception handling -->
1919
<DefineConstants>DISABLE_XAML_GENERATED_MAIN;DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION</DefineConstants>
20+
<!-- Default version for debug builds, overridden during releases -->
21+
<Version>0.1.0.0</Version>
2022

2123
<AssemblyName>Coder Desktop</AssemblyName>
2224
<AssemblyTitle>Coder Desktop</AssemblyTitle>

App/ViewModels/UpdaterUpdateAvailableViewModel.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
using System.IO;
55
using System.Linq;
66
using System.Threading.Tasks;
7+
using Coder.Desktop.App.Services;
78
using CommunityToolkit.Mvvm.ComponentModel;
89
using Microsoft.Extensions.Logging;
910
using Microsoft.UI.Xaml;
1011
using Microsoft.UI.Xaml.Controls;
12+
using Microsoft.Web.WebView2.Core;
1113
using NetSparkleUpdater;
1214
using NetSparkleUpdater.Enums;
1315
using NetSparkleUpdater.Events;
@@ -174,8 +176,18 @@ public async Task Changelog_Loaded(object sender, RoutedEventArgs e)
174176
if (sender is not WebView2 webView)
175177
return;
176178

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);
179191

180192
// Disable unwanted features.
181193
var settings = webView.CoreWebView2.Settings;

0 commit comments

Comments
 (0)