Windows Uygulama SDK'sı'de barındırılan uygulamalar

Barındırılan uygulama modeli, yürütülebilir ve giriş noktalarını bir konak uygulamasından devralan basit uygulamalar oluşturmanıza olanak tanır. Barındırılan uygulama, içerik (betikler, varlıklar, yapılandırma) içeren ayrı bir pakettir; ancak çalıştırılmak için ana uygulamanın çalışma zamanına dayanır.

Barındırılan uygulamalar nasıl çalışır?

Bir ana uygulama, manifestinde bir HostRuntime uzantısı tanımlayarak yürütülebilir dosyasını diğer paketlerin kullanımına sunar. Barındırılan uygulama, bu ana bilgisayara bağımlı olduğunu bildirir ve hangi içeriğin çalıştırılacağını belirtir. Kullanıcı barındırılan uygulamayı başlattığında Windows, ana uygulamanın yürütülebilir dosyasını çalıştırır ve barındırılan uygulamanın içeriğini bağlam olarak iletir.

Bu model şunlar için kullanışlıdır:

  • Betik altyapıları — Konak çalışma zamanını (örneğin, Python, Node.js) sağlar ve barındırılan uygulamalar tek tek betikler veya uygulamalardır.
  • Oyun motorları — Ana bilgisayar oyun motorunu sağlar ve barındırılan uygulamalar ayrı oyunlardır.
  • Uygulama çerçeveleri — Bir ana bilgisayar, bir çerçevenin çalışma zamanı ortamını sağlar ve barındırılan uygulamalar, bunun üzerinde çalışan içeriktir.

Important

Hem ana hem de barındırılan uygulamalar MSIX paket kimliği gerektirir. Barındırılan uygulama imzalı bir MSIX paketidir, ancak yürütülebilir dosyası ana bilgisayardan gelir.

Ana bilgisayar çalışma zamanını bildirin

Ana uygulamanın Package.appxmanifest içine bir HostRuntime uzantısı ekleyin:

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

Bu Id değer, barındırılan uygulamaların bağımlılıklarını bildirmek için başvuracakları değerdir.

Barındırılan bir uygulama tanımlama

Barındırılan uygulamanın manifest dosyasında, konak çalışma zamanı bağımlılığını tanımlayın ve bir TrustLevel ile RuntimeBehavior belirtin:

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

Anahtar öznitelikleri:

Attribute Description
HostRuntimeDependency.Name Ana uygulamanın paket aile adı
HostId Ana uygulamadaki HostRuntime.Id ile eşleşir
Parameters Ana bilgisayar yürütülebilir dosyasına iletilen komut satırı bağımsız değişkenleri

Barındırılan uygulama paketi oluşturma

Barındırılan uygulama paketi oluşturmak için:

  1. Standart bir MSIX projesi oluşturun veya kullanın MakeAppx.exe.
  2. Yalnızca içerik dosyalarınızı (betikler, varlıklar, yapılandırma) ekleyin.
  3. Yürütülebilir dosya eklemeyin; ana bilgisayardan gelir.
  4. HostRuntimeDependency öğesini manifest dosyasında tanımlayın.
  5. Paketi üretim için güvenilir bir sertifikayla imzalayın. Geliştirme sırasında paketi imzasız olarak kaydedebilirsiniz (aşağıya bakın).

İmzasız paket kaydı (geliştirme)

Geliştirme sırasında, imzalanmamış barındırılan bir uygulama paketini kaydedebilirsiniz:

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

Note

İmzasız paket kaydı yalnızca geliştirme içindir. Üretim için paketi güvenilir bir sertifikayla imzalayın.

Örnek: Python betik konağı

Python çalışma zamanı uygulaması konak görevi görebilir:

  1. Ana uygulamapython.exe paketler ve HostRuntime Id="PythonHost" bildirir.
  2. Barındırılan uygulama — bir Python betiği (app.py) içerir ve Parameters="app.py" ile HostId="PythonHost" bildirir.
  3. Kullanıcı barındırılan uygulamayı başlattığında Windows, çalışma bağlamı olarak barındırılan uygulamanın paket dizinini kullanarak konağın python.exe app.py bileşenini çalıştırır.