프레임워크에 의존하는 애플리케이션을 위한 구축 아키텍처 및 개요

이 문서에서는 Windows 앱 SDK 배포의 개략적인 아키텍처에 대해 설명합니다. 아래 개념은 Windows 앱 SDK 프레임워크 종속 앱에 주로 적용됩니다. 프레임워크 종속 앱은 대상 머신에 있는 Windows 앱 SDK 런타임에 따라 달라집니다.

프레임워크 종속 앱을 배포하는 두 가지 기본 옵션이 있습니다.

앱 배포 방법: 요구 사항
패키지됨 - 패키지 매니페스트에서 프레임워크 패키지에 대한 종속성을 선언해야 합니다.
- 배포 API는 Microsoft Store 분산 앱에 필요하며 런타임 종속성이 설치되도록 비 스토어 분산 앱에 권장됩니다.
외부 위치로 패키지되거나 패키지되지 않음 - 설치 관리자를 사용하거나 필요한 MSIX 패키지를 직접 설치하여 런타임을 배포해야 합니다.
- 추가 런타임 요구 사항: 부트스트랩 API를 통해 Windows 앱 SDK 런타임에 대한 액세스를 초기화해야 합니다.

이러한 요구 사항에 대한 자세한 내용은 다음 문서를 참조하세요.

주요 용어

다음 섹션에서는 Windows 앱 SDK 배포에 대한 주요 용어와 이러한 패키지 중 일부에 대한 추가 세부 정보를 정의합니다.

용어 정의
Windows 앱 SDK 런타임 앱이 Windows 앱 SDK를 사용하는 데 필요한 MSIX 패키지입니다. 이러한 패키지에는 Framework, Main, Singleton 및 DDLM이 포함됩니다. 사용된 기능 및 앱 배포 방법에 따라 대상 머신에 이러한 패키지의 특정 집합이 필요합니다.
프레임워크 패키지 앱에서 런타임에 사용되는 이진 파일을 포함합니다(대부분의 Windows 앱 SDK 기능). 프레임워크에는 앱이 최신 버전의 Windows 앱 SDK를 자동으로 설치할 수 있도록 하는 부트스트래퍼 구성 요소가 포함되어 있으며, 이는 정기 릴리스 주기에 따라 업데이트됩니다.
기본 패키지 동적 종속성을 추적하는 백그라운드 작업을 포함하고 Microsoft Store에서 Framework 패키지에 대한 자동 업데이트를 사용하도록 설정하는 패키지입니다.
싱글톤 패키지 백그라운드 작업, 서비스, 앱 확장 및 Framework 패키지에 포함되지 않은 기타 구성 요소(예: 푸시 알림)를 포함합니다. 이는 일반적으로 앱 간에 조정되는 단일 장기 실행 프로세스입니다.
DDLM(Dynamic Dependency Lifetime Manager) 패키지 외부 위치 또는 패키지되지 않은 앱을 사용하는 동안 OS가 MSIX 패키지에 대한 서비스 업데이트를 수행하지 못하도록 합니다.
부트스트래퍼 외부 위치 및 패키지되지 않은 앱과 함께 패키지된 앱에서 앱에 필요한 최상의 Windows 앱 SDK 버전 일치를 찾고 로드하는 데 사용하는 앱-로컬 이진 파일입니다.
프로비저닝 다른 사용자가 반복적으로 설치할 필요가 없도록 시스템 전체에 패키지(파일 및 레지스트리 키 포함)를 설치 및 등록하는 프로세스입니다. OS의 일부로 수행하거나 앱 설치 중에 수행할 수 있습니다.
설치 관리자 프레임워크, Main, Singleton 및 DDLM 패키지를 배포하는 .exe 설치 관리자를 참조합니다.
MSIX 사용자가 Microsoft Store 또는 웹 사이트에서 직접 사용자별로 앱을 안전하게 설치할 수 있도록 하는 최신 설치 관리자 기술입니다. 엔터프라이즈 또는 공유 PC에서는 PowerShell 및 MDM을 통해 모든 사용자에 대해 앱을 설치할 수 있습니다.

프레임워크 패키지

Windows 앱 SDK를 사용하는 앱을 빌드할 때 앱은 프레임워크 패키지를 통해 최종 사용자에게 배포되는 일련의 Windows 앱 SDK 런타임 구성 요소를 참조합니다. 프레임워크 패키지를 통해 앱은 사용자 장치의 단일 공유 소스를 통해 Windows App SDK 구성 요소를 앱 패키지에 번들하는 대신 액세스할 수 있습니다. 프레임워크 패키지는 DLL 및 API 정의(COM 및 Windows 런타임 등록)와 같은 자체 리소스도 포함합니다. 이러한 리소스는 앱의 컨텍스트에서 실행되므로 앱의 기능과 권한을 상속하며 고유한 기능이나 권한을 주장하지 않습니다. 프레임워크 패키지 종속성에 대한 자세한 내용은 MSIX 프레임워크 패키지 및 동적 종속성을 참조하세요.

