MakeAppx.exe 사용하여 MSIX 패키지 또는 번들 만들기

MakeAppx.exe 앱 패키지(.msix 또는 .appx)와 앱 패키지 번들(.msixbundle 또는 .appxbundle)을 모두 만듭니다. 또한MakeAppx.exe 앱 패키지 또는 번들에서 파일을 추출하고 앱 패키지 및 번들을 암호화하거나 암호 해독합니다. 이 도구는 Windows 10 SDK에 포함되어 있으며 명령 프롬프트 또는 스크립트 파일에서 사용할 수 있습니다.

MakeApp.exe 사용하여 데스크톱 앱을 패키지하는 방법에 대한 자세한 내용은 데스크톱 앱을 수동으로 패키지합니다.

중요

Visual Studio 사용하여 앱을 개발한 경우 Visual Studio 마법사를 사용하여 앱 패키지를 만드는 것이 좋습니다. 자세한 내용은 Visual Studio 사용하여 UWP 앱 패키지 및 Visual Studio 사용하여 소스 코드에서 데스크톱 앱 패키지를 참조하세요.

중요

MakeAppx.exe 파트너 센터 제출에권장되는 유효한 앱 패키지 유형인 앱 패키지 업로드 파일(.appxupload 또는 .msixupload)을만들지 않습니다. 앱 패키지 업로드 파일은 일반적으로 Visual Studio 패키징 프로세스의 일부로 만들어지지만수동으로 만들 수도 있습니다.

MakeAppx.exe 사용

SDK의 설치 경로에 따라MakeAppx.exeWindows 10 PC에 있습니다.

  • x86: C:\Program Files (x86)\Windows Kits\10\bin\ < build number >\x86\makeappx.exe
  • x64: C:\Program Files (x86)\Windows Kits\10\bin\ < build number >\x64\makeappx.exe

이 도구의 ARM 버전은 없습니다.

MakeAppx.exe 구문 및 옵션

일반 MakeAppx.exe 구문:

MakeAppx <command> [options]      

다음 표에서는 MakeAppx.exe명령에 대해 설명합니다.

Command 설명
pack 패키지를 만듭니다.
압축 풀기 지정된 패키지의 모든 파일을 지정된 출력 디렉터리로 추출합니다.
번들 번들을 만듭니다.
unbundle 모든 패키지의 압축을 번들 또는 패키지 전체 이름을 따라 명명된 지정된 출력 경로 아래의 하위Directory로 압축을 풉니다.
encrypt 지정된 출력 패키지/번들의 입력 패키지/번들에서 암호화된 앱 패키지 또는 번들을 만듭니다.
decrypt 지정된 출력 패키지/번들의 입력 앱 패키지/번들에서 암호 해독된 앱 패키지 또는 번들을 만듭니다.

이 옵션 목록은 모든 명령에 적용됩니다.

옵션 설명
/d 입력, 출력 또는 콘텐츠 디렉터리를 지정합니다.
/l 지역화된 패키지에 사용됩니다. 지역화된 패키지에 대한 기본 유효성 검사 여정입니다. 이 옵션은 모든 유효성 검사를 사용하지 않도록 설정하지 않고 해당 특정 유효성 검사만 사용하지 않도록 설정합니다.
/kf 지정된 키 파일의 키를 사용하여 패키지 또는 번들을 암호화하거나 암호 해독합니다. /kt와 함께 사용할 수 없습니다.
/kt 전역 테스트 키를 사용하여 패키지 또는 번들을 암호화하거나 암호 해독합니다. /kf와 함께 사용할 수 없습니다.
/no 출력 파일이 있는 경우 덮어쓰지 않도록 합니다. 이 옵션 또는 /o 옵션을 지정하지 않으면 사용자에게 파일을 덮어 쓸지 묻는 메시지가 표시됩니다.
/nv 의미 체계 유효성 검사를 건너뜁니다. 이 옵션을 지정하지 않으면 도구에서 패키지의 전체 유효성 검사를 수행합니다.
/o 출력 파일이 있는 경우 덮어씁니다. 이 옵션 또는 /no 옵션을 지정하지 않으면 사용자에게 파일을 덮어쓰고 싶은지 묻는 메시지가 표시됩니다.
/p 앱 패키지 또는 번들을 지정합니다.
/v 콘솔에 자세한 로깅 출력을 사용하도록 설정합니다.
/? 도움말 텍스트를 표시합니다.

