#.net #vb.net #microsoft-edge #webview2
#.net #vb.net #microsoft-edge #webview2
Вопрос:
Я ищу способ определить, установлена ли среда выполнения WebView2 на клиентских компьютерах, чтобы вместо этого я мог отображать старый браузер ie, если он у них не установлен. Я использую VB.NET .
Спасибо
Ответ №1:
Вы можете обратиться к этому документу о том, как проверить, установлена ли среда выполнения WebView2. Для проверки выполните одно из следующих действий:
-
Проверьте
pv
REG_SZ
, существует ли regkey () и не является ли он null или empty . Найдите pv (REG_SZ
) в следующем расположении:HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftEdgeUpdateClients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
VB.NET код для проверки
pv
regkey:Dim readValue = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftEdgeUpdateClients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}", "pv", Nothing) If readValue Is Nothing Then 'Key doesn't exist Else 'Key existed, check value End If
-
Запустите
GetAvailableCoreWebView2BrowserVersionString
и убедитесьversionInfo
, что он естьNULL
.В документе используется C . Для VB.NET , соответствующий метод есть
GetAvailableBrowserVersionString(String)
. Вы можете обратиться к документу о том, как его использовать в VB.NET .
Комментарии:
1. Большое вам спасибо, первая часть сработала идеально, хотя я не смог заставить вторую часть работать. Не уверен, требуется ли это, хотя, поскольку первый бит работает.
2. Пожалуйста. Вам нужно использовать только одну из частей.
Ответ №2:
Я реализовал рабочий пример кода на C #. Он использует метод CoreWebView2Environment.GetAvailableBrowserVersionString()
для получения версии.
Я тестировал с помощью решения regkey, но оно не работало с бета-версией Edge Chromium, разработчиком или Canary. Он работает только при установке среды выполнения WebView2.
public static class WebView2Install
{
public static InstallInfo GetInfo()
{
var version = GetWebView2Version();
return new InstallInfo(version);
}
private static string GetWebView2Version()
{
try
{
return CoreWebView2Environment.GetAvailableBrowserVersionString();
}
catch (Exception) { return ""; }
}
}
public class InstallInfo
{
public InstallInfo(string version) => (Version) = (version);
public string Version { get; }
public InstallType InstallType => Version switch
{
var version when version.Contains("dev") => InstallType.EdgeChromiumDev,
var version when version.Contains("beta") => InstallType.EdgeChromiumBeta,
var version when version.Contains("canary") => InstallType.EdgeChromiumCanary,
var version when !string.IsNullOrEmpty(version) => InstallType.WebView2,
_ => InstallType.NotInstalled
};
}
public enum InstallType
{
WebView2, EdgeChromiumBeta, EdgeChromiumCanary, EdgeChromiumDev, NotInstalled
}
Я также создал приложение WPF, которое использует WebView2 на GitHub, оно также покажет вам использование приведенного выше кода.
Комментарии:
1. Вы говорите, что решение regkey не сработало для вас. Вы проверили оба раздела реестра в соответствии с документами? Или только один из них? (В принятом решении здесь отсутствует другой ключ.)
Ответ №3:
Я придумал следующую реализацию. (Извините, это на C #)
private bool WebViewIsInstalled()
{
string regKey = @"SOFTWAREWOW6432NodeMicrosoftEdgeUpdateClients";
using (RegistryKey edgeKey = Registry.LocalMachine.OpenSubKey(regKey))
{
if (edgeKey != null)
{
string[] productKeys = edgeKey.GetSubKeyNames();
if (productKeys.Any())
{
return true;
}
}
}
return false;
}
Ответ №4:
«Лучший ответ» больше не является правильным ответом. При установке более новых версий MS-Edge (например: 97.0.1072.55) ключ
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftEdgeUpdateClients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
не создается, но создается другой ключ в HKEY_CURRENT_USER:
HKEY_CURRENT_USERSOFTWAREMicrosoftEdgeUpdateClients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
Итак, проверки ключа в разделе HKEY_LOCAL_MACHINE недостаточно, HKEY_CURRENT_USER также следует проверить.
Комментарии:
1. Хотите поделиться своей полной проверкой? 🙂