앱 패키지(MakeAppx.exe)

 

MakeAppx.exe(앱 패키지)는 디스크의 파일에서 앱 패키지를 만들거나 앱 패키지에서 디스크로 파일을 추출합니다. Windows 8.1 시작해서 앱 패키지는 디스크의 앱 패키지에서 앱 패키지 번들을 만들거나 앱 패키지 번들에서 디스크로 앱 패키지를 추출합니다. Microsoft Visual Studio 및 Windows 8용 Windows SDK(소프트웨어 개발 키트) 또는 Windows 8.1 이상용 Windows SDK(소프트웨어 개발 키트)에 포함되어 있습니다. 개발자를 위한 다운로드를 방문하여 다운로드합니다.

MakeAppx.exe 도구는 일반적으로 운영 체제 버전별 위치에 있습니다.

  • C:\Program Files (x86)\Windows Kits\10\bin<빌드 번호><아키텍처>\makeappx.exe

여기서 <아키텍처> = x86, x64, arm, ar64 또는 chpe. 또는 다음 위치에 있을 수 있습니다.

C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe

앱 패키지 사용

참고

상대 경로는 도구 전체에서 지원됩니다.

 

디렉터리 구조를 사용하여 패키지를 만들려면

앱에 대한 모든 페이로드 파일이 포함된 디렉터리의 루트에 AppxManifest.xml 배치합니다. 앱 패키지에 대해 동일한 디렉터리 구조가 만들어지고 배포 시 패키지가 추출될 때 사용할 수 있습니다.

  1. 모든 파일을 단일 디렉터리 구조에 배치하여 원하는 대로 하위 디렉터리를 만듭니다.

  2. 유효한 패키지 매니페스트를 만들고 AppxManifest.xml 루트 디렉터리에 배치합니다.

  3. 다음 명령을 실행합니다.

    MakeAppx pack /dinput_directorypath/pfilepath.appx

매핑 파일을 사용하여 패키지를 만들려면

  1. AppxManifest.xml 유효한 패키지 매니페스트를 만듭니다.

  2. 매핑 파일을 만듭니다. 첫 번째 줄에는 문자열 [Files]가 포함되고 뒤에 있는 줄은 따옴표 붙은 문자열에서 원본(디스크) 및 대상(패키지) 경로를 지정합니다.

    [Files]
    "C:\MyApp\StartPage.htm"     "default.html"
    "C:\MyApp\readme.txt"        "doc\readme.txt"
    "\\MyServer\path\icon.png"   "icon.png"
    "MyCustomManifest.xml"       "AppxManifest.xml"
    
  3. 다음 명령을 실행합니다.

    MakeAppx pack /fmapping_filepath/pfilepath.appx

SignTool을 사용하여 패키지에 서명하려면

  1. 인증서 만들기 매니페스트에 나열된 게시자는 서명 인증서의 게시자 주체 정보와 일치해야 합니다. 서명 인증서를 만드는 방법에 대한 자세한 내용은 앱 패키지 서명 인증서를 만드는 방법을 참조하세요.

  2. SignTool.exe 실행하여 패키지에 서명합니다.

    SignTool sign /a /v /fdhashAlgorithm/fcertFileNamefilepath.appx

    hashAlgorithm은 앱이 패키지되었을 때 블록맵을 만드는 데 사용되는 해시 알고리즘과 일치해야 합니다. MakeAppx 패키징 유틸리티를 사용하면 기본 Appx 블록맵 해시 알고리즘이 SHA256입니다. SHA256을 파일 다이제스트(/fd) 알고리즘으로 지정하는 SignTool.exe 실행합니다.

    SignTool sign /a /v /fd SHA256 /fcertFileNamefilepath.appx

    패키지에 서명하는 방법에 대한 자세한 내용은 SignTool을 사용하여 앱 패키지에 서명하는 방법을 참조하세요.

패키지에서 파일을 추출하려면

  1. 다음 명령을 실행합니다.

    MakeAppx unpack /pfile.appx /doutput_directory

  2. 압축 해제된 패키지의 구조는 설치된 패키지와 동일합니다.

디렉터리 구조를 사용하여 패키지 번들을 만들려면

번들 명령을 사용하여 콘텐츠 디렉터리>(하위 폴더 포함)의 <모든 패키지를 추가하여 출력 번들 이름>에 <앱 번들을 만듭니다. 콘텐츠 디렉터리에> 번들 매니페스트가 포함된 경우 <AppxBundleManifest.xml 무시됩니다.

  1. 모든 패키지를 단일 디렉터리 구조에 배치하여 원하는 대로 하위 디렉터리를 만듭니다.

  2. 다음 명령을 실행합니다.

    MakeAppx 번들 /dinput_directorypath/pfilepath.appxbundle

매핑 파일을 사용하여 패키지 번들을 만들려면

