Gehostete Apps in Windows App SDK

Mit dem gehosteten App-Modell können Sie einfache Apps erstellen, die ihre ausführbare Datei und ihren Einstiegspunkt von einer Host-App erben. Die gehostete App ist ein separates Paket, das Inhalte (Skripte, Ressourcen, Konfiguration) enthält, für die Ausführung jedoch auf die Laufzeitumgebung des Hosts angewiesen ist.

Funktionsweise gehosteter Apps

Eine Host-App deklariert eine HostRuntime Erweiterung im Manifest und stellt die ausführbare Datei für andere Pakete zur Verfügung. Eine gehostete App deklariert eine Abhängigkeit von diesem Host und gibt an, welche Inhalte ausgeführt werden sollen. Wenn der Benutzer die gehostete App startet, startet Windows die ausführbare Datei des Hosts und übergibt den Inhalt der gehosteten App als Kontext.

Dieses Modell ist nützlich für:

  • Skriptmodule – Ein Host stellt die Laufzeit bereit (z. B. Python, Node.js), und gehostete Apps sind einzelne Skripts oder Anwendungen.
  • Spielengines – Ein Host stellt die Spielengine bereit, und gehostete Apps sind einzelne Spiele.
  • App-Frameworks – Ein Host stellt eine Framework-Laufzeit bereit, und gehostete Apps sind Inhalte, die darauf ausgeführt werden.

Important

Sowohl Host- als auch gehostete Apps erfordern MSIX-Paketidentität. Die gehostete App ist ein signiertes MSIX-Paket, die ausführbare Datei stammt jedoch vom Host.

Deklarieren einer Hostlaufzeit

Fügen Sie in der Host-App Package.appxmanifesteine HostRuntime Erweiterung hinzu:

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

Der Id Wert ist, auf den gehostete Apps verweisen, um ihre Abhängigkeit zu deklarieren.

Deklarieren einer gehosteten App

Deklarieren Sie im Manifest der gehosteten App die Abhängigkeit von der Hostlaufzeit und geben Sie ein TrustLevel und RuntimeBehavior an:

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

Schlüsselattribute:

Attribute Description
HostRuntimeDependency.Name Paketfamilienname der Host-App
HostId Entspricht dem HostRuntime.Id in der Host-App
Parameters An die Hostanwendung übergebene Befehlszeilenargumente

Erstellen eines gehosteten App-Pakets

So erstellen Sie ein gehostetes App-Paket:

  1. Erstellen Sie ein Standard-MSIX-Projekt, oder verwenden Sie MakeAppx.exe.
  2. Schließen Sie nur Ihre Inhaltsdateien (Skripts, Ressourcen, Konfiguration) ein.
  3. Fügen Sie keine ausführbare Datei hinzu – sie stammt vom Host.
  4. Deklarieren Sie HostRuntimeDependency im Manifest.
  5. Signieren Sie das Paket mit einem vertrauenswürdigen Zertifikat für die Produktion. Während der Entwicklung können Sie das Paket nicht signiert registrieren (siehe unten).

Nicht signierte Paketregistrierung (Entwicklung)

Während der Entwicklung können Sie ein nicht signiertes gehostetes App-Paket registrieren:

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

Note

Die Registrierung nicht signierter Pakete ist nur für die Entwicklung vorgesehen. Für die Produktion signieren Sie das Paket mit einem vertrauenswürdigen Zertifikat.

Beispiel: Host für Python-Skripts

Eine Python Laufzeit-App kann als Host dienen:

  1. Host-App – packt python.exe und deklariert HostRuntime Id="PythonHost".
  2. Gehostete App – Enthält ein Python Skript (app.py) und deklariert HostId="PythonHost" mit Parameters="app.py".
  3. Wenn der Benutzer die gehostete App startet, führt Windows die python.exe app.py des Hosts aus, wobei das Paketverzeichnis der gehosteten App als Arbeitsverzeichnis verwendet wird.