다음 목록에는 가능한 인수가 포함되어 있습니다.

Argument 설명
<출력 패키지 이름> 만든 패키지의 이름입니다. .msix 또는 .appx가 추가된 파일 이름입니다.
<암호화된 출력 패키지 이름> 생성된 암호화된 패키지의 이름입니다. .emsix 또는 .eappx가 추가된 파일 이름입니다.
<입력 패키지 이름> 패키지의 이름입니다. .msix 또는 .appx가 추가된 파일 이름입니다.
<암호화된 입력 패키지 이름> 암호화된 패키지의 이름입니다. .emsix 또는 .eappx가 추가된 파일 이름입니다.
<출력 번들 이름> 만든 번들의 이름입니다. .msixbundle 또는 .appxbundle이 추가된 파일 이름입니다.
<암호화된 출력 번들 이름> 생성된 암호화된 번들의 이름입니다. .emsixbundle 또는 .eappxbundle이 추가된 파일 이름입니다.
<입력 번들 이름> 번들의 이름입니다. .msixbundle 또는 .appxbundle이 추가된 파일 이름입니다.
<암호화된 입력 번들 이름> 암호화된 번들의 이름입니다. .emsixbundle 또는 .eappxbundle이 추가된 파일 이름입니다.
<콘텐츠 디렉터리> 앱 패키지 또는 번들 콘텐츠의 경로입니다.
<매핑 파일> 패키지 원본 및 대상을 지정하는 파일 이름입니다.
<출력 디렉터리> 출력 패키지 및 번들에 대한 디렉터리 경로입니다.
<키 파일> 암호화 또는 암호 해독을 위한 키가 포함된 파일의 이름입니다.
<알고리즘 ID> 블록 맵을 만들 때 사용 되는 알고리즘입니다. 유효한 알고리즘은 SHA256 (기본값), SHA384, SHA512입니다.

앱 패키지 만들기

앱 패키지는. m 6 또는 .appx 패키지 파일에 패키지 된 앱 파일의 전체 집합입니다. Pack 명령을 사용 하 여 앱 패키지를 만들려면 패키지 위치에 대 한 콘텐츠 디렉터리 또는 매핑 파일을 제공 해야 합니다. 패키지를 만드는 동안 암호화할 수도 있습니다. 패키지를 암호화 하려면/ep를 사용 하 고 키 파일 (/kf) 또는/kt (전역 테스트 키)를 사용 하는 경우를 지정 해야 합니다. 암호화 된 패키지를 만드는 방법에 대 한 자세한 내용은 패키지 또는 번들 암호화 또는 암호 해독을 참조 하세요.

Pack 명령과 관련 된 옵션:

옵션 설명
/f 매핑 파일을 지정 합니다.
/h 블록 맵을 만들 때 사용할 해시 알고리즘을 지정 합니다. Pack 명령에만 사용할 수 있습니다. 유효한 알고리즘은 SHA256 (기본값), SHA384, SHA512입니다.
/m 출력 앱 패키지 또는 리소스 패키지의 매니페스트를 생성 하기 위한 기반으로 사용할 입력 응용 프로그램 매니페스트의 경로를 지정 합니다. 이 옵션을 사용 하는 경우/f를 사용 하 고 매핑 파일에 [ResourceMetadata] 섹션을 포함 하 여 생성 된 매니페스트에 포함할 리소스 차원을 지정 해야 합니다.
/nc 패키지 파일의 압축을 방지 합니다. 기본적으로 파일은 검색 된 파일 형식에 따라 압축 됩니다.
/r 리소스 패키지를 빌드합니다. 이 옵션은/m과 함께 사용 해야 하며/l 옵션을 사용 하는 것을 의미 합니다.

다음 사용 예에서는 pack 명령에 사용할 수 있는 몇 가지 구문 옵션을 보여 줍니다.

MakeAppx pack [options] /d <content directory> /p <output package name>
MakeAppx pack [options] /f <mapping file> /p <output package name>
MakeAppx pack [options] /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /r /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kf <key file>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kt

다음은 pack 명령에 대 한 명령줄 예제를 보여 줍니다.

MakeAppx pack /v /h SHA256 /d "C:\My Files" /p MyPackage.msix
MakeAppx pack /v /o /f MyMapping.txt /p MyPackage.msix
MakeAppx pack /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p AppPackage.msix
MakeAppx pack /r /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p ResourcePackage.msix
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kf MyKeyFile.txt
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kt

