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 호스트된 앱이 해당 종속성을 선언하기 위해 참조하는 값입니다.

호스트된 앱 선언

호스트된 앱의 매니페스트에서 호스트 런타임 종속성을 선언하고 다음을 TrustLevel 지정합니다 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>

주요 특성:

특성 Description
HostRuntimeDependency.Name 호스트 앱의 패키지 패밀리 이름
HostId 호스트 앱의 HostRuntime.Id와 일치
Parameters 호스트 실행 파일에 전달된 명령줄 인수

호스트된 앱 패키지 만들기

호스트된 앱 패키지를 만들려면 다음을 수행합니다.

  1. 표준 MSIX 프로젝트를 만들거나 사용합니다 MakeAppx.exe.
  2. 콘텐츠 파일(스크립트, 자산, 구성)만 포함합니다.
  3. 호스트에서 가져온 실행 파일을 포함하지 마세요.
  4. 매니페스트에 HostRuntimeDependency를 선언합니다.
  5. 프로덕션을 위해 신뢰할 수 있는 인증서를 사용하여 패키지에 서명합니다. 개발 중에 서명되지 않은 패키지를 등록할 수 있습니다(아래 참조).

서명되지 않은 패키지 등록(개발)

개발하는 동안 서명되지 않은 호스트된 앱 패키지를 등록할 수 있습니다.

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

메모

서명되지 않은 패키지 등록은 개발 전용입니다. 프로덕션의 경우 신뢰할 수 있는 인증서를 사용하여 패키지에 서명합니다.

예: Python 스크립트 호스트

Python 런타임 앱은 호스트 역할을 할 수 있습니다.

  1. 호스트 앱python.exe를 패키징하고 HostRuntime Id="PythonHost"를 선언합니다.
  2. 호스팅된 앱 — Python 스크립트(app.py)를 포함하고 HostId="PythonHost"Parameters="app.py"와 함께 선언합니다.
  3. 사용자가 호스트된 앱을 시작하면 Windows 호스트 앱의 python.exe app.py 패키지 디렉터리를 작업 컨텍스트로 사용하여 호스트를 실행합니다.