Aplicaciones hospedadas en SDK de Aplicaciones para Windows

El modelo de aplicación hospedada permite crear aplicaciones ligeras que hereden su archivo ejecutable y el punto de entrada de una aplicación host. La aplicación hospedada es un paquete independiente que contiene contenido (scripts, recursos, configuración), pero se basa en el tiempo de ejecución del host para ejecutarse.

Funcionamiento de las aplicaciones hospedadas

Una aplicación host declara una HostRuntime extensión en su manifiesto, lo que hace que su archivo ejecutable esté disponible para otros paquetes. Una aplicación hospedada declara una dependencia en ese host y especifica qué contenido se va a ejecutar. Cuando el usuario inicia la aplicación hospedada, Windows inicia el archivo ejecutable del host y pasa el contenido de la aplicación hospedada como contexto.

Este modelo es útil para:

  • Motores de script: un host proporciona el entorno de ejecución (por ejemplo, Python, Node.js) y las aplicaciones hospedadas son scripts o aplicaciones individuales.
  • Motores de juegos: un host proporciona el motor de juegos y las aplicaciones hospedadas son juegos individuales.
  • Marcos de aplicaciones: un host proporciona un entorno de ejecución de marco y las aplicaciones hospedadas son contenido que se ejecuta en él.

Importante

Tanto el host como las aplicaciones hospedadas requieren la identidad del paquete MSIX. La aplicación hospedada es un paquete MSIX firmado, pero su archivo ejecutable procede del host.

Declara un entorno de ejecución del host

En la aplicación host Package.appxmanifest, agregue una extensión HostRuntime:

<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10" ...>
  <Applications>
    <Application Id="App" Executable="MyHost.exe" EntryPoint="...">
      <Extensions>
        <uap10:Extension Category="windows.hostRuntime">
          <uap10:HostRuntime Id="MyHostRuntime" />
        </uap10:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

El valor Id es al que hacen referencia las aplicaciones hospedadas para declarar su dependencia.

Declaración de una aplicación hospedada

En el manifiesto de la aplicación hospedada, declare la dependencia del entorno de ejecución del host y especifique un TrustLevel y RuntimeBehavior:

<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10" ...>
  <Dependencies>
    <uap10:HostRuntimeDependency Name="HostAppPackageFamilyName"
                                  Publisher="CN=HostPublisher"
                                  MinVersion="1.0.0.0" />
  </Dependencies>
  <Applications>
    <Application Id="App"
                 uap10:HostId="MyHostRuntime"
                 uap10:Parameters="&quot;script.py&quot;">
    </Application>
  </Applications>
</Package>

Atributos clave:

Attribute Description
HostRuntimeDependency.Name Nombre de familia del paquete de la aplicación anfitriona
HostId Coincide con HostRuntime.Id en la aplicación host
Parameters Argumentos de línea de comandos pasados al ejecutable host

Creación de un paquete de aplicación hospedada

Para crear un paquete de aplicación hospedada:

  1. Cree un proyecto MSIX estándar o use MakeAppx.exe.
  2. Incluya solo los archivos de contenido (scripts, recursos, configuración).
  3. No incluya un archivo ejecutable: procede del host.
  4. Declare HostRuntimeDependency en el manifiesto.
  5. Firme el paquete con un certificado de confianza para su uso en producción. Durante el desarrollo, puede registrar el paquete sin firmar (consulte a continuación).

Registro de paquetes sin firmar (desarrollo)

Durante el desarrollo, puedes registrar un paquete de aplicación alojada sin firmar:

Add-AppxPackage -Path "HostedApp.msix" -AllowUnsigned

Note

El registro de paquetes sin firmar solo debe usarse para desarrollo. Para producción, firme el paquete con un certificado de confianza.

Ejemplo: host de script de Python

Una aplicación en tiempo de ejecución de Python puede servir como host:

  1. Aplicación anfitriona — Empaqueta python.exe y declara HostRuntime Id="PythonHost".
  2. Aplicación hospedada: contiene un script de Python (app.py) y declara HostId="PythonHost" con Parameters="app.py".
  3. Cuando el usuario inicia la aplicación hospedada, Windows ejecuta el host python.exe app.py con el directorio del paquete de la aplicación hospedada como contexto de trabajo.