MakeAppx.exe를 사용하여 MSIX 패키지 또는 번들 만들기
MakeAppx.exe 는 앱 패키지(.msix 또는 .appx) 및 앱 패키지 번들(.msixbundle 또는 .appxbundle)을 모두 만듭니다. 또한 MakeAppx.exe 는 앱 패키지 또는 번들에서 파일을 추출하고 앱 패키지 및 번들을 암호화하거나 암호 해독합니다. 이 도구는 Windows 10 SDK에 포함되어 있으며 명령 프롬프트 또는 스크립트 파일에서 사용할 수 있습니다.
MakeApp.exe를 사용하여 데스크톱 앱을 패키지하는 방법에 대한 자세한 내용은 데스크톱 앱 패키지를 수동으로 참조하세요.
Important
Visual Studio를 사용하여 앱을 개발한 경우 Visual Studio 마법사를 사용하여 앱 패키지를 만드는 것이 좋습니다. 자세한 내용은 Visual Studio를 사용하여 UWP 앱 패키지 및 Visual Studio를 사용하여 소스 코드에서 데스크톱 앱 패키지 지정을 참조하세요.
Important
MakeAppx.exe는 파트너 센터에 제출하는 데 권장되는 유효한 앱 패키지 유형인 앱 패키지 업로드 파일(.appxupload 또는 .msixupload)을 만들지 않습니다. 앱 패키지 업로드 파일은 일반적으로 Visual Studio 패키징 프로세스의 일부로 만들어지지만 수동으로 만들 수도 있습니다.
MakeAppx.exe 사용
SDK의 설치 경로에 따라 MakeAppx.exe가 Windows 10 PC에 있는 위치입니다.
- C:\Program Files (x86)\Windows Kits\10\bin\<build number>\<architecture>\makeappx.exe
여기서 <아키텍처> 는 x86, x64, arm, arm64 또는 chpe입니다. 또는 다음 위치에 있을 수 있습니다.
- C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe
MakeAppx.exe 구문 및 옵션
일반 MakeAppx.exe 구문:
MakeAppx <command> [options]
다음 표에서는 MakeAppx.exe에 대한 명령을 설명합니다.
Command | 설명 |
---|---|
pack | 패키지를 만듭니다. |
unpack | 지정된 패키지의 모든 파일을 지정된 출력 디렉터리로 추출합니다. |
번들이 | 번들을 만듭니다. |
unbundle | 모든 패키지를 번들 또는 패키지 전체 이름의 이름을 따서 명명된 지정된 출력 경로 아래의 하위 디렉터리로 압축을 풉니다. |
암호화 | 지정된 출력 패키지/번들의 입력 패키지/번들에서 암호화된 앱 패키지 또는 번들을 만듭니다. |
decrypt | 지정된 출력 패키지/번들의 입력 앱 패키지/번들에서 암호 해독된 앱 패키지 또는 번들을 만듭니다. |
이 옵션 목록은 모든 명령에 적용됩니다.
옵션 | 설명 |
---|---|
/d | 입력, 출력 또는 콘텐츠 디렉터리를 지정합니다. |
/l | 지역화된 패키지에 사용됩니다. 지역화된 패키지의 기본 유효성 검사 여정입니다. 이 옵션은 모든 유효성 검사를 사용하지 않도록 설정하지 않고 특정 유효성 검사만 사용하지 않도록 설정합니다. |
/Kf | 지정된 키 파일의 키를 사용하여 패키지 또는 번들을 암호화하거나 암호 해독합니다. /kt에서는 사용할 수 없습니다. |
/Kt | 전역 테스트 키를 사용하여 패키지 또는 번들을 암호화하거나 암호 해독합니다. /kf와 함께 사용할 수 없습니다. |
/아니요 | 출력 파일이 있는 경우 덮어쓰기를 방지합니다. 이 옵션 또는 /o 옵션을 지정하지 않으면 사용자에게 파일을 덮어쓸지 묻는 메시지가 표시됩니다. |
/네바다 | 의미 체계 유효성 검사를 건너뜁니다. 이 옵션을 지정하지 않으면 도구에서 패키지의 전체 유효성 검사를 수행합니다. |
/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가 포함됩니다. |
앱 패키지 만들기
앱 패키지는 .msix 또는 .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 | 모든 파일을 번들 또는 패키지 전체 이름의 이름을 따서 명명된 지정된 출력 경로 아래의 하위 디렉터리로 압축 풀기/번들 해제 |
다음 사용 예제에서는 unpack 및 unbundle 명령에 대한 몇 가지 가능한 구문 옵션을 보여 줍니다.
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
다음 블록에는 unpack 및 unbundle 명령을 사용하는 예제가 포함되어 있습니다.
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
다음 블록에는 암호화 및 암호 해독 명령을 사용하는 예제가 포함되어 있습니다.
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]" 문자열이 포함된 줄과 각 패키지를 암호화할 키를 설명하는 줄로 시작해야 합니다. 각 키는 따옴표로 된 문자열 쌍으로 표시되며 공백이나 탭으로 구분됩니다. 첫 번째 문자열은 base64로 인코딩된 32 바이트 키 ID를 나타내고 두 번째 문자열은 base64로 인코딩된 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 는 가장 일반적인 배포 오류를 catch하고 앱 패키지가 유효한지 확인하는 데 도움이 되도록 설계된 제한된 수식 유효성 검사를 수행합니다. MakeAppx.exe를 사용하는 동안 유효성 검사를 건너뛰려면 /nv 옵션을 참조하세요.
이 유효성 검사는 다음을 보장합니다.
- 패키지 매니페스트에서 참조되는 모든 파일은 앱 패키지에 포함됩니다.
- 애플리케이션에는 두 개의 동일한 키가 없습니다.
- 애플리케이션은 SMB, FILE, MS-WWA-WEB, MS-WWA 목록에서 사용할 수 없는 프로토콜을 등록하지 않습니다.
일반적인 오류만 catch하도록 설계되어 있으므로 완전한 의미 체계 유효성 검사는 아닙니다. MakeAppx.exe에서 빌드된 패키지는 설치 가능하지 않습니다.