Windows アプリ SDKでホストされているアプリ

ホストされるアプリ モデルを使用すると、ホスト アプリから実行可能ファイルとエントリ ポイントを継承する軽量アプリを作成できます。 ホストされるアプリは、コンテンツ (スクリプト、アセット、構成) を含む別のパッケージですが、ホストのランタイムに依存して実行されます。

ホストされているアプリのしくみ

ホスト アプリはマニフェストでHostRuntime拡張機能を宣言し、その実行可能ファイルを他のパッケージで使用できるようにします。 ホストされているアプリは、そのホストへの依存関係を宣言し、実行するコンテンツを指定します。 ユーザーがホストされたアプリを起動すると、Windowsホストの実行可能ファイルが開始され、ホストされているアプリのコンテンツがコンテキストとして渡されます。

このモデルは、次の場合に役立ちます。

  • スクリプト エンジン — ホストはランタイム (Python、Node.jsなど) を提供し、ホストされるアプリは個々のスクリプトまたはアプリケーションです。
  • ゲーム エンジン — ホストはゲーム エンジンを提供し、ホストされるアプリは個々のゲームです。
  • アプリ フレームワーク — ホストはフレームワーク ランタイムを提供し、ホストされるアプリはそれに対して実行されるコンテンツです。

Important

ホストアプリとホストアプリの両方に MSIX パッケージ ID が必要です。 ホストされているアプリは署名済みの MSIX パッケージですが、その実行可能ファイルはホストから取得されます。

ホスト ランタイムを宣言する

ホスト アプリの Package.appxmanifestで、 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>

Id値は、ホストされているアプリが依存関係を宣言するために参照するものです。

ホストされているアプリを宣言する

ホストされているアプリのマニフェストで、ホスト ランタイムの依存関係を宣言し、 TrustLevelRuntimeBehaviorを指定します。

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

主な属性:

特性 Description
HostRuntimeDependency.Name ホスト アプリのパッケージ ファミリ名
HostId ホスト アプリ内の HostRuntime.Id と一致します
Parameters ホスト実行可能ファイルに渡されるコマンド ライン引数

ホストされているアプリ パッケージを作成する

ホストされているアプリ パッケージを作成するには:

  1. 標準の MSIX プロジェクトを作成するか、 MakeAppx.exeを使用します。
  2. コンテンツ ファイル (スクリプト、アセット、構成) のみを含めます。
  3. 実行可能ファイルは含めないでください。これはホストから取得されます。
  4. マニフェストで HostRuntimeDependency を宣言します。
  5. 運用環境用の信頼された証明書を使用してパッケージに署名します。 開発中は、署名されていないパッケージを登録できます (下記参照)。

署名されていないパッケージの登録 (開発)

開発中は、署名されていないホステッド アプリ パッケージを登録できます。

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

Note

署名されていないパッケージの登録は開発専用です。 運用環境では、信頼できる証明書を使用してパッケージに署名します。

例: Python スクリプト ホスト

Python ランタイム アプリは、ホストとして機能できます。

  1. ホスト アプリ - パッケージ python.exe し、 HostRuntime Id="PythonHost"を宣言します。
  2. ホステッド アプリ - Python スクリプト (app.py) が含まれており、HostId="PythonHost"Parameters="app.py"を宣言します。
  3. ユーザーがホストされたアプリを起動すると、Windowsは、ホストされたアプリのパッケージ ディレクトリを作業コンテキストとして使用してホストのpython.exe app.pyを実行します。