Aplicativos hospedados no SDK do Aplicativo Windows

O modelo de aplicativo hospedado permite criar aplicativos leves que herdam seu ponto de entrada e executável de um aplicativo host. O aplicativo hospedado é um pacote separado que contém conteúdo (scripts, ativos, configuração), mas depende do runtime do host para executar.

Como os aplicativos hospedados funcionam

Um aplicativo host declara uma HostRuntime extensão em seu manifesto, tornando seu executável disponível para outros pacotes. Um aplicativo hospedado declara uma dependência desse host e especifica qual conteúdo será executado. Quando o usuário inicia o aplicativo hospedado, Windows inicia o executável do host e passa o conteúdo do aplicativo hospedado como contexto.

Esse modelo é útil para:

  • Mecanismos de script — um host fornece o runtime (por exemplo, Python, Node.js) e aplicativos hospedados são scripts ou aplicativos individuais.
  • Mecanismos de jogo – um host fornece o mecanismo de jogo e os aplicativos hospedados são jogos individuais.
  • Estruturas de aplicativo – um host fornece um runtime de estrutura e os aplicativos hospedados são conteúdos executados nele.

Importante

Os aplicativos host e os hospedados exigem uma identidade de pacote MSIX. O aplicativo hospedado é um pacote MSIX assinado, mas seu executável vem do host.

Declarar um runtime de host

No aplicativo host Package.appxmanifest, adicione a extensão 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>

O Id valor é o que os aplicativos hospedados fazem referência para declarar sua dependência.

Declarar um aplicativo hospedado

No manifest do aplicativo hospedado, declare a dependência do ambiente de execução do host e especifique um TrustLevel e 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 de chave:

Attribute Description
HostRuntimeDependency.Name Nome da família de pacotes do aplicativo host
HostId Corresponde ao HostRuntime.Id no aplicativo host
Parameters Argumentos de linha de comando passados para o executável do host

Criar um pacote de aplicativo hospedado

Para criar um pacote de aplicativo hospedado:

  1. Criar um projeto MSIX padrão ou usar MakeAppx.exe.
  2. Inclua apenas seus arquivos de conteúdo (scripts, ativos, configuração).
  3. Não inclua um executável , ele vem do host.
  4. Declare o HostRuntimeDependency no manifesto.
  5. Assine o pacote com um certificado confiável para produção. Durante o desenvolvimento, você pode registrar o pacote não assinado (veja abaixo).

Registro de pacote não assinado (desenvolvimento)

Durante o desenvolvimento, você pode registrar um pacote de aplicativo hospedado não assinado:

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

Note

O registro de pacote não assinado é somente para desenvolvimento. Para uso em produção, assine o pacote com um certificado confiável.

Exemplo: host de script Python

Um aplicativo de runtime Python pode servir como um host:

  1. Aplicativo hospedeiro — Empacota python.exe e declara HostRuntime Id="PythonHost".
  2. Aplicativo hospedado — contém um script de Python (app.py) e declara HostId="PythonHost" com Parameters="app.py".
  3. Quando o usuário inicia o aplicativo hospedado, Windows executa o host python.exe app.py com o diretório de pacotes do aplicativo hospedado como o contexto de trabalho.