Membuat paket atau bundel MSIX dengan MakeAppx.exe

MakeAppx.exe membuat paket aplikasi (.msix atau .appx) dan bundel paket aplikasi (.msixbundle atau .appxbundle). MakeAppx.exe juga mengekstrak file dari paket aplikasi atau bundel dan mengenkripsi atau mendekripsi paket dan bundel aplikasi. Alat ini disertakan dalam SDK Windows 10 dan dapat digunakan dari prompt perintah atau file skrip.

Untuk informasi tentang cara menggunakan MakeApp.exe untuk mengemas aplikasi desktop, lihat Mengemas aplikasi desktop secara manual.

Penting

Jika Anda menggunakan Visual Studio untuk mengembangkan aplikasi, sebaiknya gunakan wizard Visual Studio untuk membuat paket aplikasi. Untuk informasi selengkapnya, lihat Mengemas aplikasi UWP dengan Visual Studio dan Mengemas aplikasi desktop dari kode sumber menggunakan Visual Studio.

Penting

Perhatikan bahwa MakeAppx.exe tidak membuat file unggahan paket aplikasi (.appxupload atau .msixupload), yang merupakan jenis paket aplikasi yang valid yang direkomendasikan untuk pengiriman ke Pusat Mitra. File pengunggahan paket aplikasi biasanya dibuat sebagai bagian dari proses pengemasan Visual Studio, meskipun juga dapat dibuat secara manual.

Menggunakan MakeAppx.exe

Berdasarkan jalur penginstalan SDK Anda, di sinilah MakeAppx.exe berada di PC Windows 10 Anda:

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

where <architecture> = x86, x64, arm, arm64 atau chpe. Atau, itu mungkin terletak di:

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

MakeAppx.exe sintaks dan opsi

Sintaks MakeAppx.exe umum:

MakeAppx <command> [options]      

Tabel berikut ini menjelaskan perintah untuk MakeAppx.exe.

Perintah Deskripsi
Paket Membuat paket.
Membongkar Mengekstrak semua file dalam paket yang ditentukan ke direktori output yang ditentukan.
Bundle Membuat bundel.
unbundle Membongpas semua paket ke subdirektori di bawah jalur output yang ditentukan yang dinamai sesuai dengan bundel atau nama lengkap paket.
mengenkripsi Membuat paket atau bundel aplikasi terenkripsi dari paket/bundel input pada paket/bundel output yang ditentukan.
mendekripsi Membuat paket atau bundel aplikasi yang didekripsi dari paket/bundel aplikasi input pada paket/bundel output yang ditentukan.

Daftar opsi ini berlaku untuk semua perintah:

Opsi Deskripsi
/d Menentukan direktori input, output, atau konten.
/l Digunakan untuk paket yang dilokalkan. Perjalanan validasi default pada paket yang dilokalkan. Opsi ini hanya menonaktifkan validasi tertentu, tanpa mengharuskan semua validasi dinonaktifkan.
/kf Mengenkripsi atau mendekripsi paket atau bundel menggunakan kunci dari file kunci yang ditentukan. Ini tidak dapat digunakan dengan /kt.
/kt Mengenkripsi atau mendekripsi paket atau bundel menggunakan kunci pengujian global. Ini tidak dapat digunakan dengan /kf.
/no Mencegah penimpaan file output jika ada. Jika Anda tidak menentukan opsi ini atau opsi /o, pengguna akan ditanya apakah mereka ingin menimpa file.
/nv Melewati validasi semantik. Jika Anda tidak menentukan opsi ini, alat ini melakukan validasi penuh paket.
/o Menimpa file output jika ada. Jika Anda tidak menentukan opsi ini atau opsi /no, pengguna akan ditanya apakah mereka ingin menimpa file.
/p Menentukan paket atau bundel aplikasi.
/v Mengaktifkan output pengelogan verbose ke konsol.
/? Menampilkan teks bantuan.

Daftar berikut berisi kemungkinan argumen:

Argumen Deskripsi
<nama paket output> Nama paket yang dibuat. Ini adalah nama file yang ditambahkan dengan .msix atau .appx.
<nama paket output terenkripsi> Nama paket terenkripsi yang dibuat. Ini adalah nama file yang ditambahkan dengan .emsix atau .eappx.
<nama paket input> Nama paket. Ini adalah nama file yang ditambahkan dengan .msix atau .appx.
<nama paket input terenkripsi> Nama paket terenkripsi. Ini adalah nama file yang ditambahkan dengan .emsix atau .eappx.
<nama bundel output> Nama bundel yang dibuat. Ini adalah nama file yang ditambahkan dengan .msixbundle atau .appxbundle.
<nama bundel output terenkripsi> Nama bundel terenkripsi yang dibuat. Ini adalah nama file yang ditambahkan dengan .emsixbundle atau .eappxbundle.
<nama bundel input> Nama bundel. Ini adalah nama file yang ditambahkan dengan .msixbundle atau .appxbundle.
<nama bundel input terenkripsi> Nama bundel terenkripsi. Ini adalah nama file yang ditambahkan dengan .emsixbundle atau .eappxbundle.
<direktori konten> Jalur untuk paket aplikasi atau konten bundel.
<file pemetaan> Nama file yang menentukan sumber paket dan tujuan.
<direktori output> Jalur ke direktori untuk paket output dan bundel.
<file kunci> Nama file yang berisi kunci untuk enkripsi atau dekripsi.
<ID algoritma> Algoritma yang digunakan saat membuat peta blok. Algoritma yang valid meliputi: SHA256 (default), SHA384, SHA512.

Membuat paket aplikasi

Paket aplikasi adalah sekumpulan lengkap file aplikasi yang dipaketkan ke file paket .msix atau .appx. Untuk membuat paket aplikasi menggunakan perintah paket , Anda harus menyediakan direktori konten atau file pemetaan untuk lokasi paket. Anda juga dapat mengenkripsi paket saat membuatnya. Jika Anda ingin mengenkripsi paket, Anda harus menggunakan /ep dan menentukan apakah Anda menggunakan file kunci (/kf) atau kunci pengujian global (/kt). Untuk informasi selengkapnya tentang membuat paket terenkripsi, lihat Mengenkripsi atau mendekripsi paket atau bundel.

Opsi khusus untuk perintah paket :

Opsi Deskripsi
/f Menentukan file pemetaan.
/h Menentukan algoritma hash yang akan digunakan saat membuat peta blok. Ini hanya dapat digunakan dengan perintah paket. Algoritma yang valid meliputi: SHA256 (default), SHA384, SHA512.
/m Menentukan jalur ke manifes aplikasi input yang akan digunakan sebagai dasar untuk menghasilkan paket aplikasi output atau manifes paket sumber daya. Saat menggunakan opsi ini, Anda juga harus menggunakan /f dan menyertakan bagian [ResourceMetadata] dalam file pemetaan untuk menentukan dimensi sumber daya yang akan disertakan dalam manifes yang dihasilkan.
/nc Mencegah pemadatan file paket. Secara default, file dikompresi berdasarkan jenis file yang terdeteksi.
/r Membangun paket sumber daya. Ini harus digunakan dengan /m dan menyiratkan penggunaan opsi /l.

Contoh penggunaan berikut menunjukkan beberapa opsi sintaks yang mungkin untuk perintah paket :

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

Berikut ini memperlihatkan contoh baris perintah untuk perintah paket :

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

Membuat bundel aplikasi

Bundel aplikasi mirip dengan paket aplikasi, tetapi bundel dapat mengurangi ukuran aplikasi yang diunduh pengguna. Bundel aplikasi sangat membantu untuk aset khusus bahasa, berbagai aset skala gambar, atau sumber daya yang berlaku untuk versi Microsoft DirectX tertentu, misalnya. Mirip dengan membuat paket aplikasi terenkripsi, Anda juga dapat mengenkripsi bundel aplikasi saat memaketkannya. Untuk mengenkripsi bundel aplikasi, gunakan opsi /ep dan tentukan apakah Anda menggunakan file kunci (/kf) atau kunci pengujian global (/kt). Untuk informasi selengkapnya tentang membuat bundel terenkripsi, lihat Mengenkripsi atau mendekripsi paket atau bundel.

Opsi khusus untuk perintah bundel :

Opsi Deskripsi
/bv Menentukan nomor versi bundel. Nomor versi harus dalam empat bagian yang dipisahkan oleh titik dalam formulir: <Utama>.< Anak di bawah umur>.< Bangun>.< Revisi>.
/f Menentukan file pemetaan.

Perhatikan bahwa jika versi bundel tidak ditentukan atau jika diatur ke "0.0.0.0" bundel dibuat menggunakan tanggal-waktu saat ini.

Contoh penggunaan berikut menunjukkan beberapa opsi sintaks yang mungkin untuk perintah bundel :

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

Blok berikut berisi contoh untuk perintah bundel :

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

Mengekstrak file dari paket atau bundel

