C#+WinUI+AOT+WebView2如何指定用户数据目录

xingyun86 2小时前 15

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}");
    }
}


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回