Partilhar via


Empacotador de aplicativos (MakeAppx.exe)

Observação

Para obter orientações da UWP sobre como usar essa ferramenta, consulte Criar um pacote de aplicativo com a ferramenta MakeAppx.exe.

 

O empacotador de aplicativos (MakeAppx.exe) cria um pacote de aplicativo a partir de arquivos no disco ou extrai os arquivos de um pacote de aplicativo para o disco. A partir do Windows 8.1, o App packager também cria um pacote de aplicativos a partir de pacotes de aplicativos em disco ou extrai os pacotes de aplicativos de um pacote de aplicativos para o disco. Ele está incluído no Microsoft Visual Studio e no Windows Software Development Kit (SDK) para Windows 8 ou Windows Software Development Kit (SDK) para Windows 8.1 e mais recente. Visite Downloads para desenvolvedores obtê-los.

A ferramenta MakeAppx.exe normalmente é encontrada em locais específicos da versão do sistema operacional:

  • C:\Arquivos de Programas (x86)\Windows Kits\10\bin<número de compilação><arquitetura>\makeappx.exe

Onde <arquitetura> = x86, x64, arm, ar64 ou chpe. Em alternativa, pode localizar-se em:

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

Usando o empacotador de aplicativos

Observação

Caminhos relativos são suportados em toda a ferramenta.

 

Para criar um pacote usando uma estrutura de diretórios

Coloque o AppxManifest.xml na raiz de um diretório que contém todos os arquivos de carga útil do seu aplicativo. Uma estrutura de diretórios idêntica é criada para o pacote do aplicativo e estará disponível quando o pacote for extraído no momento da implantação.

  1. Coloque todos os arquivos em uma única estrutura de diretórios, criando subdiretórios conforme desejado.

  2. Crie um manifesto de pacote válido, AppxManifest.xmle coloque-o no diretório raiz.

  3. Execute este comando:

    MakeAppx pack /dinput_directorypath/pfilepath.appx