앱 번들 만들기

앱 번들은 앱 패키지와 유사 하지만 번들은 사용자가 다운로드 하는 앱의 크기를 줄일 수 있습니다. 앱 번들은 언어별 자산, 다양 한 이미지 배율 자산 또는 특정 버전의 Microsoft DirectX에 적용 되는 리소스 (예:)에 유용 합니다. 암호화 된 앱 패키지를 만들 때와 마찬가지로, 앱 번들을 번들로 암호화할 수도 있습니다. 앱 번들을 암호화 하려면/ep 옵션을 사용 하 고 키 파일 (/kf) 또는/kt (전역 테스트 키)를 사용 하는 경우를 지정 합니다. 암호화 된 번들을 만드는 방법에 대 한 자세한 내용은 패키지 또는 번들 암호화 또는 암호 해독을 참조 하세요.

번들 명령과 관련 된 옵션은 다음과 같습니다.

옵션 설명
/bv 번들의 버전 번호를 지정 합니다. 버전 번호는 < 주 >< 형식으로 마침표로 구분 된 네 부분으로 구성 되어야 합니다. 부 > . < 빌드 > . < 수정 버전 > .
/f 매핑 파일을 지정 합니다.

번들 버전을 지정 하지 않거나 "0.0.0.0"으로 설정 하면 현재 날짜/시간을 사용 하 여 번들이 생성 됩니다.

다음 사용 예에서는 번들 명령에 대 한 몇 가지 가능한 구문 옵션을 보여 줍니다.

MakeAppx bundle [options] /d <content directory> /p <output bundle name>
MakeAppx bundle [options] /f <mapping file> /p <output bundle name>
MakeAppx bundle [options] /d <content directory> /ep <encrypted output bundle name> /kf MyKeyFile.txt
MakeAppx bundle [options] /f <mapping file> /ep <encrypted output bundle name> /kt

다음 블록에는 번들 명령에 대 한 예제가 포함 되어 있습니다.

MakeAppx bundle /v /d "C:\My Files" /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kf MyKeyFile.txt
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kt

패키지 또는 번들에서 파일 추출

앱을 패키지 하 고 번들 하는 것 외에도 기존 패키지의 압축을 풀거나 제거할 수 MakeAppx.exe . 압축을 푼 파일의 대상으로 콘텐츠 디렉터리를 제공 해야 합니다. 암호화 된 패키지 또는 번들에서 파일을 추출 하려는 경우에는/ep 옵션을 사용 하 여 파일의 암호를 해독 하 고 압축을 해제 하 고 키 파일 (/kf) 또는/kt (전역 테스트 키)를 사용 하 여 암호를 해독 해야 할지 여부를 지정할 수 있습니다. 패키지 또는 번들의 암호를 해독 하는 방법에 대 한 자세한 내용은 패키지 또는 번들 암호화 또는 암호 해독을 참조 하세요.

압축 풀기번들로 묶인 명령과 관련 한 옵션:

옵션 설명
/nd 패키지/번들의 압축을 푸는 경우 암호 해독을 수행 하지 않습니다.
/pfn 압축을 풀고 지정 된 출력 경로 아래의 하위 디렉터리에 모든 파일을 번들로 묶습니다.

다음 사용 예에서는 압축 풀기번들로 묶인 명령에 대 한 몇 가지 가능한 구문 옵션을 보여 줍니다.

MakeAppx unpack [options] /p <input package name> /d <output directory>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kf <key file>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kt

MakeAppx unbundle [options] /p <input bundle name> /d <output directory>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kf <key file>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kt

다음 블록에는 압축 풀기번들로 묶인 명령을 사용 하는 예가 포함 되어 있습니다.

MakeAppx unpack /v /p MyPackage.msix /d "C:\My Files"
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kt

MakeAppx unbundle /v /p MyBundle.msixbundle /d "C:\My Files"
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kt

패키지 또는 번들 암호화 또는 암호 해독

MakeAppx.exe 도구는 기존 패키지 또는 번들을 암호화 하거나 암호 해독할 수도 있습니다. 패키지 이름, 출력 패키지 이름 및 암호화 또는 암호 해독이 키 파일 (/kf)을 사용 해야 하는지 아니면/kt (전역 테스트 키)를 사용 해야 하는지 여부를 제공 해야 합니다.

암호화 및 암호 해독은 Visual Studio 패키징 마법사를 통해 사용할 수 없습니다.

