问题描述
所以我用 webview2 开发了一个 vb.net 应用程序。我的问题是:如果我将整个调试文件夹复制到一台新计算机,它就可以工作。但是如果我用整个调试文件夹创建一个安装程序,它就不起作用。有什么想法吗?
我使用的是 NuGet 的稳定包。
当我复制和粘贴文件时,我什至不需要费心安装常青版本,而且它工作正常。
解决方法
您是否使用默认的用户数据文件夹并安装到 Program Files?如果是这样,您可能需要将您的用户数据文件夹明确指定为您的应用程序的应用程序数据文件夹。在 WebView2 文档中阅读有关 Managing user data folders 的更多信息。
默认的用户数据文件夹是主机应用程序可执行文件的路径,末尾附加了“.WebView2”。所以记事本的默认值是“C:\windows\system32\notepad.exe.webview2”。当包含主机可执行文件的路径无权允许主机应用程序创建用户数据文件夹时,这不起作用。大多数安装程序运行提升并具有创建应用程序的已安装文件和文件夹的额外权限。但是当安装的应用程序运行时,它通常无权修改其安装路径的内容。相反,您应该明确指定一个用户数据文件夹并管理该文件夹,包括在卸载您的应用时可能将其删除。
,Public Sub New()
Dim url As String = Nothing
InitializeComponent()
InitializeBrowser(url)
End Sub
Private Async Sub InitializeBrowser(ByVal Optional url As String = Nothing)
Dim userDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\SoftwareName"
Dim env = Await CoreWebView2Environment.CreateAsync(Nothing,userDataFolder)
Await WebView21.EnsureCoreWebView2Async(env)
WebView21.Source = New Uri("https://www.google.com/")
End Sub
,
也许这可以成为您的解决方案: 3 月 14 日,微软开始在 Windows 10 机器上自动安装“Microsoft Edge WebView2 运行时”,而不通知用户。