C#+WinUI+AOT+WebView2如何指定用户数据目录
在上一篇文章基础上,我们对初始化加处理即可。
以下是添加的代码
public MainWindow()
{
InitializeComponent();
MyWebView.Loaded += async (s, e) => await InitWebView2WithCustomDir();
}
/// <summary>
/// 初始化WebView2并指定自定义用户数据目录
/// </summary>
private async Task InitWebView2WithCustomDir()
{
try
{
// 步骤1:定义自定义用户数据目录(建议用应用专属路径,避免权限问题)
string customUserDataDir = Path.Combine(
// 应用本地数据目录(无管理员权限也可读写)
System.AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule!.FileName), // 应用名
"WebView2UserDataDir" // 自定义子目录(区分默认目录)
);
// 确保目录存在(初始化时目录不存在会报错)
Directory.CreateDirectory(customUserDataDir);
// 步骤2:创建自定义CoreWebView2Environment(核心:指定userDataFolder)
CoreWebView2EnvironmentOptions coreWebView2EnvironmentOptions = new CoreWebView2EnvironmentOptions
{
Language = "zh-CN", // 可选:设置WebView2语言
// 可选:添加浏览器启动参数(如调试、禁用缓存等)
AdditionalBrowserArguments = "--disable-cache"
};
// 创建环境(browserExecutableFolder为null则使用系统默认WebView2运行时)
CoreWebView2Environment coreWebView2Environment = await CoreWebView2Environment.CreateWithOptionsAsync(
browserExecutableFolder: null,
userDataFolder: customUserDataDir,
options: coreWebView2EnvironmentOptions
);
// 步骤3:用自定义环境初始化WebView2(关键:覆盖默认目录)
await MyWebView.EnsureCoreWebView2Async(coreWebView2Environment);
MyWebView.NavigationStarting += EnsureHttps;
// 验证:加载网页测试
MyWebView.Source = new Uri("https://www.microsoft.com");
// 可选:打印目录路径,确认生效
System.Diagnostics.Debug.WriteLine($"WebView2用户数据目录:{customUserDataDir}");
}
catch (Exception ex)
{
// 捕获初始化异常(如路径权限、运行时缺失等)
System.Diagnostics.Debug.WriteLine($"初始化失败:{ex.Message}");
}
}