Определить, установлен ли WebView2 на клиентском компьютере (VB.NET )

#.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, оно также покажет вам использование приведенного выше кода.

KioskBrowser (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. Хотите поделиться своей полной проверкой? 🙂