Empacotador de aplicativo (MakeAppx.exe)

Observação

Para obter diretrizes UWP sobre como usar essa ferramenta, consulte Criar um pacote do aplicativo com a ferramenta MakeAppx.exe.

 

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

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

  • C:\Program Files (x86)\Windows Kits\10\bin<número de build><arquitetura>\makeappx.exe

Onde <arquitetura> = x86, x64, arm, ar64 ou chpe. Como alternativa, pode estar localizado em:

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

Uso do Empacotador de aplicativo

Observação

Os caminhos relativos têm suporte por meio da ferramenta.

 

Para criar um pacote usando uma estrutura de diretório

Coloque o AppxManifest.xml na raiz de um diretório que contém todos os arquivos de payload do seu aplicativo. Uma estrutura de diretório 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ório, criando subdiretórios conforme desejado.

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

  3. Execute este comando:

    MakeAppx pack /d caminhododiretóriode_entrada /p caminhodoarquivo.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 [Files] e as linhas a seguir especificam os caminhos de origem (disco) e destino (pacote) 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 /f caminhodoarquivode_mapeamento /p caminhodoarquivo.appx

Para assinar o pacote do aplicativo usando SignTool

  1. Criar 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 autenticação, consulte Como criar um certificado de assinatura de pacote do aplicativo.

  2. Execute SignTool.exe para assinar o pacote:

    SignTool sign /a /v /fd hashAlgorithm /f nomeDoArquivoDeCertificado caminhodoarquivo.appx

    O hashAlgorithm deve corresponder ao algoritmo de hash usado para criar o mapa de blocos 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 /f nomeDoArquivoDeCertificado caminhodoarquivo.appx

    Para obter mais informações sobre como assinar pacotes, consulte Como assinar um pacote do aplicativo usando SignTool.

Para extrair os arquivos de um pacote

  1. Execute este comando:

    MakeAppx unpack /p arquivo.appx /d diretório_de_saída

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

Para criar um grupo de pacotes usando uma estrutura de diretório

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

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

  2. Execute este comando:

    MakeAppx bundle /d caminhododiretóriode_saída /p caminhodoarquivo.appxbundle

Para criar um grupo de pacotes usando um arquivo de mapeamento

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

  1. Crie um <arquivo de mapeamento>. A primeira linha contém a cadeia de caracteres [Files] e as linhas a seguir especificam os pacotes a serem adicionados ao conjunto. 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:

    MakeAppx bundle /f caminhodoarquivode_mapeamento /p caminhodoarquivo.appxbundle

Para extrair pacotes de um conjunto

  1. Execute este comando:

    MakeAppx unbundle /p nome_do_pacote.appxbundle.appxbundle /d diretório_de_saída

  2. O pacote descompactado tem a mesma estrutura do pacote configurável instalado.

Para criptografar um pacote com um arquivo de chave

  1. Crie um par de chaves. 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 chave é descrita por um par de cadeias de caracteres entre aspas, separados por espaços ou tabulações. A primeira cadeia de caracteres representa a ID da chave e a segunda string representa a chave de criptografia em formato hexadecimal.

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

    MakeAppx.exe encrypt /p nome_do_pacote.appx /ep nome_do_pacote_criptografado.eappx /kf nome_do_arquivodechave.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 encrypt /p nome_do_pacote.appx /ep nome_do_pacote_criptografado.eappx /kt

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

Para descriptografar um pacote com um arquivo de chave

  1. Crie um par de chaves. 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 chave é descrita por um par de cadeias de caracteres entre aspas, separados por espaços ou tabulações. A primeira cadeia de caracteres representa a 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 decrypt /p nome_do_pacote.appx /ep nome_do_pacote_não_criptografado.eappx /kf nome_do_arquivodechave.txt

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

Para descriptografar um pacote com uma chave de teste global

  1. Execute este comando:

    MakeAppx.exe decrypt /p nome_do_pacote.appx /ep nome_do_pacote_nãocriptografado.eappx /kt

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

Uso

O argumento de linha de comando /p é sempre obrigatório, com /d, /f ou /ep. Observe que /d, /f e /ep são mutuamente exclusivos.

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

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

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

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

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

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

MakeAppx encrypt [opções] /p <nome do pacote de entrada> /ep <nome do pacote de saída>

MakeAppx decrypt [opções] /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 /?]

O MakeAppx empacota ou descompacta os arquivos em um pacote, agrupa ou desagrupa os pacotes ou criptografa ou descriptografa o pacote ou pacote do aplicativo no diretório de entrada especificado ou no arquivo de mapeamento. Aqui está a lista de parâmetros que se aplicam a MakeAppx pack, MakeAppx unpack, MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt ou MakeAppx decrypt.

/l

Essa opção é usada para pacotes localizados. A validação padrão é disparada em pacotes localizados. Essa opção desabilita apenas essa validação específica, sem exigir que toda a validação seja desabilitada.

/o

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

Você pode usar essa opção com /no.

/no

Impede a 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á indagado se deseja substituir o arquivo.

Você pode usar essa opção com /o.

/nv

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

/v

Habilite a saída de registro em log detalhado no console.

/?

Exiba o texto da ajuda.

MakeAppx pack , MakeAppx unpack , MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt, and MakeAppx decrypt são comandos mutuamente exclusivos. Aqui estão os parâmetros de linha de comando que se aplicam especificamente a cada comando:

MakeAppx pack [h]

Cria um pacote.

/h algoritmo

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

SHA256 (padrão)
SHA384
SHA512

Você não pode usar essa opção com o comando unpack.

MakeAppx unpack [pfn]

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

/pfn

Especifica um diretório nomeado com o nome completo do pacote. Esse diretório é criado no local de saída fornecido. Você não pode usar essa opção com o comando pack.

MakeAppx unbundle [pfn]

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

/pfn

Especifica um diretório nomeado com o nome completo do grupo de pacotes. Esse diretório é criado no local de saída fornecido. Você não pode usar essa opção com o comando bundle.

MakeAppx encrypt [kf, kt]

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

/kf <arquivo de chave>

Criptografa o pacote ou grupo usando a chave do arquivo de chave especificado. Você pode usar essa opção com kt.

/kt

Criptografa o pacote ou grupo usando a chave de teste global. Você pode usar essa opção com kf.

MakeAppx decrypt [kf, kt]

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

/kf <arquivo de chave>

Descriptografa o pacote ou grupo usando a chave do arquivo de chave especificado. Você pode usar essa opção com kt.

/kt

Descriptografa o pacote ou grupo usando a chave de teste global. Você pode usar essa opção com kf.

Validação semântica executada por MakeAppx

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

Essa validação garante que:

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

Essa validação semântica não está completa e os pacotes criados pelo MakeAppx não têm garantia de serem instaláveis.