Windows 앱 SDK 배포 개요

Windows 앱 SDK 배포할 수 있는 두 가지 방법이 있습니다.

  • 프레임워크 종속. 앱은 대상 머신에 있는 Windows 앱 SDK 런타임 및/또는 프레임워크 패키지에 따라 달라집니다. 프레임워크 종속 배포는 컴퓨터 리소스 및 서비스 가능성을 효율적으로 사용하기 위한 Windows 앱 SDK 기본 배포 모드입니다.
  • 자체 포함. 앱은 Windows 앱 SDK 종속성을 전달하므로 대상 머신에 별도의 런타임 설치가 필요하지 않습니다.

이 항목에서는 패키지된 앱, 외부 위치가 있는 패키지된 앱패키지되지 않은 앱이라는 용어도 사용합니다. 해당 용어에 대한 설명은 배포 개요를 참조하세요.

프레임워크 종속 배포 자체 포함된 형태로 배포
장점 소규모 배포. 오직 앱과 그 종속성만 배포됩니다. Windows 앱 SDK 런타임 및 프레임워크 패키지는 패키지된 프레임워크 종속 앱 또는 외부 위치로 패키지되거나 패키지되지 않은 프레임워크 종속 앱에서 Windows 앱 SDK 런타임 설치 관리자의 일부로 자동으로 설치됩니다.

서비스 가능. Windows 앱 SDK 대한 서비스 업데이트는 앱에 필요한 작업 없이 Windows 앱 SDK Framework 패키지를 통해 자동으로 설치됩니다.
Windows 앱 SDK 버전 제어. 앱과 함께 배포되는 Windows 앱 SDK 버전을 제어합니다. Windows 앱 SDK 서비스 업데이트는 다시 빌드하고 재배포하지 않는 한 앱에 영향을 주지 않습니다.

다른 앱과 격리됩니다. 앱과 사용자는 전체 앱을 제거하지 않고는 Windows 앱 SDK 종속성을 제거할 수 없습니다.

Xcopy 배포. Windows 앱 SDK 종속성은 앱에서 수행되므로 추가 설치 요구 사항 없이 빌드 출력을 단순히 xcopy-ing하여 앱을 배포할 수 있습니다.
단점 추가 설치 종속성. 앱 설치에 복잡성을 더할 수 있는 Windows 앱 SDK 런타임 및/또는 프레임워크 패키지를 설치해야 합니다.

공유 종속성. 공유된 종속성이 제거될 위험 공유 구성 요소를 제거하는 앱 또는 사용자는 종속성을 공유하는 다른 앱의 사용자 환경에 영향을 미칠 수 있습니다.

호환성 위험. Windows 앱 SDK 업데이트를 서비스하면 호환성이 손상되는 변경이 발생할 위험이 있습니다. 서비스 업데이트는 이전 버전과의 호환성을 제공해야 하지만 회귀가 도입될 수 있습니다.
대규모 배포(패키지되지 않은 앱만 해당). 앱에 Windows 앱 SDK 포함되므로 필요한 다운로드 크기와 하드 드라이브 공간이 프레임워크 종속 버전의 경우보다 큽합니다.

성능(패키지되지 않은 앱만 해당). 코드 페이지가 다른 앱과 공유되지 않으므로 로드 속도가 느려지고 메모리가 더 많이 사용됩니다.

서비스할 수 없습니다. 앱과 함께 배포된 Windows 앱 SDK 버전은 새 버전의 앱을 릴리스해야만 업데이트할 수 있습니다. Windows 앱 SDK 서비스 업데이트를 앱에 통합해야 합니다.

또한 첫 번째 WinUI 3 프로젝트 만들기 및 기존 프로젝트에서 Windows 앱 SDK 사용을 참조하세요.

메모

PublishSingleFile (단일 파일 EXE)패키지되지 않은 자체 포함 WinUI 3 앱(Windows 앱 SDK 1.5 이상)에 대해 지원됩니다. 패키지된 앱과 프레임워크 종속 앱은 PublishSingleFile을 지원하지 않습니다. 필요한 MSBuild 속성은 단일 파일 EXE를 참조하세요.

프레임워크 종속 배포에 대한 자세한 정보

배포를 위해 프레임워크 종속 앱을 구성하기 전에 앱이 Windows 앱 SDK 사용할 때 사용하는 종속성에 대해 자세히 알아보려면 Windows 앱 SDK 대한 배포 아키텍처를 검토합니다.

패키지에 포함된 앱

프레임워크 종속 패키지 앱(Deployment 개요 참조)으로 이동하도록 선택한 경우 앱으로 Windows 앱 SDK 런타임을 배포하는 방법에 대한 지침은 다음과 같습니다.

외부 위치 또는 패키지되지 않은 앱과 함께 포함됨

외부 위치가 있는 프레임워크 종속 패키지 앱 또는 프레임워크 종속 패키지되지 않은 앱(Deployment 개요 참조)으로 이동하도록 선택한 경우 앱과 함께 Windows 앱 SDK 런타임을 배포하는 방법에 대한 지침은 다음과 같습니다.

자체 포함 배포에 대한 자세한 정보

자체 포함 앱은 Windows 앱 SDK 배포 가이드를 참조하세요.

메모

PublishSingleFile (단일 파일 EXE)를 사용하려면 앱이 패키징되지 않은 상태이고 자체 포함형이어야 합니다. 필요한 MSBuild 속성의 전체 목록은 단일 파일 EXE 를 참조하세요.

Windows 앱 SDK 초기화

Windows 앱 SDK 초기화하는 방법은 앱을 패키지할지 여부와 방법 및 Windows 앱 SDK 런타임을 기준으로 배포하는 방법에 따라 달라집니다. 앱에 적용되는 아래 섹션을 사용합니다.