암호화암호 해독 명령과 관련 한 옵션:

옵션 설명
/ep 암호화 된 앱 패키지 또는 번들을 지정 합니다.

다음 사용 예에서는 암호화암호 해독 명령에 대 한 몇 가지 가능한 구문 옵션을 보여 줍니다.

MakeAppx encrypt [options] /p <package name> /ep <output package name> /kf <key file>
MakeAppx encrypt [options] /p <package name> /ep <output package name> /kt

MakeAppx decrypt [options] /ep <package name> /p <output package name> /kf <key file>
MakeAppx decrypt [options] /ep <package name> /p <output package name> /kt

다음 블록에는 encrypt암호 해독 명령을 사용 하기 위한 예제가 포함 되어 있습니다.

MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

MakeAppx.exe decrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe decrypt p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

키 파일

키 파일은 "[Keys]" 문자열이 포함 된 줄로 시작 하 고 각 패키지를 암호화 하는 데 사용 되는 키를 설명 하는 줄로 시작 해야 합니다. 각 키는 공백이 나 탭으로 구분 된, 따옴표로 묶인 문자열 쌍으로 표현 됩니다. 첫 번째 문자열은 b a s e 64로 인코딩된 32 바이트 키 ID를 나타내고, 두 번째 문자열은 b a s e 64로 인코딩된 32 바이트 암호화 키를 나타냅니다. 키 파일은 간단한 텍스트 파일 이어야 합니다.

키 파일의 예:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

매핑 파일

매핑 파일은 "[Files]" 문자열을 포함 하는 줄로 시작 하 고 패키지에 추가할 파일을 설명 하는 줄로 시작 해야 합니다. 각 파일은 공백이 나 탭으로 구분 된, 따옴표 안에 있는 경로 쌍으로 설명 됩니다. 각 파일은 디스크의 원본 및 패키지의 대상 (패키지)을 나타냅니다. 매핑 파일은 간단한 텍스트 파일 이어야 합니다.

매핑 파일의 예 (/m 옵션 없음):

[Files]
"C:\MyApp\StartPage.html"               "default.html"
"C:\Program Files (x86)\example.txt"    "misc\example.txt"
"\\MyServer\path\icon.png"              "icon.png"
"my app files\readme.txt"               "my app files\readme.txt"
"CustomManifest.xml"                    "AppxManifest.xml"

매핑 파일을 사용할 때 /m 옵션을 사용할지 여부를 선택할 수 있습니다. /M 옵션을 사용 하면 사용자는 생성 된 매니페스트에 포함할 매핑 파일의 리소스 메타 데이터를 지정할 수 있습니다. /M 옵션을 사용 하는 경우 매핑 파일에는 "[ResourceMetadata]" 줄로 시작 하는 섹션과 "ResourceDimensions" 및 "ResourceId"를 지정 하는 줄이 포함 되어야 합니다. 앱 패키지에 여러 "ResourceDimensions"이 포함 될 수 있지만 "ResourceId"는 하나만 있을 수 있습니다.

매핑 파일의 예 (/m 옵션 사용):

[ResourceMetadata]
"ResourceDimensions"                    "language-en-us"
"ResourceId"                            "English"

[Files]
"images\en-us\logo.png"                 "en-us\logo.png"
"en-us.pri"                             "resources.pri"

MakeAppx.exe에서 수행 하는 의미 체계 유효성 검사

MakeAppx.exe 은 가장 일반적인 배포 오류를 포착 하 고 앱 패키지가 유효한 지 확인 하도록 설계 된 제한 된 sematic 유효성 검사를 수행 합니다. MakeAppx.exe를 사용 하는 동안 유효성 검사를 건너뛰려면/nv 옵션을 참조 하세요.

이 유효성 검사를 수행 하면 다음이 수행 됩니다.

  • 패키지 매니페스트에서 참조 되는 모든 파일은 앱 패키지에 포함 됩니다.
  • 응용 프로그램에 두 개의 동일한 키가 없는 경우
  • 응용 프로그램은이 목록에서 사용할 수 없는 프로토콜에 대해 등록 하지 않습니다. SMB, 파일, MS-WWA-웹, MS-WWA.

이는 일반적인 오류를 catch 하기 위한 것 이므로 완전 한 의미 체계 유효성 검사는 아닙니다. MakeAppx.exe 로 빌드된 패키지는 설치 되지 않을 수도 있습니다.