App packager (MakeAppx.exe) (Empaquetador de aplicaciones [MakeAppx.exe])

Nota

Para obtener instrucciones para UWP sobre el uso de esta herramienta, consulta Crear un paquete de aplicación con la herramienta MakeAppx.exe.

 

El empaquetador de aplicaciones (MakeAppx.exe) crea un paquete de aplicación a partir de archivos en disco o extrae los archivos de un paquete de aplicación al disco. A partir de Windows 8.1, el empaquetador de aplicaciones también crea una agrupación de paquetes de aplicación a partir de paquetes de aplicación en el disco o extrae los paquetes de aplicación de un paquete de aplicaciones en el 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 más recientes. Visite Descargas para que los desarrolladores los obtengan.

La herramienta MakeAppx.exe se encuentra normalmente en ubicaciones específicas de la versión del sistema operativo:

  • C:\Archivos de programa (x86)\Windows Kits\10\bin<arquitectura> de número><de compilación\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

Uso del empaquetador de aplicaciones

Nota

Las rutas de acceso relativas se admiten en toda la herramienta.

 

Para crear un paquete mediante una estructura de directorios

Coloque el 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 directorio idéntica para el paquete de la aplicación y estará disponible cuando el paquete se extraiga en el momento de la implementación.

  1. Coloque todos los archivos en una única estructura de directorios, creando subdirectorios según sea necesario.

  2. Cree un manifiesto de paquete válido, AppxManifest.xml y colóquelo en el directorio raíz.

  3. Ejecute este comando:

    MakeAppx pack /dinput_directorypath/pfilepath.appx

Para crear un paquete mediante un archivo de asignación

  1. Cree un manifiesto de paquete válido AppxManifest.xml.

  2. 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"
    
  3. Ejecute este comando:

    MakeAppx pack /fmapping_filepath/pfilepath.appx

Para firmar el paquete mediante SignTool

  1. Crea el certificado. El publicador que aparece en el manifiesto debe coincidir con la información del firmante del publicador del certificado de firma. Para obtener más información sobre cómo crear un certificado de firma, consulta Creación de un certificado de firma de paquete de aplicación.

  2. Ejecute SignTool.exe para firmar el paquete:

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

    El hashAlgorithm debe coincidir con el algoritmo hash usado para crear el mapa de bloques cuando la aplicación se ha empaquetado. Con la utilidad de empaquetado MakeAppx, el algoritmo hash de mapa de bloques Appx predeterminado es SHA256. Ejecute SignTool.exe especificar SHA256 como algoritmo de resumen de archivo (/fd):

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

    Para obtener más información sobre cómo firmar paquetes, consulta Cómo firmar un paquete de aplicación mediante SignTool.

Para extraer archivos de un paquete

  1. Ejecute este comando:

    MakeAppx unpack /pfile.appx /doutput_directory

  2. El paquete desempaquetado tiene la misma estructura que el paquete instalado.

Para crear un paquete mediante una estructura de directorios

Usamos el comando bundle para crear un lote de aplicaciones en <el nombre> del lote de salida agregando todos los paquetes desde el directorio> de <contenido (incluidas las subcarpetas). Si <el directorio> de contenido contiene un manifiesto de agrupación, AppxBundleManifest.xml, se omite.

  1. Coloque todos los paquetes en una única estructura de directorios, creando subdirectorios según sea necesario.

  2. Ejecute este comando:

    Paquete MakeAppx /dinput_directorypath/pfilepath.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 <el nombre> del lote 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.

  1. 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 de acceso entre comillas, separadas por espacios o pestañas. El par de rutas de acceso representa el origen (en disco) del paquete y el destino (en lote). Todos los nombres de 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"
    
  2. Ejecute este comando:

    Paquete MakeAppx /fmapping_filepath/pfilepath.appxbundle

Para extraer paquetes de un lote

  1. Ejecute este comando:

    MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

  2. El lote desempaquetado tiene la misma estructura que la agrupación de paquetes instalada.