Windows 앱 SDK 프레임워크 패키지는 Microsoft Store를 통해 최종 사용자에게 배포되는 MSIX 패키지입니다. 보안 및 안정성 수정을 포함할 수 있는 서비스 릴리스를 통해 쉽고 빠르게 업데이트할 수 있습니다. Windows 앱 SDK를 사용하는 모든 프레임워크 종속 앱에는 다음 다이어그램과 같이 프레임워크 패키지의 공유 인스턴스에 대한 종속성이 있습니다.

Diagram of how apps access the Windows App SDK framework package

새 버전의 Windows 앱 SDK 프레임워크 패키지가 서비스되면 모든 프레임워크 종속 앱은 복사본을 재배포할 필요 없이 새 버전으로 업데이트됩니다. Windows는 프레임워크의 최신 버전이 릴리스되면 업데이트하고 앱은 다시 실행하는 동안 최신 프레임워크 패키지 버전을 자동으로 참조합니다. 이전 프레임워크 패키지 버전은 더 이상 실행되지 않거나 시스템의 앱에서 활발히 사용되지 않을 때까지 시스템에서 제거되지 않습니다.

Diagram of how apps get updates to the Windows App SDK framework package

앱 호환성은 Microsoft와 Windows 앱 SDK에 의존하는 앱에 중요하기 때문에 Windows 앱 SDK 프레임워크 패키지는 유의적 버전 2.0.0 규칙을 따릅니다. 즉, Windows 앱 SDK 버전 1.0을 릴리스한 후 Windows 앱 SDK 프레임워크 패키지는 부 및 패치 버전 변경 간의 호환성을 보장하고 주 버전 업데이트 간에만 주요 변경 내용이 발생합니다.

싱글톤 패키지

싱글톤 패키지는 단일 장기 실행 프로세스가 여러 버전의 Windows 앱 SDK에서 실행될 수 있는 여러 앱에서 사용되는 서비스를 처리할 수 있도록 합니다.

Windows 앱 SDK 싱글톤은 기존 UWP PushNotificationTriggerToastNotificationActionTrigger 클래스에서 지원할 수 없는 20H1 미만의 Windows 버전을 사용하는 패키징되지 않은 앱 및 패키징된 Win32 애플리케이션에 대해 푸시 알림을 사용하도록 설정하는 데 필요합니다. 프레임워크 패키지에서 지원되지 않는 향후 Windows 앱 SDK 기능이 Singleton 패키지에 추가됩니다.

패키지되지 않은 앱에 대한 추가 요구 사항

부트스트래퍼

부트스트래퍼는 외부 위치 또는 패키지되지 않은 앱과 함께 패키지된 라이브러리입니다. 부트스트래퍼 API( 외부 위치 또는 패키지되지 않은 패키지로 패키지된 앱의 경우 Windows 앱 SDK 런타임 사용 참조)를 제공하여 패키지되지 않은 앱이 다음과 같은 중요한 작업을 수행할 수 있도록 합니다.

  • Windows 앱 SDK 프레임워크 패키지용 DDLM(동적 종속성 수명 관리자)을 초기화합니다.
  • Windows 앱 SDK 프레임워크 패키지를 찾아 앱의 패키지 그래프에 로드합니다.

이러한 작업을 수행하기 위해 nuget 패키지는 모듈 이니셜라이저를 활용하여 부트스트래퍼를 연결합니다. 프로젝트 파일에 <WindowsPackageType>None</WindowsPackageType>을 설정하기만 하면 됩니다. 고급 시나리오에서 초기화를 제어하려는 경우 패키지되지 않은 앱에 대한 시스템을 제대로 초기화할 수 있도록 앱의 시작 코드에서 직접 부트스트래퍼 API를 호출할 수 있습니다(자습서: 외부 위치로 패키지된 앱 또는 Windows 앱 SDK 를 사용하는 패키지되지 않은 앱에서 부트스트래퍼 API 사용 참조). 앱은 WinUI, 앱 수명 주기, MRT Core 및 DWriteCore와 같은 Windows 앱 SDK 기능을 사용하기 전에 부트스트래퍼 API를 사용해야 합니다.

Windows 앱 SDK 1.0 릴리스의 부트스트래퍼 라이브러리에는 다음이 포함됩니다.

  • Microsoft.WindowsAppRuntime.Bootstrap.dll(C++ 및 C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll(C# 래퍼)

DDLM(동적 종속성 수명 관리자)

DDLM의 목적은 패키지되지 않은 앱에서 사용 중인 Windows 앱 SDK 프레임워크 패키지의 서비스를 방지하는 것입니다. 여기에는 해당 기능을 제공하기 위해 앱 시작 초기에 부트스트래퍼에 의해 초기화되어야 하는 서버가 포함되어 있습니다.

Windows 앱 SDK 프레임워크 패키지의 각 버전 및 아키텍처에 대해 하나의 DDLM이 있습니다. 즉, x64 컴퓨터에서 두 아키텍처의 앱을 지원하기 위해 DDLM의 x86x64 버전이 모두 있을 수 있습니다.

추가 요구 사항