Selain aplikasi pengemasan dan bundel, MakeAppx.exe juga dapat membuka kemasan atau membatalkan bundel paket yang ada. Anda harus menyediakan direktori konten sebagai tujuan untuk file yang diekstrak. Jika Anda mencoba mengekstrak file dari paket atau bundel terenkripsi, Anda dapat mendekripsi dan mengekstrak file secara bersamaan menggunakan opsi /ep dan menentukan apakah file tersebut harus didekripsi menggunakan file kunci (/kf) atau kunci pengujian global (/kt). Untuk informasi selengkapnya tentang mendekripsi paket atau bundel, lihat Mengenkripsi atau mendekripsi paket atau bundel.

Opsi khusus untuk membuka kemasan dan membuka bundle perintah:

Opsi Deskripsi
/nd Tidak melakukan dekripsi saat membuka atau membatalkan pengemasan paket/bundel.
/pfn Buka kemasan/buka semua file ke subdirektori di bawah jalur output yang ditentukan, dinamai sesuai dengan bundel atau nama lengkap paket

Contoh penggunaan berikut menunjukkan beberapa opsi sintaksis yang mungkin untuk perintah buka kemasan dan buka bundle :

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

Blok berikut berisi contoh untuk menggunakan perintah unpack dan 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

Mengenkripsi atau mendekripsi paket atau bundel

Alat MakeAppx.exe juga dapat mengenkripsi atau mendekripsi paket atau bundel yang ada. Anda cukup memberikan nama paket, nama paket output, dan apakah enkripsi atau dekripsi harus menggunakan file kunci (/kf) atau kunci pengujian global (/kt).

Enkripsi dan dekripsi tidak tersedia melalui wizard pengemasan Visual Studio.

Opsi khusus untuk mengenkripsi dan mendekripsi perintah:

Opsi Deskripsi
/ep Menentukan paket atau bundel aplikasi terenkripsi.

Contoh penggunaan berikut menunjukkan beberapa opsi sintaks yang mungkin untuk perintah enkripsi dan dekripsi:

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

Blok berikut berisi contoh untuk menggunakan perintah enkripsi dan dekripsi:

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

File kunci

File kunci harus dimulai dengan baris yang berisi string "[Keys]" diikuti dengan baris yang menjelaskan kunci untuk mengenkripsi setiap paket. Setiap kunci diwakili oleh sepasang string dalam tanda kutip, dipisahkan oleh spasi atau tab. String pertama mewakili ID kunci 32 byte yang dikodekan base64 dan yang kedua mewakili kunci enkripsi 32 byte yang dikodekan base64. File kunci harus berupa file teks sederhana.

Contoh file kunci:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

Memetakan file

File pemetaan harus dimulai dengan baris yang berisi string "[Files]" diikuti dengan baris yang menjelaskan file untuk ditambahkan ke paket. Setiap file dijelaskan oleh sepasang jalur dalam tanda kutip, dipisahkan oleh spasi atau tab. Setiap file mewakili sumbernya (pada disk) dan tujuan (dalam paket). File pemetaan harus berupa file teks sederhana.

Contoh file pemetaan (tanpa opsi /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"

Saat menggunakan file pemetaan, Anda dapat memilih apakah Anda ingin menggunakan opsi /m. Opsi /m memungkinkan pengguna untuk menentukan metadata sumber daya dalam file pemetaan yang akan disertakan dalam manifes yang dihasilkan. Jika Anda menggunakan opsi /m, file pemetaan harus berisi bagian yang dimulai dengan baris "[ResourceMetadata]", diikuti oleh baris yang menentukan "ResourceDimensions" dan "ResourceId." Dimungkinkan bagi paket aplikasi untuk berisi beberapa "ResourceDimensions", tetapi hanya ada satu "ResourceId."

Contoh file pemetaan (dengan opsi /m):

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

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

Validasi semantik yang dilakukan oleh MakeAppx.exe

MakeAppx.exe melakukan validasi sematik terbatas yang dirancang untuk menangkap kesalahan penyebaran yang paling umum dan membantu memastikan bahwa paket aplikasi valid. Lihat opsi /nv jika Anda ingin melewati validasi saat menggunakan MakeAppx.exe.

Validasi ini memastikan bahwa:

  • Semua file yang dirujuk dalam manifes paket disertakan dalam paket aplikasi.
  • Aplikasi tidak memiliki dua kunci yang identik.
  • Aplikasi tidak mendaftar untuk protokol terlarang dari daftar ini: SMB, FILE, MS-WWA-WEB, MS-WWA.

Ini bukan validasi semantik lengkap karena hanya dirancang untuk menangkap kesalahan umum. Paket yang dibangun oleh MakeAppx.exe tidak dijamin dapat diinstal.