이 항목에서는 다음과 관련된 옵션에 대해 설명합니다.
- 앱에 어떤 패키징 옵션을 사용할지(패키지됨, 외부 위치와 함께 패키지됨 또는 패키지되지 않음).
- 앱을 배포/배포하는 방법 및 설치 방법
- 앱의 런타임 프로세스(격리 방법 및 앱에서 사용할 수 있는 API 포함)
새 앱과 기존 앱 모두에 대해 이러한 결정을 내릴 수 있습니다. 그러나 새 앱에 대한 계획 단계에 있는 경우 위의 고려 사항을 고려하기 전에 먼저 앱에 사용할 개발 플랫폼 및 UI(사용자 인터페이스) 프레임워크를 결정합니다. 해당 결정에 대해서는 Windows 개발 옵션의 개요를 참조하세요.
패키징 옵션: 패키지됨, 외부 위치와 함께 패키지됨 또는 패키지되지 않음
앱에 사용할 패키징 옵션에 대한 결정은 먼저 패키지 ID라는 개념에 따라 결정됩니다. 운영 체제(OS)가 해당 API의 호출자를 식별할 수 있어야 하므로 많은 Windows 확장성 기능(백그라운드 작업, 백그라운드 배달 또는 COM 활성화, 사용자 지정 상황에 맞는 메뉴 확장 및 공유 대상을 사용하는 푸시 알림 시나리오)은 앱이 런타임에 패키지 ID를 가지고 있는 경우에만 사용할 수 있습니다. 패키지된 앱( 외부 위치로 패키지된 앱 포함)만 패키지 ID를 가집니다.
패키지됨, 외부 위치와 함께 패키지됨, 패키지되지 않음 모델에 대한 전체 설명과 그중에서 선택하는 방법은 패키징 개요를 참조하세요. 패키지 ID에 의존하는 기능은 패키지 ID가 필요한 기능을 참조하세요.
앱을 패키지화하거나 비패키지화하는 방법에 대한 정보를 보려면:
-
WinUI 3 앱(Windows 앱 SDK).
AppxPackageVisual Studio 프로젝트 속성을 참고하고, Project 속성을 참조하세요. 또한, 첫 번째 WinUI(Windows 앱 SDK) 프로젝트 만들기를 확인하세요. - 데스크톱 앱. MSIX 패키징에 대한 데스크톱 앱 설정을 참조하세요.
- UWP(Universal Windows Platform) 앱. UWP 앱은 이미 패키지로 구성되어 있습니다. 및 해당 구성을 변경할 수 없습니다.
또한 이 항목의 Windows 패키지 관리자 및 WinGet 클라이언트 섹션을 참조하세요.
배포/분배/설치
패키지된 앱은 MSIX를 사용하여 패키지되고 설치됩니다. 외부 위치로 패키징하도록 선택하는 경우 "bring-your-own-installer" 모델이므로 설치 관리자가 직접 작업을 수행합니다(외부 위치로 패키징하여 패키지 ID 부여 참조). 패키지되지 않은 앱에는 MSIX가 전혀 포함되지 않습니다.
MSIX는 사용자에게 깨끗한 설치, 제거 및 업데이트 환경을 제공하고, 증분 및 자동 업데이트를 지원하고, Microsoft Store 최적화하고, Azure Virtual Desktop MSIX 앱 연결과 함께 작동하며, 서명 시 강력한 변조 방지의 이점을 제공하기 때문에 패키징이 중요합니다.
배포 및 배포 지침은 패키지 및 배포 개요를 참조하고 배포 경로를 선택합니다. 이 항목의 Windows 패키지 관리자 및 WinGet 클라이언트 섹션도 참조하세요.
AppContainer 또는 중간 IL
AppContainer에서 앱을 실행할지 여부는 보안 관련 선택입니다. AppContainer 앱의 프로세스 및 해당 자식 프로세스는 경량 앱 컨테이너 내에서 실행되므로 특별히 부여된 리소스만 access 수 있습니다. 또한 파일 시스템 및 레지스트리 가상화를 사용하여 격리됩니다. 따라서 AppContainer에서 구현된 앱은 제한된 할당된 리소스 외부에서 악의적인 작업을 허용하도록 해킹할 수 없습니다.
패키지 또는 패키지되지 않은 앱은 AppContainer에서 실행되도록 구성할 수 있습니다. 그러나 이 프로세스는 패키지된 앱에 대해 더 간단합니다. 앱이 AppContainer 앱이 아닌 경우 Medium IL 앱입니다.
자세한 내용은 레거시 앱의 AppContainer 및 MSIX AppContainer 앱을 참조하세요.
AppContainer 또는 중간 IL에서 실행되도록 앱을 구성하는 방법에 대한 정보를 참조하세요.
-
WinUI 앱(Windows 앱 SDK).
uap10:TrustLevel앱 패키지 매니페스트 특성을 AppContainer에 대한 WinUI 프로젝트 구성에서 참조하세요. -
데스크톱 앱.
TrustLevelVisual Studio 프로젝트 속성 항목을 MSIX AppContainer 앱에서, 귀하의 앱 종류에 적합한 섹션을 찾아보세요. - UWP(Universal Windows Platform) 앱. UWP 앱은 AppContainer에서 실행되도록 이미 구성되어 있습니다. 및 해당 구성을 변경할 수 없습니다.
패키지되지 않은 앱에는 앱 패키지 매니페스트가 없습니다. 따라서 패키지되지 않은 앱의 경우 앱 패키지 매니페스트 대신 project 파일에서 AppContainer 또는Medium-IL 결정을 선언합니다.
Win32 앱 격리
Win32 앱 격리는 앱이 침해된 경우 피해를 억제하고 사용자의 개인정보 관련 선택 사항을 보호하는 보안 기능입니다(Windows 11 버전 24H2 이상에서 사용할 수 있음). 리소스를 가상화하고 조정된 액세스를 제공하는 AppContainers 및 구성 요소를 기반으로 합니다. 자세한 내용은 Win32 앱 격리 개요 및 Win32 앱 격리 GitHub 리포지토리 참조하세요.
앱 기능
앱 기능(예: internetClient, 위치, 마이크 및 bluetooth)은 대부분 AppContainer에서 실행되는 패키지된 앱과 관련이 있습니다. 따라서 all Universal Windows Platform(UWP) 앱 및 some 데스크톱 앱이 포함됩니다.
그러나 Medium IL 앱(즉, AppContainer 앱이 아닌 앱)조차도 경우에 따라 기능을 선언해야 하는 시나리오가 있습니다. 한 가지 예는 runFullTrust 제한된 기능입니다.
앱 기능, 앱의 적용 종류 및 앱 구성 방법에 대한 자세한 내용은 앱 기능 선언을 참조하세요. 앱 패키지 매니페스트에서 기능을 구성합니다. 따라서 패키지된 앱에만 적용됩니다.
앱 종류
데스크톱 앱 제품군에는 여러 종류의 앱이 있지만 데스크톱 앱과 UWP(유니버설 Windows 플랫폼) 앱은 두 가지 주요 종류의 앱입니다. UI 프레임워크(WinForms, WPF, Win32, Direct 2D/3D 또는 WinUI 3)를 선택하는 것은 이 항목에 설명된 구성과 어느 정도 독립적입니다.
그러나 이러한 앱 종류가 패키징, 배포 및 프로세스 측면에서 서로 어떻게 다를 수 있는지 살펴보겠습니다.
먼저 모든 UWP 앱이 패키지되고 AppContainer에서 실행됩니다. 그러나 데스크톱 앱의 경우 상황이 더 유연합니다. 데스크톱 앱을 패키지할지 여부를 선택할 수 있습니다. 또한 이러한 결정과는 별개로 데스크톱 앱을 AppContainer 또는 중간 IL 앱으로 구성하도록 선택할 수 있습니다.
| 패키지 | Unpackaged | |
|---|---|---|
| AppContainer | 데스크톱 앱 UWP 앱 |
데스크톱 앱 |
| 중간 IL | 데스크톱 앱 | 데스크톱 앱 |
패키지된 앱의 경우 원하는 앱 종류를 구성하려면 앱 패키지 매니페스트에서 uap10:RuntimeBehavior 특성을 사용합니다(사용(Windows 10) 참조).
-
데스크톱 앱은 일반적으로 Windows 환경에서
.exe또는 WinMain 진입점 함수로 실행됩니다. 앱을 데스크톱 앱으로 구성하려면 "packagedClassicApp" 또는 "win32App"으로 설정합니다uap10:RuntimeBehavior.- "packagedClassicApp" 값은 WinUI 앱(Windows 앱 SDK) 또는 데스크톱 브리지 앱(Centennial)을 나타냅니다. 차이점은 Centennial 앱이 AppContainer에서 실행된다는 것입니다.
- 그리고 "win32App"은 다른 종류의 Win32 앱(외부 위치로 패키지된 앱 포함)을 나타냅니다.
- 마지막으로 "windowsApp"으로 설정
uap10:RuntimeBehavior하면 UWP 앱이 제공됩니다.
개발할 수 있는 앱 종류에 대한 모든 옵션은 Windows app 개발: 옵션 및 기능을 참조하세요.
Windows 앱 SDK: 프레임워크 종속 또는 자체 포함
앱에서 Windows 앱 SDK 사용하는 경우 프레임워크 종속성(기본값: 대상 머신에 Windows 앱 SDK 런타임 및/또는 프레임워크 패키지가 있어야 하는 기본값) 또는 자체 포함(앱에 Windows 앱 SDK 종속성이 있음)을 배포하는 방법도 선택합니다. 자세한 내용은 Windows 앱 SDK 배포 개요를 참조하세요.
Windows 패키지 관리자 및 WinGet 클라이언트
package manager 워크플로를 자동화하여 사용자가 소프트웨어를 설치/업그레이드/구성하는 데 도움이 될 수 있습니다. 패키지 관리자는 모든 소프트웨어를 설치하는 데 도움이 될 수 있지만 주로 developer tools 설치하는 데 사용되는 경향이 있습니다. 따라서 개발자 도구를 빌드하는 경우 이 옵션에 특히 관심이 있을 수 있습니다. 그러나 작동 방식은 다음과 같습니다.
- 소프트웨어 개발자인 당신은 제품 설치에 필요한 모든 구성 요소를 선언적 지침의 형태로 패키지 관리자에 정의합니다.
- 그런 다음 사용자가 소프트웨어를 설치할 때 package manager 선언적 지침에 따라 설치 및 구성 워크플로를 자동화합니다.
그 결과 사용자 환경을 준비하는 데 소요되는 시간이 줄어들고 설치된 구성 요소 간의 호환성이 향상됩니다. 또한 Windows 패키지 관리자 사용하여 패키지 또는 패키지되지 않은 앱을 .msix, .msi 및 .exe 같은 형식으로 배포할 수 있습니다.
자세한 내용은 Windows 패키지 관리자 참조하세요.
Windows developer