첫 번째 Windows 앱 게시

WPF, WinForms 또는 WinUI 3 앱을 빌드했습니다. 이제 사용자의 손에 가져와야 합니다. 이 가이드에서는 완성된 빌드에서 게시된 앱으로의 전체 경로를 안내하며 Microsoft Store(권장)에 게시하고 direct 다운로드 배포를 설정하는 두 가지 가장 일반적인 배포 시나리오를 다룹니다.

팁 (조언)

Microsoft Store 대부분의 개발자에게 권장되는 경로입니다. 코드 서명, 업데이트 배달 및 검색을 처리하며 Windows 사용자에게 도달하는 가장 낮은 마찰 방법입니다. 스토어에 맞지 않는 특정 상용, 엔터프라이즈 또는 배포 요구 사항이 있는 경우 직접 다운로드가 적합합니다.

1단계: 배포 경로 선택

배포 경로는 코드 서명 비용, 업데이트 메커니즘, 사용자가 앱을 검색하는 방법 및 엔터프라이즈에서 앱을 배포하는 방법을 결정합니다.

Windows 앱에 대한 배포 경로 선택 전체 비교가 있습니다. 요약:

  • Microsoft Store - 대부분의 앱에 권장됩니다. 무료 서명, 기본 제공 업데이트, 광범위한 검색 가능성 및 신뢰할 수 있는 설치 환경. 무료 개발자 계정이 필요합니다. storedeveloper.microsoft.com 등록합니다.
  • 직접 다운로드 - 자체 상점, 엔터프라이즈 LOB 앱 또는 스토어에서 허용하지 않는 콘텐츠가 있는 앱이 있는 상업용 ISV에 적합합니다. 사용자는 서명, 호스팅 및 업데이트를 담당합니다.

대부분의 새로운 인디 앱은 스토어에 적합합니다. 확실하지 않은 경우 거기에서 시작합니다.

2단계: 코드 서명 설정

MSIX 패키지를 Microsoft Store: 이 단계를 건너뜁니다. Microsoft 인증 프로세스의 일부로 패키지에 자동으로 다시 서명합니다.

Microsoft Store에 Win32 MSI/EXE 설치 관리자를 제출하는 경우: 제출하기 전에 설치 관리자에 서명해야 합니다. 설치 관리자와 PE 파일은 Microsoft 신뢰할 수 있는 루트 프로그램에 포함된 CA로 연결되는 인증서 체인으로 서명되어야 합니다. 자체 서명된 인증서는 허용되지 않습니다. MSI/EXE에 대한 앱 패키지 요구 사항을 참조하세요.

직접 배포하는 경우 신뢰할 수 있는 코드 서명 인증서가 필요합니다. 서명되지 않은 앱 및 자체 서명된 앱은 강력한 SmartScreen 경고를 트리거하고 일부 엔터프라이즈 환경에서는 완전히 차단합니다.

Windows 앱 개발자를 위한 서명 옵션 코드 전체 비교가 있습니다. 간단한 안내

  • 미국, 캐나다, EU 또는 영국의 조직화/ 미국 또는 캐나다의 개인:Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명) — 약 $9.99/월, 하드웨어 토큰이 필요하지 않고 CI/CD 파이프라인과 통합됩니다. 이 옵션은 Microsoft 비 스토어 배포에 권장되는 옵션입니다.
  • 미국/캐나다 외에 거주하는 개별 개발자이거나 Azure 아티팩트 서명을 받을 자격이 없는 경우: DigiCert 또는 Sectigo와 같은 인증 기관에서 OV 인증서를 발급받아야 하며, 비용은 일반적으로 연간 $150~300입니다.

메모

좋은 첫 실행 환경을 위해서는 앱에 서명해야 합니다. 서명된 새 앱은 평판을 쌓을 때까지 SmartScreen 경고를 계속 표시하지만 경고는 서명되지 않은 앱보다 훨씬 덜 심각합니다. 개발자가 초기 사용자에게 표시되는 내용을 이해하려면 SmartScreen 평판 을 참조하세요.

3단계: 앱 패키지

앱을 패키지하는 방법은 사용한 앱 프레임워크에 따라 달라집니다.

WinUI 3

Windows 앱 SDK 프로젝트 템플릿을 사용하여 만든 WinUI 3 앱은 기본적으로 MSIX로 이미 패키지되어 있습니다. Visual Studio 솔루션을 빌드할 때 출력은 스토어 제출 또는 직접 배포를 위해 준비된 .msix 또는 .msixbundle 파일입니다.

MSIX 패키징 없이 패키지되지 않은 WinUI 3 앱을 배포하려면 패키지되지 않은 WinUI 3 앱 배포를 참조하세요. 패키지되지 않은 WinUI 3 앱은 단일 파일 EXE를 생성할 수 없으며 사용자 컴퓨터에서 Windows 앱 SDK 런타임이 필요합니다(런타임 설치 관리자를 통해 별도로 설치되거나 자체 포함 배포를 사용하여 번들됨).

