호스트된 앱 모델을 사용하면 호스트 앱에서 실행 파일 및 진입점을 상속하는 간단한 앱을 만들 수 있습니다. 호스트된 앱은 콘텐츠(스크립트, 자산, 구성)를 포함하지만 호스트의 런타임을 사용하여 실행하는 별도의 패키지입니다.
호스트된 앱의 작동 방식
호스트 앱은 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=""script.py"">
</Application>
</Applications>
</Package>
주요 특성:
| 특성 | Description |
|---|---|
HostRuntimeDependency.Name |
호스트 앱의 패키지 패밀리 이름 |
HostId |
호스트 앱의 HostRuntime.Id와 일치 |
Parameters |
호스트 실행 파일에 전달된 명령줄 인수 |
호스트된 앱 패키지 만들기
호스트된 앱 패키지를 만들려면 다음을 수행합니다.
- 표준 MSIX 프로젝트를 만들거나 사용합니다
MakeAppx.exe. - 콘텐츠 파일(스크립트, 자산, 구성)만 포함합니다.
- 호스트에서 가져온 실행 파일을 포함하지 마세요.
- 매니페스트에
HostRuntimeDependency를 선언합니다. - 프로덕션을 위해 신뢰할 수 있는 인증서를 사용하여 패키지에 서명합니다. 개발 중에 서명되지 않은 패키지를 등록할 수 있습니다(아래 참조).
서명되지 않은 패키지 등록(개발)
개발하는 동안 서명되지 않은 호스트된 앱 패키지를 등록할 수 있습니다.
Add-AppxPackage -Path "HostedApp.msix" -AllowUnsigned
메모
서명되지 않은 패키지 등록은 개발 전용입니다. 프로덕션의 경우 신뢰할 수 있는 인증서를 사용하여 패키지에 서명합니다.
예: Python 스크립트 호스트
Python 런타임 앱은 호스트 역할을 할 수 있습니다.
-
호스트 앱 —
python.exe를 패키징하고HostRuntime Id="PythonHost"를 선언합니다. -
호스팅된 앱 — Python 스크립트(
app.py)를 포함하고HostId="PythonHost"를Parameters="app.py"와 함께 선언합니다. - 사용자가 호스트된 앱을 시작하면 Windows 호스트 앱의
python.exe app.py패키지 디렉터리를 작업 컨텍스트로 사용하여 호스트를 실행합니다.
관련 콘텐츠
Windows developer