Arquitectura de implementación e información general sobre aplicaciones dependientes del marco

En este artículo se explica una arquitectura de alto nivel de la implementación del SDK de aplicaciones de Windows. Los conceptos siguientes se aplican principalmente a aplicaciones dependientes del marco de SDK de Aplicaciones para Windows. Una aplicación dependiente del marco depende del entorno de ejecución de SDK de Aplicaciones para Windows que esté presente en la máquina de destino.

Hay dos opciones principales para distribuir una aplicación dependiente del marco:

Método de implementación de aplicaciones Requisitos
Empaquetado - Debe declarar la dependencia del paquete Framework en el manifiesto del paquete.
- La API de implementación es necesaria para las aplicaciones distribuidas a través de Microsoft Store y se recomienda para las aplicaciones distribuidas fuera de la Tienda para asegurarse de que se instalan las dependencias en tiempo de ejecución.
Empaquetado con ubicación externa o desempaquetado - Debe distribuir el tiempo de ejecución mediante el instalador o instalando los paquetes MSIX necesarios directamente.
- Requisitos de tiempo de ejecución adicionales: debe inicializar el acceso en el entorno de ejecución de SDK de Aplicaciones para Windows a través de la API de Bootstrap.

Para obtener más información sobre estos requisitos, consulte los artículos siguientes:

Términos clave

En las secciones siguientes se definen los términos clave para SDK de Aplicaciones para Windows implementación y detalles adicionales sobre algunos de estos paquetes.

Término Definición
Tiempo de ejecución de SDK de Aplicaciones para Windows Los paquetes MSIX requeridos por una aplicación para usar el SDK de Aplicaciones para Windows. Estos paquetes incluyen: Framework, Main, Singleton y DDLM. Según las características usadas y el método de implementación de la aplicación, necesitará un determinado conjunto de estos paquetes en la máquina de destino.
Framework paquete Contiene archivos binarios usados en tiempo de ejecución por aplicaciones (la mayoría de las características de SDK de Aplicaciones para Windows). El marco incluye un componente de programa previo que permite a las aplicaciones instalar automáticamente la versión más reciente del SDK de Aplicaciones para Windows, que se actualizará con una cadencia de versión normal.
Paquete principal Paquete que contiene tareas en segundo plano para realizar un seguimiento de las dependencias dinámicas y permite las actualizaciones automáticas al paquete framework desde Microsoft Store.
paquete singleton Contiene tareas en segundo plano, servicios, extensiones de aplicación y otros componentes no incluidos en el paquete framework, como notificaciones push. Por lo general, se trata de un único proceso de larga duración que se media entre aplicaciones.
paquete del Administrador de ciclo de vida de dependencias dinámicas (DDLM) Impide que el sistema operativo realice actualizaciones de mantenimiento en los paquetes MSIX mientras se usa una aplicación empaquetada con ubicación externa o sin empaquetar.
Inicializador Binario local de la aplicación utilizado por aplicaciones empaquetadas con localización externa y aplicaciones no empaquetadas para identificar y cargar la versión de SDK de Aplicaciones para Windows que mejor se ajuste según las necesidades de la aplicación.
Aprovisionamiento Proceso de preparación de paquetes a nivel de todo el sistema para que cualquier usuario del equipo pueda registrarlos y utilizarlos sin necesidad de repetir este proceso en cada equipo. El aprovisionamiento se puede realizar como parte de la imagen del sistema operativo o durante la implementación de aplicaciones empresariales.
Instalador Hace referencia al instalador de .exe que implementa los paquetes Framework, Main, Singleton y DDLM.
MSIX Tecnología moderna del instalador que permite a los usuarios instalar de forma segura una aplicación por usuario, directamente desde Microsoft Store o desde un sitio web. En equipos empresariales o compartidos, las aplicaciones se pueden instalar para todos los usuarios a través de PowerShell y MDM.

Paquete de marco

Al compilar una aplicación que usa el SDK de Aplicaciones para Windows, la aplicación hace referencia a un conjunto de componentes en tiempo de ejecución de SDK de Aplicaciones para Windows que se distribuyen a los usuarios finales a través de un paquete framework. El paquete de framework permite que las aplicaciones accedan a los componentes de SDK de Aplicaciones para Windows a través de un único origen compartido en el dispositivo del usuario, en lugar de agruparlos en el paquete de la aplicación. El paquete de marco también incluye sus propios recursos, como dll y definiciones de API (COM y registros de Windows Runtime). Estos recursos se ejecutan en el contexto de la aplicación, por lo que heredan las funcionalidades y privilegios de la aplicación y no declaran ninguna funcionalidad o privilegio propio. Para obtener más información sobre las dependencias del paquete de marco de trabajo, consulte Paquetes de marcos MSIX y dependencias dinámicas.

El paquete de marco de SDK de Aplicaciones para Windows es un paquete MSIX que se implementa para los usuarios finales a través de Microsoft Store. Se puede actualizar fácilmente y rápidamente con versiones de mantenimiento, lo que puede incluir correcciones de seguridad y confiabilidad. Todas las aplicaciones dependientes del marco que usan el SDK de Aplicaciones para Windows tienen una dependencia en una instancia compartida del paquete de marco, como se muestra en el diagrama siguiente.

Diagrama de cómo las aplicaciones acceden al paquete del framework de SDK de Aplicaciones para Windows

