App ospitate in SDK per app di Windows

Il modello di app ospitata consente di creare app leggere che ereditano il file eseguibile e il punto di ingresso da un'app host. L'app ospitata è un pacchetto separato che contiene contenuto (script, asset, configurazione), ma si basa sul runtime dell'host per l'esecuzione.

Funzionamento delle app ospitate

Un'app host dichiara un'estensioneHostRuntime nel manifesto, rendendo il file eseguibile disponibile per altri pacchetti. Un'app ospitata dichiara una dipendenza dall'host e specifica il contenuto da eseguire. Quando l'utente avvia l'app ospitata, Windows avvia l'eseguibile dell'host e passa il contenuto dell'app ospitata come contesto.

Questo modello è utile per:

  • Motori di script: un host fornisce il runtime (ad esempio, Python, Node.js) e le app ospitate sono singoli script o applicazioni.
  • Motori di gioco : un host fornisce il motore di gioco e le app ospitate sono singoli giochi.
  • Framework per app — un host fornisce un ambiente di runtime del framework e le app ospitate sono contenuti che vengono eseguiti al suo interno.

Importante

Sia le app host sia le app ospitate richiedono l'identità del pacchetto MSIX. L'app ospitata è un pacchetto MSIX firmato, ma il relativo eseguibile proviene dall'host.

Dichiarare un runtime dell'host

Nel Package.appxmanifest dell'app host, aggiungi un'estensione 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>

Il valore Id è ciò a cui le app ospitate fanno riferimento per dichiarare la propria dipendenza.

Dichiarare un'app ospitata

Nel manifesto dell'app ospitata, dichiarare la dipendenza del runtime host e specificare un TrustLevel e un 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>

Attributi chiave:

Attribute Description
HostRuntimeDependency.Name Nome della famiglia di pacchetti dell'app host
HostId Corrisponde a HostRuntime.Id nell'app host
Parameters Argomenti della riga di comando passati all'eseguibile host

Crea un pacchetto dell'app ospitata

Per creare un pacchetto di app ospitata:

  1. Creare un progetto MSIX standard o usare MakeAppx.exe.
  2. Includere solo i file di contenuto (script, asset, configurazione).
  3. Non includere un eseguibile: viene fornito dall'host.
  4. Dichiara HostRuntimeDependency nel manifesto.
  5. Firma il pacchetto con un certificato attendibile per la produzione. Durante lo sviluppo, è possibile registrare il pacchetto non firmato (vedi sotto).

Registrazione del pacchetto non firmato (sviluppo)

Durante lo sviluppo, è possibile registrare un pacchetto di app ospitata non firmato:

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

Note

La registrazione di un pacchetto non firmato è solo per lo sviluppo. Per la produzione, firmare il pacchetto con un certificato attendibile.

Esempio: host di script Python

Un'app di runtime Python può fungere da host:

  1. Applicazione host — crea pacchetti python.exe e dichiara HostRuntime Id="PythonHost".
  2. App ospitata: contiene uno script Python (app.py) e dichiara HostId="PythonHost" con Parameters="app.py".
  3. Quando l'utente avvia l'app ospitata, Windows esegue il python.exe app.py dell'host usando come directory di lavoro la directory del pacchetto dell'app ospitata.