Empaquetador de aplicaciones (MakeAppx.exe)
Nota:
Para obtener instrucciones de UWP sobre el uso de esta herramienta, consulte Crear un paquete de aplicaciones con la herramienta MakeAppx.exe .
El empaquetador de aplicaciones (MakeAppx.exe) crea un paquete de aplicaciones a partir de archivos en disco o extrae los archivos de un paquete de aplicaciones al disco. A partir de Windows 8.1, el Empaquetador de aplicaciones también crea un paquete de aplicaciones a partir de paquetes de aplicaciones en disco o extrae los paquetes de aplicaciones de un paquete de aplicaciones al disco. Se incluye en Microsoft Visual Studio y el Kit de desarrollo de software (SDK) de Windows para Windows 8 o el Kit de desarrollo de software de Windows (SDK) para Windows 8.1 y versiones posteriores. Visite Descargas para desarrolladores para obtenerlos.
La herramienta MakeAppx.exe se encuentra normalmente en ubicaciones específicas de la versión del sistema operativo:
- C:\Program Files (x86)\Windows Kits\10\bin<número compilación><arquitectura>\makeappx.exe
Donde <arquitectura> = x86, x64, arm, ar64 o chpe. Como alternativa, puede encontrarse en:
C:\Archivos de programa (x86)\Windows Kits\10\App Certification Kit\makeappx.exe
- Para crear un paquete mediante una estructura de directorios
- Para crear un paquete mediante un archivo de asignación
- Para firmar el paquete mediante SignTool
- Para extraer archivos de un paquete
- Para crear una agrupación de paquetes mediante una estructura de directorios
- Para crear una agrupación de paquetes mediante un archivo de asignación
- Para extraer paquetes de una agrupación de paquetes
- Para cifrar un paquete con un archivo de clave
- Para cifrar un paquete con una clave de prueba global
- Para descifrar un paquete con un archivo de clave
- Para descifrar un paquete con una clave de prueba global
- Uso
Uso del empaquetador de aplicaciones
Nota:
Las rutas relativas son compatibles en toda la herramienta.
Para crear un paquete mediante una estructura de directorios
Coloque el archivo AppxManifest.xml en la raíz de un directorio que contiene todos los archivos de carga de la aplicación. Se crea una estructura de directorios idéntica para el paquete de aplicaciones, que estará disponible cuando se extraiga el paquete en el momento de la implantación.
Coloque todos los archivos en una única estructura de directorios y cree subdirectorios según sea necesario.
Cree un manifiesto de paquete válido, AppxManifest.xml, y colóquelo en el directorio raíz.
Ejecute este comando:
MakeAppx pack /d input_directorypath /p filepath.appx
Para crear un paquete mediante un archivo de asignación
Cree un manifiesto de paquete válido, AppxManifest.xml.
Cree un archivo de asignación. La primera línea contiene la cadena [Files] y las líneas siguientes especifican las rutas de acceso de origen (disco) y destino (paquete) en cadenas entre comillas.
[Files] "C:\MyApp\StartPage.htm" "default.html" "C:\MyApp\readme.txt" "doc\readme.txt" "\\MyServer\path\icon.png" "icon.png" "MyCustomManifest.xml" "AppxManifest.xml"
Ejecute este comando:
MakeAppx pack /f mapping_filepath /p filepath.appx
Para firmar el paquete mediante SignTool
Crea el certificado. El editor que figura en el manifiesto debe coincidir con la información de asunto del editor del certificado de firma. Para obtener más información sobre cómo crear un certificado de firma, consulte Cómo crear un certificado de firma de paquete de aplicación.
Ejecute SignTool.exe para firmar el paquete:
SignTool sign /a /v /fd hashAlgorithm /f certFileName filepath.appx
hashAlgorithm debe coincidir con el algoritmo hash usado para crear el mapa de bloques cuando se empaqueta la aplicación. Con la utilidad de empaquetado MakeAppx, el algoritmo hash de mapa de bloques Appx predeterminado es SHA256. Ejecute SignTool.exe especificando SHA256 como algoritmo de resumen de archivo (/fd):
SignTool sign /a /v /fd SHA256 /f certFileName filepath.appx
Para obtener más información sobre cómo firmar paquetes, consulte Cómo firmar un paquete de aplicación mediante SignTool.
Para extraer archivos de un paquete
Ejecute este comando:
MakeAppx unpack /p file.appx /d output_directory
El paquete desempaquetado tiene la misma estructura que el paquete instalado.
Para crear una agrupación de paquetes mediante una estructura de directorios
Utilizamos el comando bundle para crear una agrupación de aplicaciones con el <nombre de la agrupación de salida> agregando todos los paquetes del <directorio de contenido> (incluidas las subcarpetas). Si el <directorio de contenidos> contiene un manifiesto de agrupación, AppxBundleManifest.xml, se omite.
Coloque todos los paquetes en una única estructura de directorios y cree subdirectorios según sea necesario.
Ejecute este comando:
MakeAppx bundle /d input_directorypath /p filepath.appxbundle
Para crear una agrupación de paquetes mediante un archivo de asignación
Usamos el comando bundle para crear una agrupación de aplicaciones en <nombre de agrupación de salida> agregando todos los paquetes de una lista de paquetes dentro del <archivo de asignación>. Si el <archivo de asignación> contiene un manifiesto de agrupación, AppxBundleManifest.xml, se omite.
Cree un <archivo de asignación>. La primera línea contiene la cadena [Files] y las líneas siguientes especifican los paquetes que se van a agregar a la agrupación. Cada paquete se describe mediante un par de rutas entre comillas, separadas por espacios o tabulaciones. El par de rutas de acceso representa el origen del paquete (en el disco) y el destino (en la agrupación). Todos los nombres del paquete de destino deben tener la extensión .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"
Ejecute este comando:
MakeAppx bundle /f mapping_filepath /p filepath.appxbundle
Para extraer paquetes de una agrupación de paquetes
Ejecute este comando:
MakeAppx unbundle /p bundle_name.appxbundle /d output_directory
La agrupación desempaquetada tiene la misma estructura que la agrupación de paquetes instalada.
Para cifrar un paquete con un archivo de clave
Cree un archivo de claves. Los archivos de claves deben comenzar con una línea que contenga la cadena "[Keys]" seguida de líneas que describan las claves con las que cifrar el paquete. Cada clave se describe mediante un par de cadenas entre comillas, separadas por espacios o tabulaciones. La primera cadena representa el ID de clave y la segunda cadena representa la clave de cifrado en formato hexadecimal.
[Keys] "0" "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
Ejecute este comando:
MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kf keyfile_name.txt
El paquete de entrada se cifrará en el paquete cifrado especificado mediante el archivo de claves proporcionado.
Para cifrar un paquete con una clave de prueba global
Ejecute este comando:
MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kt
El paquete de entrada se cifrará en el paquete cifrado especificado mediante la clave de prueba global.
Para descifrar un paquete con un archivo de clave
Cree un archivo de claves. Los archivos de claves deben comenzar con una línea que contenga la cadena "[Keys]" seguida de líneas que describan las claves con las que cifrar el paquete. Cada clave se describe mediante un par de cadenas entre comillas, separadas por espacios o tabulaciones. La primera cadena representa el ID de clave de 32 bytes codificado en base64 y la segunda cadena representa la clave de cifrado de 32 bytes codificada en base64.
[Keys] "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU=" "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
Ejecute este comando:
MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_package_name.eappx /kf keyfile_name.txt
El paquete de entrada se descifrará en el paquete descifrado especificado mediante el archivo de claves proporcionado.
Para descifrar un paquete con una clave de prueba global
Ejecute este comando:
MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_package_name.eappx /kt
El paquete de entrada se descifrará en el paquete descifrado especificado mediante la clave de prueba global.
Uso
El argumento de línea de comandos /p siempre es necesario, con /d, /f o /ep. Tenga en cuenta que /d, /f y /ep se excluyen mutuamente.
MakeAppx pack [opciones] /p <nombre paquete salida> /d <directorio contenidos>
MakeAppx pack [opciones] /p <nombre paquete salida> /f <archivo asignaciones>
MakeAppx unpack [opciones] /p <nombre paquete entrada> /d <directorio salida>
MakeAppx bundle [opciones] /p <nombre agrupación salida> /d <directorio de contenidos>
MakeAppx bundle [opciones] /p <nombre agrupación salida> /f <archivo asignaciones>
MakeAppx unbundle [opciones] /p <nombre agrupación entrada> /d <directorio salida>
MakeAppx encrypt [opciones] /p <nombre paquete entrada> /ep <nombre paquete salida>
MakeAppx decrypt [opciones] /p <nombre paquete entrada> /ep <nombre paquete salida>
Sintaxis de línea de comandos
Esta es la sintaxis de uso común de la línea de comandos para MakeAppx.
MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h /kf /kt /l /o /no /nv /v /pfn /?]
MakeAppx empaqueta o desempaqueta los archivos de un paquete, agrupa o desagrupa los paquetes en una agrupación, o cifra o descifra el paquete o agrupación de aplicaciones en el directorio de entrada o el archivo de asignación especificados. Esta es la lista de parámetros que se aplican a MakeAppx pack, MakeAppx unpack, MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt, or MakeAppx decrypt.
-
/l
-
Esta opción se usa para paquetes traducidos. Los recorridos de validación predeterminados en paquetes localizados. Esta opción deshabilita solo esa validación específica, sin que sea necesario que se deshabiliten todas las validaciones.
-
/o
-
Sobrescriba el archivo de salida, si existe. Si no especifica esta opción o la opción /no, se preguntará al usuario si desea sobrescribir el archivo.
No puede usar esta opción con /no.
-
/no
-
Evita que se sobrescriba el archivo de salida si existe. Si no especifica esta opción o la opción /o, se preguntará al usuario si desea sobrescribir el archivo.
No puede usar esta opción con /o.
-
/nv
-
Omite la validación semántica. Si no especifica esta opción, la herramienta realiza una validación completa del paquete.
-
/v
-
Habilita la salida del registro detallado en la consola.
-
/?
-
Muestra el texto de ayuda.
MakeAppx pack , MakeAppx unpack , MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt, and MakeAppx decrypt son comandos que se excluyen mutuamente. Estos son los parámetros de la línea de comandos que se aplican específicamente a cada comando:
MakeAppx pack [h]
Crea un paquete.
-
/h algorithm
-
Especifica el algoritmo hash que se va a usar al crear la asignación de bloques. Estos son los valores válidos para algorithm:
- SHA256 (valor predeterminado)
- SHA384
- SHA512
No se puede utilizar esta opción con el comando unpack.
MakeAppx unpack [pfn]
Extrae todos los archivos del paquete especificado en el directorio de salida especificado. La salida tiene la misma estructura de directorios que el paquete.
-
/pfn
-
Especifica un directorio denominado con el nombre completo del paquete. Este directorio se crea en la ubicación de salida proporcionada. No se puede utilizar esta opción con el comando pack.
MakeAppx unbundle [pfn]
Desempaqueta todos los paquetes en un subdirectorio en la ruta de salida especificada, denominada así por el nombre completo de la agrupación. La salida tiene la misma estructura de directorios que la agrupación de paquetes instalados.
-
/pfn
-
Especifica un directorio denominado con el nombre completo de la agrupación de paquetes. Este directorio se crea en la ubicación de salida proporcionada. No se puede utilizar esta opción con el comando bundle.
MakeAppx encrypt [kf, kt]
Crea un paquete de aplicaciones cifrado a partir del paquete de aplicaciones de entrada especificado en el paquete de salida especificado.
-
/kf <archivo_clave>
-
Cifra el paquete o agrupación mediante la clave del archivo de clave especificado. No puede usar esta opción con kt.
-
/kt
-
Cifra el paquete o agrupación mediante la clave de prueba global. No puede usar esta opción con kf.
MakeAppx decrypt [kf, kt]
Crea un paquete de aplicaciones no cifrado a partir del paquete de aplicaciones de entrada especificado en el paquete de salida especificado.
-
/kf <archivo_clave>
-
Descifra el paquete o agrupación mediante la clave del archivo de clave especificado. No puede usar esta opción con kt.
-
/kt
-
Descifra el paquete o agrupación mediante la clave de prueba global. No puede usar esta opción con kf.
Validación semántica realizada por MakeAppx
MakeAppx realiza una validación semántica limitada que está diseñada para detectar los errores de implementación más comunes y ayudar a garantizar que el paquete de la aplicación sea válido.
Esta validación garantiza que:
- Todos los archivos a los que se hace referencia en el manifiesto del paquete se incluyen en el paquete de la aplicación.
- Una aplicación no tiene dos claves idénticas.
- Una aplicación no se registra para un protocolo prohibido de esta lista: SMB, FILE, MS-WWA-WEB, MS-WWA.
Esta validación semántica no está completa y no se garantiza que los paquetes creados por MakeAppx puedan instalarse.