Skip to content

MSIX 제출 전 테스트 가이드: 패키징 문제를 스토어 인증에서야 발견하지 마세요

2026-06-01

Tags: Windows · Microsoft Store · MSIX · 스토어 함정


스토어 함정 #4에서는 .NET Trimming이 WinUI 3 기능을 조용히 비활성화하는 문제를 다뤘습니다 — 로컬 Debug에서는 잘 작동하던 것이, Release 패키지를 제출하니 거부당했습니다. 이런 문제들의 공통점은: 제출 전에 패키지된 산출물을 로컬에서 검증했다면 많은 함정을 미리 발견할 수 있었다는 것입니다. 물론 모든 문제를 미리 발견할 수 있는 건 아닙니다 (예: 종속성 패키지로 인한 시작 메뉴 유령 항목은 로컬에서 재현하기 어렵습니다). 하지만 적어도 대부분은 걸러낼 수 있습니다.

이 글에서는 WACK 인증, 자체 서명 인증서 설치, 종속성 설치, 깨끗한 가상 머신 테스트를 포함한 MSIX 제출 전 로컬 검증 프로세스를 정리합니다.

1단계: WACK(Windows 앱 인증 키트) 실행

WACK은 Microsoft에서 제공하는 로컬 사전 인증 도구입니다. 패키지에 대해 일련의 검사를 실행하여 Store 인증 테스트의 일부를 시뮬레이션합니다.

몇 가지 핵심 사항:

  • Release 패키지만 검증 가능합니다. Debug 패키지는 안 됩니다 — 이 덕분에 Release 빌드를 테스트해야만 합니다
  • WACK은 Microsoft에서 더 이상 사용되지 않음(deprecated)으로 표시되었지만(추가 업데이트 없음), 제출 전 선택적 로컬 검사에 여전히 사용할 수 있습니다. 공식 인증은 Store 제출 후 자동으로 실행됩니다
  • WACK 통과가 반드시 Store 심사 통과를 보장하지는 않지만, 다수의 기본적인 문제(API 규정 준수, 성능, 보안 등)를 걸러내는 데 도움이 됩니다

사용 방법: Visual Studio의 «패키지 및 게시» 마법사에서 «패키지 선택 및 구성» 단계에서 맨 아래의 «Windows 앱 인증 키트를 사용하여 앱의 유효성을 검사하기 위해 프로젝트 빌드»를 선택합니다. 패키징이 완료되면 «Windows 앱 인증 키트 시작» 버튼이 나타납니다. 또는 시작 메뉴에서 Windows App Certification Kit을 검색하여 수동으로 시작할 수 있습니다.

2단계: 자체 서명 인증서가 포함된 Test 패키지 만들기

이 단계는 좀 복잡합니다.

MSIX 패키지는 설치하려면 서명되어야 합니다. 개발 중 Visual Studio는 임시 인증서를 사용하지만, 생성된 MSIX 패키지 자체에 사용 가능한 인증서가 포함되어 있지 않을 수 있습니다. 실제 프로세스는 다음과 같습니다:

먼저 사이드로딩 모드로 한 번 패키징

  1. 프로젝트 우클릭 → 패키지 및 게시
  2. 사이드로딩 선택 (Microsoft Store 선택하지 않음)
  3. 서명 인증서 선택 후 패키징 완료

그다음 Store 모드로 Test 패키지 생성

  1. 다시 패키지 및 게시, 이번에는 Microsoft Store (PublisherName의 AppName) 선택
  2. 이렇게 해야 생성된 Test 패키지(AppPackages 디렉토리 안의 _Test 폴더)에 자체 서명 인증서가 포함됩니다

1-3단계를 건너뛰고 바로 Store 패키지를 만들면, MSIX의 인증서가 비어 있습니다 — 꽤 까다로운 세부 사항입니다.

3단계: 인증서 설치

인증서가 포함된 Test 패키지를 받은 후:

인증서 설치

  1. .msix 파일 우클릭 → 속성디지털 서명
  2. 서명 선택 → 세부 정보인증서 보기
  3. 인증서 설치로컬 컴퓨터 선택 → 신뢰할 수 있는 사용자(Trusted People) 저장소에 배치

참고: 인증서의 Publisher(CN)이 Package.appxmanifest<Publisher>와 일치해야 합니다. 그렇지 않으면 설치에 실패합니다.

4단계: 종속성 및 MSIX 패키지 설치

Windows App SDK 프로젝트가 framework-dependent 모드(기본값)인 경우, 앱 실행에는 Windows App Runtime 런타임이 필요합니다. Store 배포 시 종속성이 자동으로 처리되지만, 로컬 테스트에서는 수동으로 설치해야 합니다.

다행히 Test 패키지의 _Test 폴더에 Dependencies 하위 디렉토리가 포함되어 있으며, 아키텍처별로 종속성 패키지가 정리되어 있습니다:

AppPackages/
  MyApp_1.0.0.0_x64_Test/
    Dependencies/
      x64/
        Microsoft.WindowsAppRuntime.1.8.msix
        ...
    MyApp_1.0.0.0_x64.msix

설치 순서: Dependencies의 런타임을 먼저 설치한 다음, 앱 본체를 설치하세요.

self-contained 모드(.csproj에서 <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> 설정)를 사용하는 경우, 런타임이 이미 앱에 포함되어 있으므로 추가 종속성 설치가 필요 없습니다.

5단계: 깨끗한 가상 머신에서 전체 프로세스 검증

개발 머신에는 너무 많은 것이 설치되어 있습니다 — 각종 SDK, 런타임, 캐시 등 — 개발자의 환경에서 앱이 작동한다고 해서 사용자 환경에서도 작동한다는 보장은 없습니다. 깨끗한 환경에서 전체 프로세스를 테스트하는 것이 좋습니다.

가상 머신 옵션

둘 다 사용 가능합니다:

  • Hyper-V Quick Create: Microsoft가 공식 추천하는 방식. 시작 메뉴에서 «Hyper-V Quick Create»를 검색하고 MSIX Packaging Tool Environment를 선택하여 생성
  • VMware: 제가 실제로 사용하는 방식. 깨끗한 Windows 10/11 VM을 만들고 스냅샷을 찍은 뒤, 매 테스트 전에 깨끗한 상태로 복원

어떤 것을 선택하든 핵심 목표는 하나입니다: 사용자의 첫 설치 환경에 최대한 가깝게 만드는 것.

깨끗한 VM에서 확인할 사항

  1. 자체 서명 인증서 설치 (3단계 프로세스)
  2. 종속성 패키지 설치 (4단계)
  3. 앱 본체 설치
  4. 앱 실행 후 핵심 기능이 정상 작동하는지 확인
  5. 시작 메뉴, 작업 표시줄 트레이, 제거 등이 정상인지 확인

체크리스트

Store에 제출하기 전에 이 목록을 확인하세요:

  • [ ] Release 구성으로 Test 패키지 생성
  • [ ] WACK 실행, 심각한 오류 없음 확인
  • [ ] Test 패키지에 자체 서명 인증서 포함 확인 (사이드로딩 모드로 먼저 패키징)
  • [ ] 인증서를 Local Machine → Trusted People에 설치
  • [ ] 깨끗한 VM에서 전체 프로세스 검증: 인증서 설치 → 종속성 설치 → 앱 설치 → 기능 테스트
  • [ ] framework-dependent 모드에서 종속성 패키지가 정상적으로 설치되는지 확인
  • [ ] 앱이 정상적으로 시작되고, 핵심 기능이 사용 가능하며, 시작 메뉴/제거 등이 정상 작동하는지 확인

이 글은 스토어 함정 시리즈의 보충 읽을거리입니다.