Partilhar via


Atualizações diferenciais para pacotes de aplicativos MSIX

Noções básicas sobre atualizações de pacotes de aplicativos MSIX

Quando um pacote de aplicativo MSIX é criado, um arquivo de manifesto é gerado contendo detalhes relacionados aos arquivos incluídos no pacote de aplicativo MSIX. Durante a criação do pacote, uma parte dos metadados é criada e armazenada no pacote .msix ou .msixbundle, o que permite que partes do pacote sejam identificadas exclusivamente pelo Windows. Mais tarde, durante a atualização, o Windows pode usar esse arquivo de metadados para comparar o pacote antigo com o novo pacote e determinar as coisas que precisam ser baixadas para o dispositivo. Dado que esses metadados permitem que partes do pacote sejam identificadas de forma exclusiva, isso significa que o mecanismo de atualização diferencial funciona plenamente de qualquer versão de um pacote para qualquer outra versão de um pacote (supondo que o pacote fonte tenha uma versão inferior ao pacote de destino).

Tudo começa no arquivo AppxBlockMap.xml (os metadados acima mencionados). O arquivo AppxBlockMap.xml é um documento XML que contém uma lista bidimensional de informações sobre arquivos no pacote. A primeira dimensão apresenta detalhes de alto nível sobre o arquivo (por exemplo, nome e tamanho) e a segunda dimensão fornece representações de hash SHA2-256 de cada fatia de 64KB desse arquivo (também conhecido como "bloco").

O primeiro hash representa o primeiro bloco de 64 KB do arquivo e o segundo hash representa os 35 KB restantes - dado que o arquivo tem 101188 bytes.

Durante uma atualização, se o segundo bloco desse arquivo fosse modificado, o hash também seria atualizado para refletir esse fato. O componente de download entende isso e só puxará para baixo o segundo bloco e reutilizará o primeiro bloco inalterado do pacote antigo.

Além disso, se um arquivo inteiro não foi alterado (o que é determinado pelo conjunto completo de blocos não mudando), então esse arquivo pode ser reutilizado a partir do pacote existente - resultando em enormes economias para os usuários do Windows 10

Atualizando para versões mais recentes

Quando uma versão mais recente do pacote do aplicativo MSIX é instalada, o arquivo de manifesto é comparado e os blocos de arquivo modificados são identificados. Como o pacote do aplicativo MSIX é atualizado para a versão mais recente, somente os arquivos modificados são recuperados, diminuindo o consumo de largura de banda se os aplicativos atualizados residirem em um compartilhamento de rede ou externos a uma organização.

Atualizando para versões mais antigas

Quando uma versão mais antiga do pacote do aplicativo MSIX é instalada, o arquivo de manifesto é comparado e os blocos de arquivo modificados são identificados. Como o pacote do aplicativo MSIX é atualizado para a versão mais antiga, somente os arquivos modificados são recuperados, diminuindo o consumo de largura de banda se os aplicativos atualizados residirem em um compartilhamento de rede ou externos a uma organização.

Otimizando experiências de atualização

A entrega ou instalação de um pacote de aplicativo MSIX em um dispositivo pode ser configurada para melhorar a experiência dos usuários. Quando uma aplicação é implantada, o dispositivo pode ser configurado para atualizá-la após o utilizador fechar a aplicação ou forçar o seu encerramento e atualizá-la forçadamente.

PowerShell

A instalação de um pacote de aplicativo MSIX em um dispositivo usando o PowerShell aproveita o cmdlet add-appxpackage . Este cmdlet contém os seguintes parâmetros, que alteram a instalação do pacote do aplicativo MSIX ou a experiência do usuário de atualização.

Parâmetro Descrição
-AdiarRegistoQuandoPacotesEstãoEmUso Indica que esse cmdlet impedirá que o pacote do aplicativo MSIX seja atualizado enquanto o usuário tiver o aplicativo aberto no momento.
-ForçarEncerramentoAplicação Indica que esse cmdlet força todos os processos ativos associados ao pacote ou suas dependências a serem encerrados
-ForceUpdateFromAnyVersion Indica que o pacote do aplicativo MSIX forçará uma versão específica de um pacote a ser preparada/registrada, independentemente de uma versão superior já estar em estágios/registrada.
-InstallAllResources Indica que o cmdlet força a implantação de todos os pacotes de recursos especificados a partir de um argumento de pacote. Isso substitui a verificação da aplicabilidade dos recursos do mecanismo de implantação e obriga a preparação de todos os pacotes de recursos.
-ManterFicheirosEmCasoDeFalha No caso de uma implantação com falha, se essa opção estiver definida como True, os arquivos que foram criados na máquina de destino durante o processo de instalação não serão removidos.
-Atualização Especifica que o pacote que está sendo adicionado é uma atualização de pacote de dependência. Um pacote de dependência é removido quando o aplicativo pai é removido. Se não for especificado, o pacote não será removido quando a aplicação principal for removida.

Para obter uma lista completa dos parâmetros disponíveis para este cmdlet, visite o artigo do PowerShell sobre add-appxpackage.