메모
새 WinUI 3 앱을 빌드하시겠습니까? 이미 기본적으로 패키지되어 있습니다. 이 페이지는 일반적으로 기존 앱을 포팅하거나, 엔터프라이즈 머신에 배포하거나, 원래 패키지되지 않은 앱에 Windows 기능을 추가할 때 명시적으로 선택해야 하는 개발자를 위한 것입니다.
Windows 앱은 패키지, 패키지 해제 또는 그 중간 상태 어딘가에 있을 수 있습니다. 올바른 선택은 앱을 배포하는 방법과필요한 Windows 기능의 두 가지에 따라 달라집니다.
시나리오 시작
"Microsoft Store에 게시하는 인디 개발자입니다."
패키지된 MSIX 앱을 사용합니다. 스토어에는 MSIX 패키징이 필요합니다. Visual Studio에서 만든 WinUI 3 앱은 기본적으로 패키지되므로 변경할 필요가 없습니다. 깨끗한 설치, 자동 업데이트 및 패키지 ID에 의해 제한된 기능, 예를 들어 알림과 백그라운드 작업에 액세스할 수 있습니다.
"Intune 또는 Configuration Manager를 통해 배포된 엔터프라이즈 앱을 빌드하고 있습니다."
패키지된 프로세스를 시작; 기존 설치 프로그램이 있는 경우 외부 위치를 고려합니다.
- 새 앱을 빌드하는 경우 MSIX를 사용합니다. Intune 및 SCCM/ConfigMgr과 깔끔하게 통합되며 전체 패키지 ID를 제공합니다.
- 자신만의 설치 관리자가 있는 기존 앱을 바꿀 수 없는 경우, 외부 위치 패키지화를 사용하시기 바랍니다. 이렇게 하면 배포 방법이나 위치를 변경하지 않고 앱 패키지 ID와 알림 및 백그라운드 작업과 같은 기능에 액세스할 수 있습니다.
- 앱에 Windows ID 제어 기능이 필요하지 않고 배포 환경을 제어하는 경우 패키지되지 않은 작업이 작동하지만 처음 알림 또는 AI 기능을 추가하려고 할 때 벽에 부딪힐 수 있습니다.
패키지된 앱 배포 →(Windows 앱 SDK)
→ 외부 위치로 패키징하여 패키지 ID 부여
저는 독립 소프트웨어 공급업체(ISV)로서 저만의 설치 프로그램을 통해 직접 다운로드를 제공합니다.
외부 위치를 사용하는 패키징(이전에는 스파스 패키지로 불림)을 사용합니다.
이는 자체 설치 관리자(NSIS, WiX, InstallShield 등)를 통해 제공되고 MSIX로 대체하지 않으려는 기존 Win32/WPF/WinForms 앱의 가장 좋은 장소입니다. 기존 설치 관리자와 함께 경량 ID 패키지를 등록하여 이진 파일의 위치를 변경하지 않고, 패키지 ID 기반 Windows 기능의 전체 집합을 잠금 해제합니다.
사용자가 앱을 설치하거나 업데이트하는 방법은 변경되지 않습니다. Windows 기능을 사용할 수 있고, 그들은 익숙한 경험을 제공합니다.
→ 외부 위치로 패키징하여 패키지 ID 부여
→ Visual Studio에서 ID 패키지 추가
"내부 도구 또는 개발자 유틸리티를 빌드하고 있습니다."
패키지 해제는 괜찮습니다. 주의해야 합니다.
패키지되지 않은 앱은 가장 간단하게 빌드하고 배포할 수 있습니다. xcopy, robocopy 또는 간단한 스크립트만 있으면 됩니다. Windows 앱 SDK는 NuGet을 통해 패키지되지 않은 앱에서 작동합니다. 그러나 일부 기능은 사용할 수 없으며 나중에 필요하다고 판단하는 경우 패키지 ID를 개조하는 것은 사소한 일이 아닙니다.
패키지 해제를 커밋하기 전에 로드맵에 대해 아래 기능 테이블을 확인합니다. 알림, 백그라운드 작업 또는 AI API가 다가올 경우, 패키지로 시작하는 것을 고려하십시오.
한눈에 모델 패키징
| 모델 | 패키지 ID | 설치 관리자 | 자격 기준을 충족하는 매장 | 적합한 대상 |
|---|---|---|---|---|
| 패키지(MSIX) | ✅ 예 | MSIX가 설치 관리자를 대체합니다. | ✅ 예 | 새 앱, 스토어 게시, 엔터프라이즈 MDM |
| 외부 위치로 패키징 | ✅ 예 | 기존 인스톨러 | ❌ 아니요 | 자체 설치 관리자가 있는 기존 앱, 독립 소프트웨어 공급업체(ISV) |
| 패키지되지 않음 | ❌ 아니요 | XCopy /script | ❌ 아니요 | 내부 도구, 개발 유틸리티, 간단한 시나리오 |
패키지 ID가 필요한 기능
이러한 Windows 기능은 MSIX 전체 패키징 또는 외부 위치 패키징을 통해 패키지 ID가 있는 앱에서만 작동합니다.
| 특징 | Notes |
|---|---|
| 앱 알림(토스트) |
AppNotificationManager 패키지 ID 필요 |
| 백그라운드 작업 | 등록하려면 패키지 ID가 필요합니다. |
| Windows AI API (Phi Silica, OCR 등) | 대부분의 Windows AI API에는 패키지 ID가 필요합니다. |
| 푸시 알림 (WNS) | 채널 등록에는 패키지 ID가 필요합니다. |
| 공유 대상 | 패키지 매니페스트에 선언됨 |
| 사용자 지정 상황에 맞는 메뉴 확장 | 패키지 매니페스트에 선언됨 |
| 파일 형식 및 프로토콜 연결 | 리치 연결에는 패키지 ID가 필요합니다. |
| 시작 작업 | 패키지 ID 필요 |
| App Services | 패키지 ID 필요 |
팁 (조언)
Windows API를 호출할 때 패키지화되지 않은 상태에서 E_ILLEGAL_METHOD_CALL 또는 APPMODEL_ERROR_NO_PACKAGE 오류가 발생할 경우, 이는 패키지 ID의 요구 사항 때문입니다. 가장 낮은 마찰 수정으로 외부 위치의 패키징 을 참조하세요.
외부 위치로 패키징
외부 위치( 스파스 패키지라고도 함)를 사용하여 패키징하면 설치 관리자, 이진 위치 또는 업데이트 프로세스를 변경하지 않고도 기존 앱과 함께 작은 ID 패키지를 등록할 수 있습니다. Windows 10 버전 2004(빌드 19041)에서 도입되었습니다.
귀하는 다음을 제공합니다.
- 패키지 매니페스트(앱 ID를 설명하는 XML 파일)
- 매니페스트만 포함하는 서명된
.msix항목(이진 파일 없음)
기존 설치 관리자는 이 ID 패키지를 등록하고 Windows는 앱을 해당 시점부터 패키지 ID가 있는 것으로 간주합니다.
이는 전체 MSIX 패키징과 다릅니다.
| MSIX | 외부 위치 | |
|---|---|---|
| 설치 관리자를 대체합니다. | 예 | No |
| 패키지 내의 바이너리 파일 | 예 | 아니요(외부) |
| 자격 기준을 충족하는 매장 | 예 | No |
| 패키지 ID | 예 | 예 |
| 업데이트 메커니즘 | MSIX 업데이트 | 기존의 메커니즘 |
전체 안내: 외부 위치로 패키징하여 패키지 ID 부여하기
프레임워크 종속 배포 및 자체 포함 배포
패키징 모델과는 별도로 Windows 앱 SDK를 사용하는 앱은 런타임 종속성을 수행하는 방법을 선택합니다.
- 프레임워크 종속: Windows 앱 SDK 런타임을 사용자의 컴퓨터에 설치해야 합니다. 앱의 공간이 더 작아집니다. 또한 런타임이 이미 설치되어 있거나 자동으로 설치되는 것에 의존합니다.
- 자체 포함: 모든 Windows 앱 SDK 이진 파일은 앱과 함께 제공됩니다. 더 큰 공간; 외부 런타임 요구 사항이 없습니다. 잠긴 엔터프라이즈 환경에 적합합니다.
관련 콘텐츠
Windows developer