WPF 및 WinForms

WPF 및 WinForms 프로젝트는 기본적으로 MSIX를 생성하지 않습니다. 몇 가지 옵션이 있습니다.

옵션 A: MSIX(Windows 애플리케이션 패키징 Project)
Visual Studio 솔루션에 Windows 애플리케이션 패키징 Project 추가합니다. 이렇게 하면 앱이 MSIX 패키지로 래핑되어 패키지 ID, 스토어 자격 및 앱 설치 관리자 기반 업데이트를 제공합니다. 스토어 제출에 권장되는 방법입니다.

단일 프로젝트 MSIX를 사용하여 데스크톱 앱 패키지

옵션 B: dotnet publish (자체 포함 EXE)
직접 다운로드 배포의 경우 dotnet publish--self-contained .NET 런타임을 포함하는 독립 실행형 EXE를 생성합니다. 사용자는 .NET 별도로 설치할 필요가 없습니다.

dotnet publish -c Release -r win-x64 --self-contained true

이렇게 하면 설치 관리자에서 압축 및 배포 또는 래핑에 적합한 파일 폴더가 생성됩니다. 스토어에 직접 등록할 수 없습니다.

옵션 C: 프레임워크 종속 게시
사용자에게 올바른 .NET 런타임을 설치하도록 요구하는 것이 편한 경우 --self-contained 생략합니다. 출력은 작지만 런타임 종속성이 있습니다.

스토어 제출 프로세스는 파트너 센터를 통해 실행됩니다.

한눈에 보는 단계:

  1. 개발자 계정을 만듭니다 . 무료입니다. storedeveloper.microsoft.com 등록합니다. 계정이 영구적입니다.
  2. 앱 이름 예약 - 제출하기 전에 파트너 센터에서 앱 이름을 요청합니다. 이 이름은 개발 중 귀하를 위해 예약되어 있습니다.
  3. 앱 빌드 및 패키지 - 스토어 요구 사항을 충족하는 MSIX 패키지를 만듭니다. 스토어 제출의 경우 MSIX/AppX 패키지에는 CA에서 신뢰할 수 있는 서명이 필요하지 않습니다. Microsoft 인증 후 Microsoft 인증서로 패키지에 다시 서명합니다. MSI 또는 EXE 설치 관리자를 사용하여 스토어 외부에 배포하는 경우 Windows 보안 기능을 통해 Authenticode 서명을 권장하고 예상합니다.
  4. 제출 만들기 - 패키지를 업로드하고, 스토어 목록 세부 정보(설명, 스크린샷, 범주, 연령 등급)를 제공하고, 가격 책정을 설정합니다.
  5. 인증 - Microsoft 정책 준수에 대한 앱을 검토합니다. 인증은 일반적으로 새 앱에 대해 영업일 기준 몇 일 정도 걸립니다.
  6. 게시 - 인증을 받으면 앱이 스토어에 표시되고 사용자가 사용할 수 있습니다.

앱 제출 만들기
앱 패키지 요구 사항

4b단계: 직접 배포(대체 경로)

스토어 외부에 앱을 배포하는 경우 몇 가지 패키징 및 호스팅 옵션이 있습니다.

앱 설치 관리자를 사용한 MSIX(.appinstaller)

도우미 .appinstaller 파일과 함께 배포된 MSIX 패키지는 자동 업데이트 검사를 지원합니다. 사용자가 .appinstaller 파일에서 앱을 설치하는 경우 Windows 새 버전에 대해 지정한 URL을 정기적으로 확인하고 업데이트할 것을 제안합니다.

중요합니다

ms-appinstaller URI 프로토콜(웹 링크에서 직접 설치할 수 있음)은 기본적으로 보안 문제로 인해 2023년 12월부터 사용하지 않도록 설정됩니다. 사용자는 .appinstaller 또는 .msix 파일을 다운로드하고 수동으로 열어야 합니다.
배포 기능의 현재 상태

ClickOnce(WPF 및 WinForms)

ClickOnce는 WPF 및 WinForms 앱에 대한 자동 업데이트를 지원하는 Visual Studio 기본 제공되는 .NET 배포 기술입니다. 사용자는 호스트된 매니페스트에서 설치되고 ClickOnce는 업데이트 검사를 투명하게 처리합니다.

ClickOnce는 WinUI 3 앱에서 지원되지 않습니다 . 대신 MSIX를 .appinstaller 사용합니다.

ClickOnce 보안 및 배포

EXE 설치 파일

WiX Toolset 또는 Inno Setup과 같은 도구를 사용하여 만든 기존 EXE 설치 관리자는 사용자에게 친숙하고 생성하기 쉽습니다. 이러한 도구는 많은 Windows 애플리케이션에서 사용하는 잘 설정된 커뮤니티 도구입니다. EXE 설치 프로그램에는 사용자가 고유한 업데이트 메커니즘을 구현해야 합니다.