번들 명령을 사용하여 매핑 파일> 내<의 패키지 목록에서 모든 패키지를 추가하여 출력 번들 이름>에 앱 번들을 <만듭니다. 매핑 파일에> 번들 매니페스트가 포함된 경우 <AppxBundleManifest.xml 무시됩니다.

  1. <매핑 파일을> 만듭니다. 첫 번째 줄에는 문자열 [Files]가 포함되고 다음 줄은 번들에 추가할 패키지를 지정합니다. 각 패키지는 공백 또는 탭으로 구분된 따옴표로 된 경로 쌍으로 설명됩니다. 경로 쌍은 패키지의 원본(디스크) 및 대상(번들)을 나타냅니다. 모든 대상 패키지 이름에는 .appx 확장명이 있어야 합니다.

        [Files]
        "C:\MyApp\MyApp_x86.appx"                 "MyApp_x86.appx"
        "C:\Program Files (x86)\ResPack.appx"    "resources\resPack.appx"
        "\\MyServer\path\ResPack.appx"           "Respack.appx"
        "my app files\respack.appx"              "my app files\respack.appx"
    
  2. 다음 명령을 실행합니다.

    MakeAppx 번들 /fmapping_filepath/pfilepath.appxbundle

번들에서 패키지를 추출하려면

  1. 다음 명령을 실행합니다.

    MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

  2. 압축을 풀고 있는 번들은 설치된 패키지 번들로 구성된 구조가 동일합니다.

키 파일을 사용하여 패키지를 암호화하려면

  1. 키 파일을 만듭니다. 키 파일은 "[Keys]" 문자열이 포함된 줄과 패키지를 암호화할 키를 설명하는 줄로 시작해야 합니다. 각 키는 공백 또는 탭으로 구분된 따옴표로 된 문자열 쌍으로 설명됩니다. 첫 번째 문자열은 키 ID를 나타내고 두 번째 문자열은 16진수 형식의 암호화 키를 나타냅니다.

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. 다음 명령을 실행합니다.

    MakeAppx.exe /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name.txt

  3. 입력 패키지는 제공된 키 파일을 사용하여 지정된 암호화된 패키지로 암호화됩니다.

전역 테스트 키를 사용하여 패키지를 암호화하려면

  1. 다음 명령을 실행합니다.

    MakeAppx.exe /ppackage_name.appx /epencrypted_package_name.eappx /kt 암호화

  2. 입력 패키지는 전역 테스트 키를 사용하여 지정된 암호화된 패키지로 암호화됩니다.

키 파일을 사용하여 패키지의 암호를 해독하려면

  1. 키 파일을 만듭니다. 키 파일은 "[Keys]" 문자열이 포함된 줄과 패키지를 암호화할 키를 설명하는 줄로 시작해야 합니다. 각 키는 공백 또는 탭으로 구분된 따옴표로 된 문자열 쌍으로 설명됩니다. 첫 번째 문자열은 base64로 인코딩된 32 바이트 키 ID를 나타내고 두 번째 문자열은 base64로 인코딩된 32 바이트 암호화 키를 나타냅니다.

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. 다음 명령을 실행합니다.

    MakeAppx.exe /ppackage_name.appx /epunencrypted_package_name.eappx /kfkeyfile_name.txt

  3. 입력 패키지는 제공된 키 파일을 사용하여 지정된 암호화되지 않은 패키지로 암호 해독됩니다.

전역 테스트 키를 사용하여 패키지의 암호를 해독하려면

  1. 다음 명령을 실행합니다.

    MakeAppx.exe /ppackage_name.appx /epunencrypted_package_name.eappx /kt 암호 해독

  2. 입력 패키지는 전역 테스트 키를 사용하여 지정된 암호화되지 않은 패키지로 암호 해독됩니다.

사용량

/d, /f 또는 /ep를 사용하는 명령줄 인수 /p는 항상 필요합니다. /d, /f/ep는 함께 사용할 수 없습니다.

MakeAppx pack [options]/p<output package name>/d<content directory>

MakeAppx pack [options]/p<output package name>/f<mapping file>

MakeAppx 압축 풀기 [옵션]/p<입력 패키지 이름>/d<출력 디렉터리>

MakeAppx 번들 [옵션]/p<출력 번들 이름>/d<콘텐츠 디렉터리>

MakeAppx 번들 [옵션]/p<출력 번들 이름>/f<매핑 파일>

MakeAppx unbundle [options]/p<input bundle name>/d<output directory>

MakeAppx encrypt [options]/p<input package name>/ep<output package name>

MakeAppx 암호 해독 [옵션]/p<입력 패키지 이름>/ep<출력 패키지 이름>

명령줄 구문

MakeAppx에 대한 명령줄 일반적인 사용 구문은 다음과 같습니다.

MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h/kf/kt/l/o/no/nv/v/pfn/?]

