Aplikasi yang dihosting di SDK Aplikasi Windows

Model aplikasi yang dihosting memungkinkan Anda membuat aplikasi ringan yang mewarisi titik eksekusi dan entri mereka dari aplikasi host. Aplikasi yang dihosting adalah paket terpisah yang berisi konten (skrip, aset, konfigurasi) tetapi bergantung pada runtime host untuk dijalankan.

Cara kerja aplikasi yang dihosting

Aplikasi host mendeklarasikan HostRuntime ekstensi dalam manifesnya, membuat executable-nya tersedia untuk paket lain. Aplikasi yang dihosting mendeklarasikan dependensi pada host tersebut dan menentukan konten mana yang akan dijalankan. Saat pengguna menjalankan aplikasi yang dihosting, Windows memulai file eksekusi host dan meneruskan konten aplikasi yang dihosting sebagai konteks.

Model ini berguna untuk:

  • Mesin skrip — Host menyediakan runtime (misalnya, Python, Node.js), dan aplikasi yang dihosting adalah skrip atau aplikasi individual.
  • Mesin game — Host menyediakan mesin game, dan aplikasi yang dihosting adalah game individual.
  • Kerangka kerja aplikasi — Host menyediakan runtime kerangka kerja, dan aplikasi yang dihosting adalah konten yang berjalan di dalamnya.

Important

Aplikasi host dan yang dihosting memerlukan identitas paket MSIX. Aplikasi yang dihosting adalah paket MSIX yang ditandatangani, tetapi file eksekusinya berasal dari aplikasi host.

Deklarasikan runtime host

Di aplikasi host Package.appxmanifest, tambahkan ekstensi 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>

Nilai Id adalah nilai yang dirujuk oleh aplikasi yang di-host untuk menyatakan dependensinya.

Mendeklarasikan aplikasi yang dihosting

Dalam manifes aplikasi yang dihosting, nyatakan dependensi runtime host dan tentukan TrustLevel dan 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>

Atribut kunci:

Attribute Deskripsi
HostRuntimeDependency.Name Nama keluarga paket dari aplikasi host
HostId Cocok dengan HostRuntime.Id di aplikasi host
Parameters Argumen baris perintah diteruskan ke host yang dapat dieksekusi

Membuat paket aplikasi yang dihosting

Untuk membuat paket aplikasi yang dihosting:

  1. Buat proyek MSIX standar atau gunakan MakeAppx.exe.
  2. Sertakan hanya file konten Anda (skrip, aset, konfigurasi).
  3. Jangan sertakan file eksekusi — file tersebut disediakan oleh host.
  4. Deklarasikan HostRuntimeDependency dalam file manifes.
  5. Tanda tangani paket dengan sertifikat tepercaya untuk produksi. Selama pengembangan, Anda dapat mendaftarkan paket yang tidak ditandatangani (lihat di bawah).

Pendaftaran paket tanpa tanda tangan (pengembangan)

Selama pengembangan, Anda dapat mendaftarkan paket aplikasi yang dihosting yang tidak ditandatangani:

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

Note

Pendaftaran paket yang tidak ditandatangani hanya untuk pengembangan. Untuk produksi, tanda tangani paket dengan sertifikat tepercaya.

Contoh: host skrip Python

Aplikasi runtime Python dapat berfungsi sebagai host:

  1. aplikasi host — Mengemas python.exe dan mendeklarasikan HostRuntime Id="PythonHost".
  2. Aplikasi yang dihosting — Berisi skrip Python (app.py) dan dideklarasikan HostId="PythonHost" dengan Parameters="app.py".
  3. Saat pengguna meluncurkan aplikasi yang dihosting, Windows menjalankan host python.exe app.py dengan direktori paket aplikasi yang dihosting sebagai konteks kerja.