Para criar um pacote usando um arquivo de mapeamento

  1. Crie um manifesto de pacote válido, AppxManifest.xml.

  2. Crie um arquivo de mapeamento. A primeira linha contém a cadeia de caracteres [Arquivos], e as linhas a seguir especificam os caminhos de origem (disco) e destino (pacote) em cadeias de caracteres entre aspas.

    [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. Execute este comando:

    MakeAppx pack /fmapping_filepath/pfilepath.appx

Para assinar o pacote usando o SignTool

  1. Crie o certificado. O editor listado no manifesto deve corresponder às informações de assunto do editor do certificado de assinatura. Para obter mais informações sobre como criar um certificado de assinatura, consulte Como criar um certificado de assinatura de pacote de aplicativo.

  2. Execute SignTool.exe para assinar o pacote:

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

    O hashAlgorithm deve corresponder ao algoritmo de hash usado para criar o blockmap quando o aplicativo foi empacotado. Com o utilitário de empacotamento MakeAppx, o algoritmo de hash de mapa de blocos Appx padrão é SHA256. Execute SignTool.exe especificando SHA256 como o algoritmo de resumo do arquivo (/fd):

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

    Para saber mais sobre como assinar pacotes, veja Como assinar um pacote de aplicativo usando o SignTool.

Para extrair arquivos de um pacote

  1. Execute este comando:

    MakeAppx descompactar /parquivo.appx /doutput_directory

  2. O pacote descompactado tem a mesma estrutura que o pacote instalado.

Para criar um pacote usando uma estrutura de diretórios

Usamos o comando bundle para criar um pacote de aplicativos em <nome do pacote de saída> adicionando todos os pacotes de <diretório de conteúdo> (incluindo subpastas). Se <diretório de conteúdo> contiver um manifesto de pacote, AppxBundleManifest.xml, ele será ignorado.

  1. Coloque todos os pacotes em uma única estrutura de diretórios, criando subdiretórios conforme desejado.

  2. Execute este comando:

    pacote MakeAppx /dinput_directorypath/pfilepath.appxbundle

Para criar um pacote usando um arquivo de mapeamento

Usamos o comando bundle para criar um pacote de aplicativos em <nome do pacote de saída> adicionando todos os pacotes de uma lista de pacotes dentro de <arquivo de mapeamento>. Se <arquivo de mapeamento> contiver um manifesto de pacote, AppxBundleManifest.xml, ele será ignorado.

  1. Crie um arquivo de mapeamento de <>. A primeira linha contém a cadeia de caracteres [Arquivos], e as linhas a seguir especificam os pacotes a serem adicionados ao pacote. Cada pacote é descrito por um par de caminhos entre aspas, separados por espaços ou tabulações. O par de caminhos representa a origem (no disco) e o destino (no pacote) do pacote. Todos os nomes de pacotes de destino devem ter a extensão .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. Execute este comando:

    pacote MakeAppx /fmapping_filepath/pfilepath.appxbundle

Para extrair pacotes de um pacote

  1. Execute este comando:

    MakeAppx desagregar /pbundle_name.appxbundle /doutput_directory

  2. O pacote descompactado tem a mesma estrutura do pacote instalado.

Para criptografar um pacote com um arquivo de chave

  1. Crie um arquivo de chave. Os arquivos de chave devem começar com uma linha contendo a cadeia de caracteres "[Keys]" seguida por linhas que descrevem as chaves com as quais criptografar o pacote. Cada tecla é descrita por um par de cadeias de caracteres entre aspas, separadas por espaços ou tabulações. A primeira cadeia de caracteres representa o ID da chave e a segunda cadeia de caracteres representa a chave de criptografia em formato hexadecimal.

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

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

  3. O pacote de entrada será criptografado no pacote criptografado especificado usando o arquivo de chave fornecido.

Para criptografar um pacote com uma chave de teste global

  1. Execute este comando:

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

  2. O pacote de entrada será criptografado no pacote criptografado especificado usando a chave de teste global.

Para desencriptar um pacote com um ficheiro de chave

  1. Crie um arquivo de chave. Os arquivos de chave devem começar com uma linha contendo a cadeia de caracteres "[Keys]" seguida por linhas que descrevem as chaves com as quais criptografar o pacote. Cada tecla é descrita por um par de cadeias de caracteres entre aspas, separadas por espaços ou tabulações. A primeira cadeia de caracteres representa o ID da chave de 32 bytes codificada em base64 e a segunda cadeia de caracteres representa a chave de criptografia de 32 bytes codificada em base64.

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. Execute este comando:

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

  3. O pacote de entrada será descriptografado no pacote não criptografado especificado usando o arquivo de chave fornecido.

Para desencriptar um pacote com uma chave de teste global

  1. Execute este comando:

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

  2. O pacote de entrada será descriptografado no pacote não criptografado especificado usando a chave de teste global.

Utilização

O argumento de linha de comando /p é sempre necessário, com /d, /fou /ep. Observe que /d, /fe /ep são mutuamente exclusivos.

pacote MakeAppx [opções]/p<nome do pacote de saída>/d<diretório de conteúdo>

pacote MakeAppx [opções]/p<nome do pacote de saída>/f<arquivo de mapeamento>

MakeAppx descompactar [opções]/p<nome do pacote de entrada>/d<diretório de saída>

pacote MakeAppx [opções]/p<nome do pacote de saída>/d<diretório de conteúdo>

pacote MakeAppx [opções]/p<nome do pacote de saída>/f<arquivo de mapeamento>

MakeAppx desagregar [opções]/p<nome do pacote de entrada>/d<diretório de saída>

MakeAppx criptografar [options]/p<nome do pacote de entrada>/ep<nome do pacote de saída>

MakeAppx desencriptar [options]/p<nome do pacote de entrada>/ep<nome do pacote de saída>

Sintaxe da linha de comando

Aqui está a sintaxe de uso comum da linha de comando para MakeAppx.

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

MakeAppx empacota ou descompacta os arquivos em um pacote, agrupa ou desagrupa os pacotes em um pacote ou criptografa ou descriptografa o pacote do aplicativo ou pacote no diretório de entrada ou arquivo de mapeamento especificado. Aqui está a lista de parâmetros que se aplicam a pacote MakeAppx, MakeAppx descompactar, pacote MakeAppx, MakeAppx desempacotar, MakeAppx criptografarou MakeAppx descriptografar.

/l

Esta opção é usada para pacotes localizados. As viagens de validação padrão em pacotes localizados. Esta opção desativa apenas essa validação específica, sem exigir que toda a validação seja desativada.

/o

Substitua o arquivo de saída, se ele existir. Se você não especificar essa opção ou a opção /no, o usuário será perguntado se deseja substituir o arquivo.

Não é possível usar esta opção com /no.

/sem

Impede uma substituição do arquivo de saída, se ele existir. Se você não especificar essa opção ou a opção /o, o usuário será perguntado se deseja substituir o arquivo.

Não é possível usar essa opção com /o.

/nv

Ignorar validação semântica. Se você não especificar essa opção, a ferramenta executará uma validação completa do pacote.

/v

Habilite a saída de registro detalhado para o console.

/?

Exiba o texto de ajuda.

pacote MakeAppx , MakeAppx descompactar , pacote MakeAppx, MakeAppx desagregar, MakeAppx criptografare MakeAppx descriptografar são comandos mutuamente exclusivos. Aqui estão os parâmetros de linha de comando que se aplicam especificamente a cada comando:

pacote MakeAppx [h]

Cria um pacote.

/halgoritmo

Especifica o algoritmo de hash a ser usado ao criar o mapa de blocos. Aqui estão os valores válidos para algoritmo:

SHA256 (padrão)
SHA384
SHA512

Não é possível usar essa opção com o comando unpack.

MakeAppx descompactar [pfn]

Extrai todos os arquivos no pacote especificado para o diretório de saída especificado. A saída tem a mesma estrutura de diretórios que o pacote.

/pfn

Especifica um diretório nomeado com o nome completo do pacote. Este diretório é criado sob o local de saída fornecido. Não é possível usar essa opção com o comando pack.

MakeAppx desagregar [pfn]

Descompacta todos os pacotes em um subdiretório sob o caminho de saída especificado, nomeado após o nome completo do pacote. A saída tem a mesma estrutura de diretórios que o pacote de pacotes instalado.

/pfn

Especifica um diretório nomeado com o nome completo do pacote de pacotes. Este diretório é criado sob o local de saída fornecido. Não é possível usar essa opção com o comando bundle.

MakeAppx encriptar [kf, kt]

Cria um pacote de aplicativo criptografado a partir do pacote de aplicativo de entrada especificado no pacote de saída especificado.

arquivo de chave de</kf>

Criptografa o pacote ou pacote usando a chave do arquivo de chave especificado. Não é possível usar esta opção com kt.

/kt

Criptografa o pacote ou pacote usando a chave de teste global. Não é possível usar esta opção com kf.

MakeAppx desencriptar [kf, kt]

Cria um pacote de aplicativo não criptografado a partir do pacote de aplicativo de entrada especificado no pacote de saída especificado.

arquivo de chave de</kf>

Descriptografa o pacote ou pacote usando a chave do arquivo de chave especificado. Não é possível usar esta opção com kt.

/kt

Descriptografa o pacote ou pacote usando a chave de teste global. Não é possível usar esta opção com kf.

Validação semântica realizada pelo MakeAppx

O MakeAppx executa uma validação semântica limitada projetada para detetar os erros de implantação mais comuns e ajudar a garantir que o pacote do aplicativo seja válido.

Esta validação garante que:

  • Todos os arquivos referenciados no manifesto do pacote são incluídos no pacote do aplicativo.
  • Um aplicativo não tem duas chaves idênticas.
  • Um aplicativo não se registra para um protocolo proibido desta lista: SMB , FILE, MS-WWA-WEB, MS-WWA.

Essa validação semântica não está completa e não é garantido que os pacotes criados pelo MakeAppx sejam instaláveis.