MakeAppx 는 패키지의 파일을 압축하거나 압축을 풀거나, 번들의 패키지를 번들 또는 번들 해제하거나, 지정된 입력 디렉터리 또는 매핑 파일에서 앱 패키지 또는 번들을 암호화하거나 해독합니다. MakeAppx 팩, MakeAppx unpack, MakeAppx번들, MakeAppxunbundle, MakeAppx encrypt 또는 MakeAppx 암호 해독에 적용되는 매개 변수 목록은 다음과 같습니다.

/l

이 옵션은 지역화된 패키지에 사용됩니다. 지역화된 패키지에 대한 기본 유효성 검사 여정입니다. 이 옵션은 모든 유효성 검사를 사용하지 않도록 설정하지 않고 특정 유효성 검사만 사용하지 않도록 설정합니다.

/O

출력 파일이 있는 경우 덮어씁니다. 이 옵션 또는 /no 옵션을 지정하지 않으면 사용자에게 파일을 덮어쓸지 묻는 메시지가 표시됩니다.

이 옵션은 /no와 함께 사용할 수 없습니다.

/아니요

출력 파일이 있는 경우 덮어쓰기를 방지합니다. 이 옵션 또는 /o 옵션을 지정하지 않으면 사용자에게 파일을 덮어쓸지 묻는 메시지가 표시됩니다.

/o에서는 이 옵션을 사용할 수 없습니다.

/네바다

의미 체계 유효성 검사를 건너뜁니다. 이 옵션을 지정하지 않으면 도구는 패키지의 전체 유효성 검사를 수행합니다.

/V

콘솔에 자세한 로깅 출력을 사용하도록 설정합니다.

/?

도움말 텍스트를 표시합니다.

MakeAppx 팩 , MakeAppx 압축 풀 기, MakeAppx 번들, MakeAppx unbundle, MakeAppx encryptMakeAppx 암호 해독 은 상호 배타적인 명령입니다. 각 명령에 특별히 적용되는 명령줄 매개 변수는 다음과 같습니다.

MakeAppx pack [h]

패키지를 만듭니다.

/h알고리즘

블록 맵을 만들 때 사용할 해시 알고리즘을 지정합니다. 알고리즘에 유효한 값은 다음과 같습니다.

SHA256(기본값)
SHA384
SHA512

압축 풀기 명령에서는 이 옵션을 사용할 수 없습니다.

MakeAppx 압축 풀기 [pfn]

지정된 패키지의 모든 파일을 지정된 출력 디렉터리로 추출합니다. 출력에는 패키지와 동일한 디렉터리 구조가 있습니다.

/Pfn

패키지 전체 이름을 가진 라는 디렉터리를 지정합니다. 이 디렉터리가 제공된 출력 위치 아래에 만들어집니다. pack 명령에서는 이 옵션을 사용할 수 없습니다.

MakeAppx unbundle [pfn]

모든 패키지를 번들 전체 이름의 이름을 따서 명명된 지정된 출력 경로 아래의 하위 디렉터리에 압축을 풉니다. 출력에는 설치된 패키지 번들과 동일한 디렉터리 구조가 있습니다.

/Pfn

패키지 번들 전체 이름을 사용하여 라는 디렉터리를 지정합니다. 이 디렉터리가 제공된 출력 위치 아래에 만들어집니다. 번들 명령에서는 이 옵션을 사용할 수 없습니다.

MakeAppx encrypt [kf, kt]

지정된 출력 패키지의 지정된 입력 앱 패키지에서 암호화된 앱 패키지를 만듭니다.

/kf<키 파일>

지정된 키 파일의 키를 사용하여 패키지 또는 번들을 암호화합니다. kt에서는 이 옵션을 사용할 수 없습니다.

/Kt

전역 테스트 키를 사용하여 패키지 또는 번들을 암호화합니다. kf에서는 이 옵션을 사용할 수 없습니다.

MakeAppx 암호 해독 [kf, kt]

지정된 출력 패키지의 지정된 입력 앱 패키지에서 암호화되지 않은 앱 패키지를 만듭니다.

/kf<키 파일>

지정된 키 파일의 키를 사용하여 패키지 또는 번들을 해독합니다. kt에서는 이 옵션을 사용할 수 없습니다.

/Kt

전역 테스트 키를 사용하여 패키지 또는 번들의 암호를 해독합니다. kf에서는 이 옵션을 사용할 수 없습니다.

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

MakeAppx는 가장 일반적인 배포 오류를 파악하고 앱 패키지가 유효한지 확인하는 데 도움이 되도록 설계된 제한된 의미 체계 유효성 검사를 수행합니다.

이 유효성 검사는 다음을 보장합니다.

  • 패키지 매니페스트에서 참조되는 모든 파일은 앱 패키지에 포함됩니다.
  • 애플리케이션에는 두 개의 동일한 키가 없습니다.
  • 애플리케이션은 SMB, FILE, MS-WWA-WEB, MS-WWA 목록에서 사용할 수 없는 프로토콜을 등록하지 않습니다.

이 의미 체계 유효성 검사가 완료되지 않았으며 MakeAppx에서 빌드한 패키지는 설치 가능하지 않습니다.