Cuando se da soporte a una nueva versión del paquete de framework de SDK de Aplicaciones para Windows, todas las aplicaciones que dependen del framework se actualizan a la nueva versión sin necesidad de redistribuir una copia. Windows se actualiza a la versión más reciente de los frameworks a medida que se publican, y las aplicaciones harán referencia automáticamente a la última versión del paquete de frameworks al reiniciarse. Las versiones anteriores del paquete de marco no se quitarán del sistema hasta que ya no se ejecuten ni se usen activamente en las aplicaciones del sistema.

Diagrama de cómo las aplicaciones obtienen actualizaciones del paquete de marco de SDK de Aplicaciones para Windows

Dado que la compatibilidad de aplicaciones es importante para Microsoft y para las aplicaciones que dependen del SDK de Aplicaciones para Windows, el paquete de marco de SDK de Aplicaciones para Windows sigue Semantic Versioning 2.0.0 reglas. Esto significa que después de publicar la versión 1.0 de SDK de Aplicaciones para Windows, el paquete de la estructura de SDK de Aplicaciones para Windows garantizará la compatibilidad entre los cambios de versiones menores y de revisiones, y los cambios disruptivos solo ocurrirán entre las actualizaciones de versiones principales.

Paquete Singleton

El paquete singleton garantiza que un único proceso de ejecución prolongada pueda controlar los servicios que se usan en varias aplicaciones, que se pueden ejecutar en distintas versiones del SDK de Aplicaciones para Windows.

El singleton de SDK de Aplicaciones para Windows es necesario para habilitar las notificaciones push en aplicaciones sin empaquetar y aplicaciones Win32 empaquetadas que usan versiones de Windows anteriores a 20H1, que no pueden ser compatibles con las clases UWP existentes PushNotificationTrigger y ToastNotificationActionTrigger. Las características de SDK de Aplicaciones para Windows futuras que no se pueden admitir en el paquete framework se agregarán al paquete Singleton.

Requisitos adicionales para aplicaciones sin empaquetar

Archivos de arranque

La biblioteca de arranque debe incluirse con tu aplicación empaquetada, ubicada externamente, o con la aplicación sin empaquetar. Proporciona la API de arranque (consulte Use el entorno de ejecución de SDK de Aplicaciones para Windows para las aplicaciones empaquetadas con ubicación externa o sin empaquetar), lo que permite que las aplicaciones sin empaquetar realicen estas tareas importantes:

  • Inicialice el Administrador de Duración de Dependencia Dinámica (DDLM) para el paquete del framework de SDK de Aplicaciones para Windows.
  • Busque y cargue el paquete de marco de SDK de Aplicaciones para Windows en el gráfico de paquetes de la aplicación.

Para realizar estas tareas, el paquete nuget utiliza auto-inicializadores para configurar automáticamente el bootstrapper. Solo tienes que establecer <WindowsPackageType>None</WindowsPackageType> en tu archivo de proyecto. En escenarios avanzados, si quieres controlar la inicialización, puedes llamar a la API de arranque directamente en el código de inicio de la aplicación (consulta Tutorial: Usar la API de arranque en una aplicación empaquetada con ubicación externa o desempaquetada que usa el SDK de Aplicaciones para Windows) para que pueda inicializar correctamente el sistema para la aplicación sin empaquetar. La aplicación debe usar la API de inicialización antes de poder utilizar características del SDK de Aplicaciones para Windows como WinUI 3, el ciclo de vida de la aplicación, MRT Core y DWriteCore.

La biblioteca bootstrapper en la versión 1.0 del SDK de Aplicaciones para Windows incluye:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ y C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (contenedor de C#)

Gestor de vida útil de dependencia dinámica (DDLM)

El propósito de DDLM es evitar el mantenimiento del paquete de marco de SDK de Aplicaciones para Windows mientras está en uso por una aplicación desempaquetada. Contiene un servidor que el inicializador debe inicializar al principio del inicio de una aplicación para proporcionar esa funcionalidad.

Hay un DDLM para cada versión y arquitectura del paquete de marco de SDK de Aplicaciones para Windows. Esto significa que en un ordenador con arquitectura x64, puede tener tanto una versión x86 como una versión x64 del DDLM para admitir aplicaciones de ambas arquitecturas.

Requisitos adicionales

Canalización de implementación de MSIX

Al agregar un paquete MSIX a una máquina, el motor de implementación procesa la solicitud a través de tres fases:

Stage Ámbito ¿Qué ocurre?
Índice Por máquina Analiza el manifiesto del paquete y registra los metadatos y la ruta de instalación prevista.
Fase Por equipo Crea el directorio del paquete, extrae la carga y aplica ACL.
Registrarse Por usuario Asocia el paquete preconfigurado a un usuario específico: crea entradas de menú Inicio, asociaciones de tipo de archivo y datos en tiempo de ejecución

El ensayo se realiza una vez por máquina; el registro es por usuario. Esta separación permite que un paquete esté disponible (o eliminado) para un usuario sin afectar a otros.

Note

El término instalación es informal: no es un concepto formal en el motor de implementación MSIX. Las solicitudes de implementación utilizan la API PackageManager para enviar operaciones (Añadir, Preparar, Registrar, Eliminar, etc.) a la cola de implementación. Consulte No hay instalación: es "Stage" y "Register" en el blog Inside MSIX para obtener una explicación completa.