Page 1 of 1

TWebView2 - Detectar si está instalado en el sistema

Posted: Fri Oct 25, 2024 6:03 pm
by AngelSalom
Hola amigos, estoy "jugueteando" con TWebView2.
¿Existe algún modo de detectar si el "WebView2 Runtime" está instalado en el sistema?

Gracias,

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Fri Oct 25, 2024 6:06 pm
by leandro
Hola Angel buenas tardes como estas?

Code: Select all | Expand

    lSisas := IsWebViewAvailable()
 

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Fri Oct 25, 2024 7:48 pm
by AngelSalom
Hola Leandro, gracias. Pero esa función solo detecta si webview.dll puede cargarse.
En el caso de webview2 no es necesaria.

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Sun Oct 27, 2024 1:50 am
by Danielmaximiliano
AngelSalom wrote:Hola Leandro, gracias. Pero esa función solo detecta si webview.dll puede cargarse.
En el caso de webview2 no es necesaria.
Hola :
te suguiero leas https://learn.microsoft.com/en-us/micro ... -installed
Slds

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Sun Oct 27, 2024 6:54 am
by Antonio Linares

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

    MsgInfo( IsWebView2Available() )

return nil

function IsWebView2Available()

return ! Empty( TWebView2():New():hWebView )

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Sun Oct 27, 2024 8:23 am
by AngelSalom
Gracias Antonio, simple y efectivo.

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Mon Oct 28, 2024 3:55 pm
by AngelSalom
Danielmaximiliano wrote:
AngelSalom wrote:Hola Leandro, gracias. Pero esa función solo detecta si webview.dll puede cargarse.
En el caso de webview2 no es necesaria.
Hola :
te suguiero leas https://learn.microsoft.com/en-us/micro ... -installed
Slds
Respecto a esta aproximación, en Windows 7 ( sí aún me quedan clientes usándolo ), da mejor resultado que la propuesta por Antonio, ya que aquella arroja un error de protección si el componente no está instalado.
Lo dicho, basándome en el enlace y siguiendo las instrucciones de Microsoft, se consulta el valor adecuado en diferentes puntos del registro.

Code: Select all | Expand

Static Function IsWebView2Available()

    // Comprueba en RegEdit si está instalado WebView2
    // https://learn.microsoft.com/es-es/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed

    #define  HKEY_CURRENT_USER       2147483649        // 0x80000001
    #define  HKEY_LOCAL_MACHINE      2147483650        // 0x80000002

    Local oReg AS Object := nil
    Local cPv AS String := ''
    
    oReg := TReg32():New( HKEY_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', .F. )
    cPv := oReg:Get( 'pv' )

    if Empty( cPv )

        oReg := TReg32():New( HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', .f. )
        cPv := oReg:Get( 'pv' )

    endif

    if Empty( cPv )

        oReg := TReg32():New( HKEY_CURRENT_USER, 'Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', .f. )
        cPv := oReg:Get( 'pv' )

    endif
    
return ( .Not. Empty( cPv ) )

Re: TWebView2 - Detectar si está instalado en el sistema

Posted: Mon Oct 28, 2024 5:13 pm
by Antonio Linares
Muy bien!

No probé la función en Windows 7...