DesktopHTMLViewer incorpora soporte para WebView2 en Windows

A continuación encontrarás traducido al castellano el artículo escrito por William Yu y publicado originalmente en el Blog oficial de Xojo.

A partir de Xojo 2026r2 los desarrolladores de Windows tienen ahora una nueva opción para DesktopHTMLViewer: el soporte de Microsoft Edge WebView2.

Este es un cambio importante para aquellos que precisen un renderizado web moderno en Windows sin que impacte en el tamaño del desplegable requerido por el framework Chromium Embedded (CEF).

Cuál es la importancia de WebView2

Hasta ahora, el renderizado de HTML en Windows para un DesktopHTMLViewer se basaba principalmente en CEF. Si bien CEF proporciona una excelente compatibilidad y un motor de renderizado consistente basado en Chromium, también tiene un coste considerable en el despliegue. La inclusión de los archivos de tiempo de ejecución asociados a CEF pueden añadir más de 200 MB al tamaño de la aplicación distribuida.

El uso de CEF también significa que las aplicaciones están sujetas a las versiones de Chromium y CEF incluidas junto con la aplicación. Mantenerse actualizado requiere volver a compilar y volver a distribuir dichas apps a medida que surgen nuevas versiones de CEF como respuesta a la evolución de Chromium y sus actualizaciones de seguridad.

WebView2 cambia esta ecuación de forma considerable.

Dado que WebView2 utiliza el motor de renderizado de Microsoft Edge que ya está presente en muchos de los sistemas Windows modernos, las aplicaciones evitan así el tener que lidiar con el runtime Chromium de gran tamaño. Los cambios y actualizaciones de seguridad realizados sobre WebView2 se realizan desde el propio sistema operativo mediante las actualizaciones de Windows, en vez de requerir que sean las aplicaciones quienes deban realizar sus propias actualizaciones y mantenimiento del motor de navegación.

Requerimientos de tiempo de ejecución de WebView2

Una consideración importante es que WebView2 puede requerir la instalación del runtime de Microsoft Edge WebView2 en el sistema sobre el que se ejecute la app.

Windows 11

La mayoría de los sistemas con Windows 11 ya incluyen WebView2 como parte del sistema operativo, de modo que no es preciso realizar instalaciones adicionales.

Windows 10

Muchos sistemas basados en Windows 10 tienen el runtime instalado dado que Microsoft lo distribuye mediante las actualizaciones de Edge y Microsoft 365. Sin embargo, los sistemas gestionados o más antiguos pueden requerir una instalación aparte del runtime.

Las aplicaciones que dependen de WebView2 deberían verificar la disponibilidad del runtime durante la instalación y, si no estuviese presente, bien indicar al usuario dicha instalación o bien proporcionar un enlace para descargar e instalar el runtime requerido.

👉 También puedes consultar la propiedad DesktopHTMLViewer.IsAvailable durante la ejecución para determinar si WebView2 está disponible.

  • Microsoft proporciona el runtime en:
    https://developer.microsoft.com/en-us/microsoft-edge/webview2/

Los despliegues WinUI utilizan WebView2 por omisión

En el caso de los despliegues de escritorio WinUI el uso por omisión (y único) es el motor de renderizado WebView2 para DesktopHTMLViewer. Adicionalmente, los nuevos proyectos creados con Xojo 2026r2 o posterior también utilizan por omisión WebView2 cuando se añada un DesktopHTMLViewer al diseño.

Uso de WebView2 en proyectos antiguos o despliegues distintos a WinUI

Para los despliegues de Windows tradicionales que no estén utilizando WinUI puedes activar el soporte de WebView2 indicando que el HTMLViewer utiliza la opción WebView2 en los ajustes avanzados de compilación para Windows desde el IDE:

Cuando dicha opción está activa, DesktopHTMLViewer utilizará WebView2 en vez de CEF para el renderizado del HTML.

En función de las necesidades de tu aplicación y los usuarios a los que se dirige, esto te proporciona la flexibilidad elegir entre:

  • Un despliegue de menor tamaño con WebView2.
  • Despliegue totalmente auto-contenido con CEF.

Sin embargo, en el futuro abandonaremos el soporte de CEF por completo, y es probable que no soportemos o actualicemos el HTMLViewer basado en CEF en próximas versiones de Xojo.

Diferencias sobre CEF

Si bien tanto CEF como WebView2 son tecnologías basadas en Chromium existen algunas diferencias en cuanto a su comportamiento que has de tener presente:

Puedes observar algunas diferencias sutiles en el modo en el que WebView2 devuelve los resultados cuando se ejecuta JSON.Stringify mediante ExecuteJavaScriptSync. Por ejemplo, el resultado devuelto puede encontrarse entrecomillado.

Se mantiene el soporte de executeInXojoSync, pero en este caso se utilizan Promises de JavaScript para simular un comportamiento síncrono, de modo que puede que el código existente deba de actualizarse para utilizar async/await. Por ejemplo:

const result = await executeInXojoSync("addNumbers", 2, 3);

Se crea una carpeta de cache específica de WebView2 junto con el ejecutable. Si no se puede escribir sobre dicho escritorio, entonces la carpeta de cache se creará en el directorio AppData local del usuario.

Conclusiones

La incorporación del soporte WebView2 en DesktopHTMLViewer es una mejora sustancial para los despliegues desktop de Xojo dirigidos a Windows, reduciendo el tamaño de la aplicación desplegada en cientos de megabytes al tiempo que proporciona un renderizado moderno basado en Chromium.

Es probable que quienes requieran una consistencia en el renderizado para despliegues autocontenidos o sin conexión a Internet aun prefieran utilizar CEF, pero WebView2 ofrece una alternativa excelente y moderna que se alinea con la dirección tomada por la propia plataforma Windows.

Por ahora puedes elegir cualquiera de los dos motores en función de tus necesidades, pero en adelante, creemos que WebView2 es la ruta preferida en Windows. ¡Feliz navegación!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *