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
- Para criar um pacote usando uma estrutura de diretório
- Para criar um pacote usando um arquivo de mapeamento
- Para assinar o pacote do aplicativo usando SignTool
- Para extrair os arquivos de um pacote
- Para criar um grupo de pacotes usando uma estrutura de diretório
- Para criar um grupo de pacotes usando um arquivo de mapeamento
- Para extrair pacotes de um conjunto
- Para criptografar um pacote com um arquivo de chave
- Para criptografar um pacote com uma chave de teste global
- Para descriptografar um pacote com um arquivo de chave
- Para descriptografar um pacote com uma chave de teste global
- Uso
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.
Coloque todos os arquivos em uma única estrutura de diretório, criando subdiretórios conforme desejado.
Crie um manifesto de pacote válido, AppxManifest.xml, e coloque-o no diretório raiz.
Execute este comando:
MakeAppx pack /d caminhododiretóriode_entrada /p caminhodoarquivo.appx
Para criar um pacote usando um arquivo de mapeamento
Crie um manifesto de pacote válido, AppxManifest.xml.
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"
Execute este comando:
MakeAppx pack /f caminhodoarquivode_mapeamento /p caminhodoarquivo.appx
Para assinar o pacote do aplicativo usando SignTool
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.
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
Execute este comando:
MakeAppx unpack /p arquivo.appx /d diretório_de_saída
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.
Coloque todos os pacotes em uma única estrutura de diretório, criando subdiretórios conforme desejado.
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.
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"
Execute este comando:
MakeAppx bundle /f caminhodoarquivode_mapeamento /p caminhodoarquivo.appxbundle
Para extrair pacotes de um conjunto
Execute este comando:
MakeAppx unbundle /p nome_do_pacote.appxbundle.appxbundle /d diretório_de_saída
O pacote descompactado tem a mesma estrutura do pacote configurável instalado.
Para criptografar um pacote com um arquivo de chave
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"
Execute este comando:
MakeAppx.exe encrypt /p nome_do_pacote.appx /ep nome_do_pacote_criptografado.eappx /kf nome_do_arquivodechave.txt
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
Execute este comando:
MakeAppx.exe encrypt /p nome_do_pacote.appx /ep nome_do_pacote_criptografado.eappx /kt
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
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="
Execute este comando:
MakeAppx.exe decrypt /p nome_do_pacote.appx /ep nome_do_pacote_não_criptografado.eappx /kf nome_do_arquivodechave.txt
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
Execute este comando:
MakeAppx.exe decrypt /p nome_do_pacote.appx /ep nome_do_pacote_nãocriptografado.eappx /kt
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.