Skip to content

Commit 29943c8

Browse files
authored
fix: use custom user data dir for updater WebView2 (#138)
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. This is what it looked like when broken: ![image](https://github.com/user-attachments/assets/f6d241d7-9341-4c70-9e7f-b8230dc5c9d4)
1 parent cb62556 commit 29943c8

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy