Windows 앱을 배포하는 방법은 코드 서명 비용, 업데이트 메커니즘, 엔터프라이즈 관리 효율성 및 고객이 앱을 검색하고 설치하는 방법에 영향을 줍니다. 이 문서에서는 올바른 선택을 하는 데 도움이 되는 기본 경로를 비교합니다.
팁 (조언)
대부분의 개발자에게 Microsoft Store 권장 경로입니다. 광범위한 검색 기능, 신뢰할 수 있는 설치 환경 및 MSIX 제출에 대해 관리할 인프라를 제공하지 않습니다(패키지를 다시 서명하고 호스트하는 Microsoft). Win32 MSI/EXE 설치 관리자 제출도 수락됩니다. 게시자는 버전이 지정된 HTTPS 설치 관리자 URL을 호스트해야 합니다. MSI/EXE 앱 제출을 참조하세요. MSIX 제출은 무료 코드 서명과 기본 제공 업데이트 배달을 제공합니다.
메모
앱이 웹 기술(HTML, JavaScript, CSS)을 기반으로 하는 경우 PWA(Progressive Web App) 는 네이티브 패키징 도구가 필요하지 않은 Microsoft Store 가장 빠른 경로입니다.
배포 경로 한눈에 보기
| Path | 적합한 대상 | 코드 서명 비용 | 자동 업데이트 | Enterprise MDM | 스토어를 통해 배포 |
|---|---|---|---|---|---|
| Microsoft Store(MSIX) | 소비자 및 비즈니스 앱, 광범위한 범위 | ✅ 무료(스토어에서 패키지 다시 서명) | ✅ 기본 제공 | Intune을 통해 ✅ 회사 포털과 함께 | ✅ 예 |
| Microsoft Store(MSI/EXE 설치 관리자) | 자체 설치 프로그램이 포함된 기존 Win32 앱 | 💲 Publisher Microsoft 신뢰할 수 있는 루트 프로그램에 연결된 인증서를 사용하여 설치 관리자 및 모든 PE 파일에 서명해야 합니다 | ❌ 수동(앱 또는 설치 관리자가 업데이트를 처리) | Intune을 통해 ✅ 회사 포털과 함께 | ✅ 예 |
| PWA(프로그레시브 웹앱) | 웹앱 및 웹 기반 환경 | ✅ 무료(사용자를 위한 스토어 표지판) | ✅ 스토어 또는 브라우저를 통해 | Intune을 통해 ✅ 회사 포털과 함께 | ✅ 예 |
| MSIX 사이드로드(엔터프라이즈) | Intune/ConfigMgr을 통한 내부 LOB 앱 | 💲 Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명, ~$10/월) 또는 자체 서명 + Intune 인증서 프로필 | ✅ 앱 설치 관리자 파일 또는 MDM을 통해 | ✅ 네이티브 | ❌ 아니요 |
| MSIX 직접 다운로드(ISV) | 자체 사이트에서 판매된 상용 앱 | 💲 CA에서 신뢰할 수 있는 인증서 필요(Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명) 권장) |
✅파일을 통해 .appinstaller |
⚠️ 제한됨 | ❌ 아니요 |
| 외부 위치로 패키징 | Windows 기능이 필요한 자체 설치 관리자가 있는 기존 앱 | 💲 MSIX 직접 다운로드와 동일 | ✅ 기존 메커니즘 | ⚠️ 제한됨 | ⚠️ MSI/EXE 스토어 제출을 통해(게시자 서명 필요) |
| 패키지되지 않은 WinUI 3 | 틈새 시장: MSIX 기능이 없는 엔터프라이즈 또는 최대 설치 단순성 | 💲 SmartScreen에 권장되는 인증서 | ❌ 수동 전용 | ⚠️ 제한됨(Intune/ConfigMgr Win32 배포를 통해) | ⚠️ MSI/EXE 스토어 제출을 통해(게시자 서명 필요) |
Microsoft Store(권장)
Microsoft Store 게시는 Windows 앱에 대한 가장 완벽한 배포 솔루션입니다. 두 개의 제출 경로를 사용할 수 있습니다.
- MSIX 제출 - 새 앱 및 WinUI 3 앱에 권장됩니다. Microsoft 패키지를 다시 서명합니다. 인증서 구매가 필요하지 않습니다. 스토어 관리형 업데이트, 단계별 출시 및 차등 다운로드가 포함됩니다.
- MSI/EXE 설치 관리자 제출 - 자체 설치 관리자 가 있는 기존 Win32 앱용입니다. Publisher 버전이 지정된 HTTPS URL을 publisher 자체 CDN에서 호스트되는 설치 관리자에 제출합니다. 스토어는 스토어 설치 흐름의 일부로 해당 URL에서 설치 관리자를 다운로드하고 실행합니다. Publisher는 Microsoft 신뢰할 수 있는 루트 프로그램의 CA로 연결된 인증서를 사용하여 설치 관리자에 서명해야 합니다. 업데이트는 앱의 책임입니다.
얻을 수 있는 항목(두 경로 모두):
- 스토어의 검색 및 큐레이팅된 컬렉션을 통한 검색
- 신뢰할 수 있는 설치 UX
- 수익 처리, 환불 및 분석 기능 포함
- Intune을 통해 회사 포털로 엔터프라이즈 배포
요구 사항:
- MSIX는 권장되는 패키지 형식입니다. WinUI 3 앱은 기본적으로 패키지됩니다. 기존 MSI 또는 EXE 설치 관리자가 있는 Win32 앱은 MSI/EXE 설치 관리자 경로를 통해 제출할 수도 있습니다(참고: MSI/EXE 제출에는 Microsoft 신뢰할 수 있는 루트 프로그램의 CA에 대한 인증서 체인이 필요합니다. 자체 서명은 허용되지 않습니다. 이 경로에 대해 저장소 관리형 업데이트를 사용할 수 없습니다.
- 앱은 스토어 인증 요구 사항을 통과해야 합니다. MSIX 요구 사항 | MSI/EXE 요구 사항
- 개발자 계정 필요(파트너 센터)
이 옵션을 선택하는 경우:
- 앱은 소비자 또는 비즈니스 사용자를 광범위하게 대상으로 합니다.
- 가능한 가장 간단한 배포 인프라를 원합니다.
- 새 WinUI 3 앱을 빌드하고 있습니다(이미 패키지되어 있습니다. 제출하기만 하면 됩니다).
→
PWA(프로그레시브 웹앱)
앱이 웹 사이트이거나 주로 웹 기술을 기반으로 구축된 경우 프로그레시브 웹앱은 네이티브 패키징 도구 또는 코드 서명 구매가 필요하지 않은 Microsoft Store 가장 빠른 경로입니다.
PWA는 브라우저가 독립 실행형 앱으로 설치할 수 있는 웹앱입니다. 오프라인으로 실행되고, 푸시 알림을 보내고, 시작 메뉴 및 작업 표시줄에 표시되며, Microsoft Store 통해 배포할 수 있습니다. PWABuilder를 사용하여 몇 분 안에 스토어 제출을 위해 사이트를 패키지합니다.
얻을 수 있는 내용:
- 무료 코드 서명이 있는 스토어 배포 (스토어가 패키지를 서명)
- 최신 브라우저를 사용하여 모든 디바이스에서 작동
- 수동 MSIX, WiX 또는 설치 관리자 작성이 필요하지 않습니다. PWABuilder 와 같은 도구는 Microsoft Store 제출 패키지를 생성합니다.
- 기본 제공 업데이트 배달 - 사용자는 항상 최신 웹 콘텐츠(스토어 다시 제출 없이 호스트된 콘텐츠 업데이트)를 받습니다.
요구 사항:
- 앱은 HTTPS를 통해 제공되어야 합니다.
- 웹앱 매니페스트 및 서비스 작업자
- 앱은 스토어 인증 요구 사항을 통과해야 합니다.
Limitations:
- 추가 브리징 없이는 심층 네이티브 Windows API(파일 시스템 액세스, Web API 이외의 하드웨어 통합)를 사용할 수 없습니다.
- 앱 논리는 네이티브 .NET, C++또는 WinRT API가 필요한 앱에는 적합하지 않은 웹 컨텍스트에서 실행됩니다.
이 옵션을 선택하는 경우:
- 앱이 설치 가능하도록 만들려는 웹앱, SaaS 도구 또는 콘텐츠 사이트입니다.
- 최소한의 도구를 사용하여 스토어에 대한 가장 빠른 경로를 원합니다.
- 최신 Web API에서 기능 요구 사항을 충족합니다.
프로그레시브 웹 앱 개요
→ PWABuilder를 사용하여 Microsoft Store PWA를 게시합니다
MSIX 사이드로딩 - 엔터프라이즈 라인 오브 비즈니스 배포
Microsoft Intune 또는 구성 관리자를 통해 관리되는 디바이스에 배포될 내부 LOB(기간 업무) 앱의 경우, MSIX 사이드로드가 권장되는 방법입니다.
얻을 수 있는 내용:
- MDM 정책을 통한 자동 설치 및 업데이트
- 엔터프라이즈 디바이스 관리와 통합(Intune, ConfigMgr)
- 전체 패키지 ID 및 Windows 기능에 대한 액세스(알림, 백그라운드 작업 등)
코드 서명:
- CA에서 신뢰할 수 있는 인증서에 Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명)(~$10/월)을 사용하거나
- Intune 신뢰할 수 있는 인증서 프로필을 통해 엔드포인트에 배포된 자체 서명된 인증서 사용
요구 사항:
- 대상 디바이스는 서명 인증서를 신뢰해야 합니다(MDM 또는 그룹 정책을 통해).
- 대상 디바이스에서 사이드로딩을 허용해야 합니다(Windows 10 버전 2004 이상 및 모든 Windows 11 디바이스에서는 기본적으로 활성화되어 있음)
이 옵션을 선택하는 경우:
- 회사 관리 디바이스에 내부 앱 배포
- Intune 또는 그룹 정책을 통해 인증서 트러스트를 구성할 수 있는 IT 팀이 있습니다.
intune을 사용하여 MSIX 앱 배포 →
→
MSIX 직접 다운로드 - ISV 및 상용 앱
Microsoft Store가 아닌 웹 사이트에서 직접 판매되는 상용 앱의 경우 자동 업데이트 지원을 위해 파일과 함께 .appinstaller MSIX 패키지를 배포할 수 있습니다.
얻을 수 있는 내용:
- 앱 설치 관리자를 통한 친숙한 설치 환경
- 파일을 통한
.appinstaller자동 업데이트 지원(서버에서 호스트됨) - 전체 패키지 ID 및 Windows 기능 액세스
- 자체 배포 채널 및 가격 책정 제어
코드 서명:
- CA에서 신뢰할 수 있는 코드 서명 인증서가 필요합니다. 사용자가 인증서를 수동으로 신뢰하지 않고는 서명되지 않은 또는 자체 서명된 MSIX 패키지를 설치할 수 없습니다.
- Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명)(~$10/월)은 하드웨어 토큰이 필요하지 않고 CI/CD 파이프라인과 통합되는 Microsoft 권장되는 옵션입니다.
- 기존 OV 인증서도 허용됩니다(일반적으로 CA에서 연간 $150~300).
Smartscreen: 새 인증서는 다운로드 볼륨에 따라 시간이 지남에 따라 SmartScreen 평판을 누적합니다. 새로운 릴리스에 대해 SmartScreen 프롬프트가 표시될 수 있습니다. Windows 앱 개발자에 대한 SmartScreen 평판 참조하세요.
중요합니다
ms-appinstaller: URI 프로토콜(원클릭 브라우저 설치)은 기본적으로 2023년 12월부터 사용하지 않도록 설정됩니다. 다운로드를 위해 .appinstaller 파일에 직접 연결하거나 더 광범위한 범위를 위해 스토어에 게시하는 것이 좋습니다.
Windows 앱 배포 기능의 동시 상태 참조하세요.
이 옵션을 선택하는 경우:
- 웹 사이트에서 직접 소프트웨어를 판매하는 ISV입니다.
- 스토어에서 지원하지 않는 설치 관리자 UX, 가격 책정 또는 라이선스를 제어해야 합니다.
- 고객은 스토어 외부에서 소프트웨어를 조달하는 기업입니다.
→ 앱 설치 관리자 파일 개요
앱 자동 업데이트 및 복구 →
외부 위치 패키징(희소 패키지)
자체 설치 관리자(WiX, NSIS, InstallShield)가 있는 기존 앱이 있고 설치 관리자를 MSIX로 대체하지 않고 패키지 ID가 필요한 Windows 기능을 추가하려는 경우 외부 위치로 패키징을 사용합니다.
얻을 수 있는 내용:
- 패키지 ID를 설치 관리자나 이진 파일 위치를 변경하지 않고 확인합니다.
- Windows 기능에 대한 액세스: 알림, 백그라운드 작업, 파일 형식 연결, 프로토콜 처리기
- 기존 설치 및 업데이트 메커니즘이 그대로 유지됩니다.
얻을 수 없는 항목:
- 직접 MSIX 스토어 제출(스파스 패키지 자체는 스토어에서 제출되지 않지만 기본 설치 관리자는 MSI/EXE 스토어 설치 관리자 경로를 통해 제출할 수 있습니다.)
- 전체 MSIX의 클린 설치/제거 모델
이 옵션을 선택하는 경우:
- 기존의 Win32/WPF/WinForms 앱에 설정된 설치 프로그램이 있습니다.
- 패키지 ID가 필요한 특정 Windows API 기능을 원합니다.
- 지금은 MSIX로 완전히 마이그레이션할 수 없습니다.
패키지되지 않은 WinUI 3
패키지되지 않은 배포는 그림에서 MSIX를 완전히 제거합니다. 앱은 패키지 매니페스트 없이 폴더에서 직접 실행됩니다. 이는 특정 시나리오에 적합한 틈새 옵션입니다.
얻을 수 있는 내용:
- 더 간단한 빌드 출력(파일 폴더, MSIX 도구 없음)
- 대상 머신에 MSIX 인프라가 필요하지 않음
- MSIX 사이드로딩이 사용 설정되지 않은 기기에서 작동
Limitations:
- 단일 파일 EXE 없음 - Windows 앱 SDK 런타임은 실행 파일과 함께 별도의 파일로 제공되어야 합니다.
- 런타임 배포 - Windows 앱 SDK 런타임 설치 관리자를 번들로 묶거나 자체 포함 배포(더 큰 출력)를 사용해야 합니다.
- 패키지 ID 없음 - 자동 업데이트, 백그라운드 작업 없음, 매니페스트를 통한 파일 형식 연결 없음
- MSIX/package-identity Store 제출 없음 - 이 모델에는 패키지 ID가 없으며 MSIX 패키지로 Store에 제출할 수 없습니다. 기존 설치 관리자(MSI/EXE)는 별도로 제출할 수 있지만 이 배포 경로 밖에 있습니다.
- CA 신뢰할 수 있는 인증서로 서명되지 않은 경우 SmartScreen 경고
이 옵션을 선택하는 경우:
- 대상 환경에서는 MSIX를 사용할 수 없습니다(일반적이지는 않지만 대부분의 관리형 엔터프라이즈 환경은 MSIX를 지원함).
- MSIX 오버헤드가 정당화되지 않는 내부 도구를 빌드하고 있습니다.
대부분의 WinUI 3 앱에서 MSIX(스토어 또는 직접 다운로드를 통해)가 더 나은 경로입니다. 위의 제한 사항은 비패키지 배포에 투자한 후 이를 발견한 개발자들을 종종 놀라게 합니다.
→ 패키지되지 않은 WinUI 3 앱 배포 - 런타임 배포 옵션을 사용하는 단계별 가이드
많은 Windows 앱은 ClickOnce, MSI, WiX, Inno 설치 또는 유사한 기술을 사용하여 배포됩니다. 특히 MSIX를 사용할 수 없거나 스토어 배포가 필요하지 않은 앱에 대해 설정되고 지원되는 옵션입니다. 아래 표에는 일반적인 옵션과 그 결정의 장단점이 정리되어 있습니다.
| 메서드 | 자동 업데이트 | 코드 서명 필요 | 자격 기준을 충족하는 매장 | 적합한 대상 |
|---|---|---|---|---|
| 스토어를 통한 MSIX | ✅ 기본 제공 | ✅ 무료(스토어 표지판) | ✅ 예 | 대부분의 앱 - 권장되는 시작점 |
| MSIX + .appinstaller | ✅ 기본 제공 | 💲 CA에서 신뢰할 수 있는 인증서 | ❌ 아니요 | 웹 사이트에서 직접 배포하는 ISV |
| ClickOnce |
✅ 기본 제공 | 💲 인증서 권장 | ❌ 아니요 | WPF/WinForms 앱; WinUI 3에 지원되지 않음 |
| MSI / WiX / Inno 설치 | ⚠️ 수동 또는 사용자 지정 | 💲 인증서 권장 | ⚠️ MSI/EXE 스토어를 통해 제출(아래 참조) | 복잡한 설치 요구 사항 또는 기존 설치 관리자가 있는 앱 |
| 독립 실행형 EXE(xcopy/zip) | ❌ 없음 | 💲 인증서 권장 | ❌ 아니요 | 간단한 유틸리티; 개발자/파워 사용자 대상 그룹 |
| winget 매니페스트 | ✅ winget을 통해 | 💲 인증서 권장 | ❌ 아니요 | 위의 항목 중 어느 것이든 winget install를 통해 검색 가능성을 추가합니다. |
ClickOnce (클릭원스)
ClickOnce는 Visual Studio 기본 제공되는 .NET 배포 기술입니다. 웹 서버 또는 파일 공유에서 매니페스트를 호스트합니다. 사용자는 매니페스트 URL에서 설치하고 ClickOnce는 시작 시 업데이트 검사를 처리합니다. 알려진 사용자 기반에 배포된 WPF 및 WinForms 앱에 적합합니다.
ClickOnce는 WinUI 3 앱에서 지원되지 않습니다. WinUI 3 직접 배포에 MSIX를 .appinstaller 사용합니다.
MSI, WiX, Inno Setup 및 NSIS
기존 EXE 및 MSI 설치 관리자는 복잡한 설치 요구 사항(드라이버 설치, 시스템 서비스, 레지스트리 구성)을 사용하는 Windows 앱에 공통적으로 적용됩니다. WiX 도구 집합, Inno Setup 및 NSIS와 같은 도구는 커뮤니티에서 유지 관리되며 널리 사용됩니다. 업데이트 지원을 사용하려면 사용자 고유의 구현이 필요합니다.
이러한 형식은 MSIX 패키지로 스토어에서 적합하지 않지만 MSI/EXE 설치 관리자 경로(Microsoft 신뢰할 수 있는 루트 프로그램의 CA에 연결된 인증서가 필요하며, 자동 설치가 가능한 설치 관리자)를 통해 스토어에 제출할 수 있습니다. 특정 Windows 기능에 패키지 ID가 필요한 경우 패키징과 외부 위치 결합할 수도 있습니다.
독립 실행형 EXE(xcopy 배포)
dotnet publish --self-contained 사용자가 .NET 설치하지 않고 실행할 수 있는 파일 폴더(또는 단일 파일 EXE)를 생성합니다. 이는 가장 간단한 배포 모델이지만 사용자가 새 버전을 수동으로 다운로드해야 합니다. 명령줄 도구, 개발자 유틸리티 및 파워 사용자 앱에 적합합니다.
winget - 모든 배포 경로에 검색 가능성 추가
패키징 형식에 관계없이 Windows 패키지 관리자 커뮤니티 리포지토리 매니페스트를 제출하여 winget install <your-app> 통해 앱을 설치할 수 있도록 할 수 있습니다. 이는 기존 배포 방법을 대체하지 않습니다. 개발자 및 기술 대상 그룹이 소중히 여기는 명령줄 설치 경로를 추가합니다.
관련 콘텐츠
- 패키징 개요
- Windows 앱 개발자를 위한 SmartScreen 평판
- Windows 앱 배포 기능의 동시 상태
Microsoft Store - 프로그레시브 Web Apps 개요
- Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명)
Windows developer