Para cifrar un paquete con un archivo de clave

  1. Cree un archivo de clave. Los archivos de clave deben comenzar con una línea que contenga la cadena "[Claves]" seguidas de líneas que describen 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 identificador de clave y la segunda cadena representa la clave de cifrado en formato hexadecimal.

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. Ejecute este comando:

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

  3. El paquete de entrada se cifrará en el paquete cifrado especificado mediante el archivo de clave proporcionado.

Para cifrar un paquete con una clave de prueba global

  1. Ejecute este comando:

    MakeAppx.exe cifrar /ppackage_name.appx /epencrypted_package_name.eappx /kt

  2. 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

  1. Cree un archivo de clave. Los archivos de clave deben comenzar con una línea que contenga la cadena "[Claves]" seguidas de líneas que describen 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 identificador 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="
    
  2. Ejecute este comando:

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

  3. El paquete de entrada se descifrará en el paquete sin cifrar especificado mediante el archivo de clave proporcionado.

Para descifrar un paquete con una clave de prueba global

  1. Ejecute este comando:

    MakeAppx.exe descifrar /ppackage_name.appx /epunencrypted_package_name.eappx /kt

  2. El paquete de entrada se descifrará en el paquete sin cifrar 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 son mutuamente excluyentes.

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

MakeAppx pack [options]/p<nombre> del paquete de salida/archivo> de asignación f<

MakeAppx unpack [options]/p<input package name>/d<output directory>

Paquete MakeAppx [opciones]/p<nombre> del lote de salida/directorio> de contenido d<

Paquete MakeAppx [opciones]/p<nombre> del lote de salida/archivo> de asignación f<

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

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

Descifrado de MakeAppx [options]/p<nombre del paquete de entrada/nombre>>del paquete de salida ep<

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 de un lote, o cifra o descifra el paquete de la aplicación o lote 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 o MakeAppx decrypt.

/l

Esta opción se usa para paquetes localizados. La validación predeterminados se desactiva en paquetes localizados. Esta opción deshabilita solo esa validación específica, sin requerir que se deshabilite toda la validación.

/o

Sobrescriba el archivo de salida si existe. Si no especifica esta opción o la opción /no , se le preguntará al usuario si desea sobrescribir el archivo.

No puede usar esta opción con /no.

/No

Se impide que se sobrescriba el archivo de salida, si lo hay. Si no especifica esta opción o la opción /o , se le preguntará al usuario si desea sobrescribir el archivo.

No puede usar esta opción con /o.

/Nv

Omita la validación semántica. Si no se especifica esta opción, la herramienta realiza una validación completa del paquete.

/V

Habilite la salida del registro detallado en la consola.

/?

Mostrar texto de ayuda.

MakeAppx pack , MakeAppx unpack , MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt y MakeAppx decrypt son comandos mutuamente excluyentes. 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.

Algoritmo /h

Especifica el algoritmo hash que usar al crear la asignación de bloques. Estos son los valores válidos para el algoritmo:

SHA256 (predeterminado)
SHA384
SHA512

No puede usar esta opción con el comando de desempaquetar .

Desempaquetar MakeAppx [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 puede usar esta opción con el comando pack .

MakeAppx unbundle [pfn]

Desempaqueta todos los paquetes en un subdirectorio en la ruta de acceso de salida especificada, denominada después del nombre completo del lote. La salida tiene la misma estructura de directorios que el paquete instalado.

/pfn

Especifica un directorio denominado con el nombre completo del paquete. Este directorio se crea en la ubicación de salida proporcionada. No puede usar esta opción con el comando bundle .

MakeAppx encrypt [kf, kt]

Crea un paquete de aplicación cifrado a partir del paquete de aplicación de entrada especificado en el paquete de salida especificado.

Archivo declave> /kf<

Cifra el paquete o lote mediante la clave del archivo de clave especificado. No puede usar esta opción con kt.

/Kt

Cifra el paquete o lote mediante la clave de prueba global. No puedes usar esta opción con kf.

MakeAppx decrypt [kf, kt]

Crea un paquete de aplicación sin cifrar a partir del paquete de aplicación de entrada especificado en el paquete de salida especificado.

Archivo declave> /kf<

Descifra el paquete o lote 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 puedes usar esta opción con kf.

Validación semántica realizada por MakeAppx

MakeAppx realiza una validación semántica limitada 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 se puedan instalar.