Hostowane aplikacje w Zestaw SDK do aplikacji systemu Windows

Model aplikacji hostowanej umożliwia tworzenie lekkich aplikacji, które dziedziczą plik wykonywalny i punkt wejścia z aplikacji hostującej. Aplikacja hostowana jest oddzielnym pakietem zawierającym zawartość (skrypty, zasoby, konfigurację), ale korzysta ze środowiska uruchomieniowego hosta do wykonania.

Jak działają hostowane aplikacje

Aplikacja hosta deklaruje rozszerzenie w manifeścieHostRuntime, udostępniając plik wykonywalny innym pakietom. Aplikacja hostowana deklaruje zależność od tego hosta i określa zawartość do uruchomienia. Gdy użytkownik uruchamia hostowaną aplikację, Windows uruchamia plik wykonywalny hosta i przekazuje zawartość hostowanej aplikacji jako kontekst.

Ten model jest przydatny w następujących celach:

  • Silniki skryptowe — host zapewnia środowisko uruchomieniowe (na przykład Python, Node.js), a hostowane aplikacje to poszczególne skrypty lub aplikacje.
  • Silniki gier — host udostępnia silnik gry, a hostowane aplikacje to poszczególne gry.
  • Struktury aplikacji — host udostępnia środowisko uruchomieniowe platformy, a hostowane aplikacje to zawartość, która jest na niej uruchamiana.

Ważna

Zarówno aplikacja hosta, jak i aplikacja hostowana wymagają identyfikatora pakietu MSIX. Aplikacja hostowana jest podpisanym pakietem MSIX, ale jego plik wykonywalny pochodzi z hosta.

Deklarowanie środowiska uruchomieniowego hosta

W aplikacji hosta Package.appxmanifest dodaj rozszerzenie 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>

Wartość Id jest tym, do czego odwołują się hostowane aplikacje, aby zadeklarować ich zależność.

Deklarowanie hostowanej aplikacji

W manifeście hostowanej aplikacji zadeklaruj zależność środowiska uruchomieniowego hosta i określ element TrustLevel i 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>

Atrybuty klucza:

Atrybut Description
HostRuntimeDependency.Name Nazwa rodziny pakietów aplikacji hosta
HostId Odpowiada elementowi HostRuntime.Id w aplikacji hostującej
Parameters Argumenty wiersza poleceń przekazywane do programu wykonywalnego hosta

Tworzenie pakietu hostowanej aplikacji

Aby utworzyć pakiet hostowanej aplikacji:

  1. Utwórz standardowy projekt MSIX lub użyj polecenia MakeAppx.exe.
  2. Uwzględnij tylko pliki zawartości (skrypty, zasoby, konfigurację).
  3. Nie dołączaj pliku wykonywalnego — pochodzi z hosta.
  4. Zadeklaruj element HostRuntimeDependency w manifeście.
  5. Podpisz pakiet za pomocą zaufanego certyfikatu dla środowiska produkcyjnego. Podczas tworzenia aplikacji można zarejestrować pakiet bez podpisu (patrz poniżej).

Rejestracja niepodpisanego pakietu (programowanie)

Podczas programowania można zarejestrować niepodpisany pakiet aplikacji hostowanej:

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

Note

Rejestracja niepodpisanego pakietu służy tylko do programowania. W środowisku produkcyjnym podpisz pakiet za pomocą zaufanego certyfikatu.

Przykład: host skryptów Python

Aplikacja środowiska uruchomieniowego Python może służyć jako host:

  1. Aplikacja hostująca — pakuje python.exe i deklaruje HostRuntime Id="PythonHost".
  2. Hostowana aplikacja — zawiera skrypt Python (app.py) i deklaruje element HostId="PythonHost" za pomocą polecenia Parameters="app.py".
  3. Gdy użytkownik uruchamia hostowaną aplikację, Windows uruchamia host python.exe app.py z katalogiem pakietów hostowanej aplikacji jako kontekstem roboczym.