Gehoste apps in Windows App SDK

Met het gehoste app-model kunt u lichtgewicht apps maken die hun uitvoerbare en invoerpunt overnemen van een host-app. De gehoste app is een afzonderlijk pakket met inhoud (scripts, assets, configuratie), maar is afhankelijk van de runtime van de host die moet worden uitgevoerd.

Hoe gehoste apps werken

Een host-app declareert een HostRuntime extensie in het manifest, waardoor het uitvoerbare bestand beschikbaar wordt gemaakt voor andere pakketten. Een gehoste app declareert een afhankelijkheid van die host en geeft aan welke inhoud moet worden uitgevoerd. Wanneer de gebruiker de gehoste app start, start Windows het uitvoerbare bestand van de host en geeft de inhoud van de gehoste app door als context.

Dit model is handig voor:

  • Scriptengines: een host biedt de runtime (bijvoorbeeld Python, Node.js) en gehoste apps zijn afzonderlijke scripts of toepassingen.
  • Game-engines : een host biedt de game-engine en gehoste apps zijn afzonderlijke games.
  • App-frameworks : een host biedt een frameworkruntime en gehoste apps zijn inhoud die erop wordt uitgevoerd.

Important

Voor zowel host- als gehoste apps is een MSIX-pakketidentiteit vereist. De gehoste app is een ondertekend MSIX-pakket, maar het uitvoerbare bestand is afkomstig van de host.

Een hostruntime declareren

Voeg in de host-app Package.appxmanifesteen HostRuntime extensie toe:

<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>

De Id waarde is waarnaar gehoste apps verwijzen om hun afhankelijkheid te declareren.

Een gehoste app declareren

Declareer in het manifest van de gehoste app de afhankelijkheid van de hostruntime en specificeer een TrustLevel en 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>

Belangrijkste kenmerken:

Attribute Description
HostRuntimeDependency.Name Pakketfamilienaam van de host-app
HostId Komt overeen met de HostRuntime.Id in de host-app
Parameters Opdrachtregelargumenten meegegeven aan het hostprogramma

Een gehost app-pakket maken

Een gehost app-pakket maken:

  1. Maak een standaard MSIX-project of gebruik MakeAppx.exe.
  2. Alleen uw inhoudsbestanden (scripts, assets, configuratie) opnemen.
  3. Neem geen uitvoerbaar bestand op. Het is afkomstig van de host.
  4. Declareer het HostRuntimeDependency in het manifest.
  5. Onderteken het pakket met een vertrouwd certificaat voor productie. Tijdens de ontwikkeling kunt u het pakket niet-ondertekend registreren (zie hieronder).

Registratie van een niet-ondertekend pakket (ontwikkeling)

Tijdens de ontwikkeling kunt u een niet-ondertekend gehost app-pakket registreren:

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

Note

Registratie van een niet-ondertekend pakket is uitsluitend bedoeld voor ontwikkeling. Voor productie ondertekent u het pakket met een vertrouwd certificaat.

Voorbeeld: Python scripthost

Een Python runtime-app kan fungeren als host:

  1. Host app — Bevat python.exe en declareert HostRuntime Id="PythonHost".
  2. Gehoste app: bevat een Python script (app.py) en declareert HostId="PythonHost" met Parameters="app.py".
  3. Wanneer de gebruiker de gehoste app start, voert Windows python.exe app.py van de host uit, waarbij de pakketmap van de gehoste app als werkmap wordt gebruikt.