다운로드 호스팅

직접 다운로드를 위한 일반적인 호스팅 옵션:

  • GitHub 릴리스 - 무료, 버전 관리 및 자동화된 빌드 파이프라인과 잘 통합됩니다. 오픈 소스 및 소규모 상용 앱에 적합합니다.
  • 사용자 고유의 웹 사이트 - 다운로드 페이지, 분석 및 결제 흐름을 완전히 제어할 수 있습니다. 앱이 증가하는 경우 신뢰할 수 있는 스토리지 및 CDN 용량이 필요합니다.
  • 타사 매장 - 일부 개발자는 게임 인접 앱에 대한 itch.io 같은 상점을 통해 배포합니다.

검색 용이성을 위한 winget

Windows 패키지 관리자 커뮤니티 리포지토리에 앱을 제출하면 winget install 통해 앱을 설치할 수 있습니다. 이는 특히 명령줄 도구를 선호하는 개발자 및 파워 사용자 대상에 의해 평가됩니다. 제출은 커뮤니티 매니페스트 리포지토리에 대한 끌어오기 요청이며 무료입니다.

5단계: 자동 업데이트 설정

사용자를 최신 버전으로 유지하면 지원 부담이 줄어들고 보안 수정 사항이 즉시 도달할 수 있습니다.

배포 경로 업데이트 메커니즘
Microsoft Store(MSIX) 자동 - 스토어가 백그라운드에서 업데이트를 제공합니다.
Microsoft Store (MSI/EXE 인스톨러) 수동 - 앱 또는 설치 관리자가 업데이트를 처리합니다. 스토어는 기존 사용자에게 업데이트를 푸시하지 않습니다.
MSIX + .appinstaller 기본 제공 - Windows 일정에 따라 지정한 URL을 확인합니다.
ClickOnce (클릭원스) 기본 제공 - 시작 시 업데이트 확인
EXE 설치 파일 또는 자체 포함 EXE 수동 구현 필요

기본 제공 업데이트 메커니즘이 없는 EXE 또는 자체 포함 배포의 경우 Velopack은 .NET 앱에 자동 업데이트 및 설치 관리자 기능을 추가하는 커뮤니티 도구입니다. Microsoft 제품이 아닙니다. 사용자 고유의 요구 사항에 따라 평가합니다.

6단계: 새 앱에 대한 SmartScreen 처리

서명된 정도에 관계없이 모든 새 앱은 다운로드 기록이 충분히 누적될 때까지 첫 번째 다운로드 시 SmartScreen 경고를 트리거합니다. 이것은 예상되고 정상입니다. 이를 잘 처리하는 방법은 다음과 같습니다.

  • 모든 릴리스에 서명합니다. 서명되지 않은 앱은 "Windows가 PC를 보호했습니다"라는 더 심각한 경고를 표시합니다. 서명된 앱은 사용자가 더 쉽게 우회할 수 있다는 부드러운 "인식할 수 없는 앱" 경고를 표시합니다.
  • 초기 사용자로 기대치를 설정합니다. 베타 테스터와 얼리어답터에게 무엇을 기대해야 하는지 알려주세요. 릴리스 공지 사항("처음 실행 시 SmartScreen 프롬프트가 표시될 수 있음) 새 앱의 경우 정상입니다. '추가 정보'를 클릭한 다음 '어쨌든 실행'을 클릭합니다.) 혼동을 방지하고 설치를 중단합니다.
  • 인내심을 가져야 합니다. 평판은 다운로드 볼륨으로 유기적으로 구축됩니다. 소비자 엔드포인트에 대해 이를 가속화하는 수동 제출 프로세스는 없습니다.

개발자를 위한 → SmartScreen 평판은 전체 평판 모델, 사용자가 각 단계에서 보는 내용 및 엔터프라이즈 정책 고려 사항을 설명합니다.

다음은?

앱이 게시되면 다음을 수행할 수 있습니다.

  • 앱 상태 및 등급 모니터링 - 파트너 센터는 스토어 앱에 대한 크래시 분석, 사용자 등급 및 검토 관리를 제공합니다.
  • 스테이징된 롤아웃을 사용하여 릴리스 관리 - 스토어는 전체 릴리스 전에 사용자의 백분율로 새 버전 롤아웃을 지원합니다.
  • 원격 분석 설정 - Azure 애플리케이션 Insights 또는 다른 분석 SDK와 같은 크래시 및 사용 현황 분석 서비스를 통합하여 앱이 사용되는 방식을 이해하는 것이 좋습니다.
  • 사용자 피드백에 대한 정보 표시 — 파트너 센터는 스토어 리뷰를 표시합니다. 직접 다운로드 앱의 경우 피드백 채널(GitHub 문제, 전용 전자 메일 주소 또는 커뮤니티 포럼)을 고려합니다.