패키지에 포함된 앱

앱 배포 방법 초기화하는 방법
프레임워크 종속 배포 API 호출을 참조하세요.
자체 포함 초기화가 필요하지 않습니다.

패키지되지 않은 앱 및 외부 위치로 패키지된 앱

앱 배포 방법 초기화하는 방법
프레임워크 종속 외부 위치에서 실행되거나 패키지되지 않은 앱에서 부트스트래퍼 API 사용을 참조하세요.
자체 포함 자동 UndockedRegFreeWinRT 지원을 옵트아웃(또는 옵트인)하는 것을 참조하세요 .

아키텍처 고려 사항(x64, ARM64)

앱을 배포할 때 사용자에게 필요한 각 프로세서 아키텍처에 대한 이진 파일을 포함해야 합니다. 프레임워크 종속 배포 모드와 자체 포함 배포 모드 모두에 적용됩니다.

ARM64 지원

ARM 디바이스(Surface Pro X, Surface Pro 11 및 Copilot+ PCs 포함)의 Windows ARM64를 기본적으로 실행합니다. x64 에뮬레이션은 Windows 11 ARM64 디바이스에서 사용할 수 있지만 네이티브 ARM64 이진 파일은 더 나은 성능과 배터리 수명을 제공하며, Copilot+ PCs 디바이스 내 AI 워크로드에 가장 적합한 환경을 원하는 경우 권장됩니다.

네이티브 ARM64 배포

  • MSIX 번들x64ARM64 아키텍처를 모두 포함하는 .msixbundle을 만듭니다. Visual Studio 여러 플랫폼용으로 빌드할 때 자동으로 생성됩니다. 스토어 및 앱 설치 관리자는 설치 시 올바른 아키텍처를 선택합니다.

  • 자체 포함 게시 - 각 아키텍처에 대한 RID(런타임 식별자)를 지정합니다.

    dotnet publish -c Release -r win-x64 --self-contained true
    dotnet publish -c Release -r win-arm64 --self-contained true
    
  • C++/WinRT - Visual Studio 솔루션에 대해 x64ARM64 별도의 구성을 빌드합니다.

  • 프레임워크 종속 앱 - Windows 앱 SDK 런타임 설치 관리자를 사용하는 경우 올바른 아키텍처별 설치 관리자를 제공해야 합니다. Windows 앱 SDK x64 및 ARM64용 별도 설치 관리자를 배송합니다.

Arm64EC - 대규모 C/C++ 코드베이스에 대한 점진적 마이그레이션

앱에 큰 네이티브(C/C++) 코드베이스가 있는 경우 ARM64에 대한 전체 다시 컴파일은 한 단계에서 실용적이지 않을 수 있습니다. Arm64EC (에뮬레이션 호환)를 사용하면 동일한 프로세스에서 x64 및 ARM64 코드를 혼합할 수 있습니다. 성능에 중요한 모듈을 네이티브 ARM64로 다시 컴파일하고 나머지 x64 모듈은 에뮬레이션에서 실행되며 모두 단일 이진 파일 내에 있습니다.

Approach 적합한 대상 균형 교환
전체 ARM64 다시 컴파일 순수 .NET 앱, 작은 C++ 프로젝트 최상의 성능; 에서는 모든 종속성이 ARM64와 호환되어야 합니다.
Arm64EC 대형 C/C++ 앱, x64 전용 플러그 인이 있는 앱 또는 타사 DLL 증분 마이그레이션; 에뮬레이트된 부분은 네이티브보다 느리게 실행됩니다.
x64만(에뮬레이트됨) 다시 컴파일할 수 없고 최고 성능이 필요하지 않은 앱 간단한; ARM64 디바이스의 배터리 수명 및 대기 시간 단축

자세한 내용은 Arm64EC — Arm의 네이티브 성능을 위한 앱 빌드 및 포트를 참조하세요.

에뮬레이션(프리즘)

ARM의 Windows 11 Prism이라는 에뮬레이션 계층을 사용하여 ARM64 하드웨어에서 x64 및 x86 앱을 실행합니다. Prism은 런타임에 x86/x64 명령을 ARM64로 변환하여 다시 컴파일할 필요 없이 광범위한 앱 호환성을 제공합니다.

  • x64 에뮬레이션 - ARM64 디바이스에서만 Windows 11 사용할 수 있습니다(ARM의 Windows 10 아님).
  • x86 에뮬레이션 - Windows 10 및 Windows 11 ARM64 디바이스 모두에서 사용할 수 있습니다.
  • 성능 — 에뮬레이트된 앱은 일반적으로 생산성 워크로드에 대해 허용 가능한 성능으로 실행되지만 그래픽 집약적이거나 컴퓨팅이 많은 앱은 네이티브 ARM64 또는 Arm64EC 빌드의 이점을 크게 활용합니다.

팁 (조언)

x64만 대상으로 하는 경우 앱은 Prism 에뮬레이션을 통해 ARM64 디바이스에서 계속 실행됩니다(Windows 11만 해당). 그러나 네이티브 ARM64 빌드는 프로덕션 앱에 강력하게 권장됩니다. 에뮬레이트된 앱은 배터리를 더 많이 사용하고 대기 시간이 더 깁니다. Copilot+ PCs 네이티브 ARM64는 디바이스 내 AI 워크로드에 최상의 성능을 제공할 수 있습니다.

스토어에 제출하는 경우 아키텍처별 패키지 또는 두 가지가 모두 포함된 번들을 업로드하세요. 스토어는 각 디바이스에 일치하는 아키텍처만 제공합니다.