Introdução aos pacotes de ativo

Importante

Se você pretende enviar seu aplicativo à Store, entre em contato como suporte ao desenvolvedor do Windows e obtenha aprovação para usar pacotes de ativo.

Os pacotes de ativo são um tipo de pacote que atua como uma localização central para os arquivos comuns de um aplicativo, eliminando efetivamente a necessidade de arquivos duplicados em todos os seus pacotes de arquitetura. Os pacotes de ativo são semelhantes aos pacotes de recursos, no sentido de que ambos são projetados para conter conteúdo estático necessário para que a execução do aplicativo. No entanto, são diferentes porque todos os pacotes de ativo são sempre baixados, independentemente da arquitetura do sistema, idioma ou escala de exibição do usuário.

Asset Package Bundle Diagram

Como os pacotes de ativo contêm todos os arquivos independentes de arquitetura, idioma e escala, seu aproveitamento resulta em uma redução do tamanho geral do aplicativo empacotado (pois esses arquivos não são mais duplicados). Isso ajuda a gerenciar o uso do espaço em disco de desenvolvimento local de aplicativos grandes e a no gerenciamento dos seus pacotes de aplicativos de maneira geral.

Como os pacotes de ativo afetam a publicação?

O benefício mais evidente dos pacotes de ativo é a redução do tamanho dos aplicativos empacotados. Pacotes de aplicativo menores aceleram o processo de publicação do aplicativo, permitindo que a Store processe menos arquivos. No entanto, esse não é o benefício mais importante dos pacotes de ativo.

Quando um pacote de ativo é criado, você pode especificar se o pacote deve ter permissão para ser executado. Como os pacotes de ativo devem incluir apenas arquivos independentes de arquitetura, normalmente eles não contêm arquivos .dll ou .exe. Então, em geral, não precisam ser executados. Essa distinção é importante porque, durante o processo de publicação, todos os pacotes executáveis devem ser verificados para garantir que não contenham malware, e esse processo de verificação leva mais tempo em pacotes maiores. No entanto, se um pacote for designado como não executável, a instalação do aplicativo garantirá que os arquivos contidos nesse pacote não possam ser executados. Essa garantia elimina a necessidade de uma varredura de pacote completa e reduzirá consideravelmente o tempo de verificação de malware durante a publicação do aplicativo (e de atualizações também), tornando a publicação significativamente mais rápida para aplicativos que usam pacotes de ativos. Observe que devem também ser usados pacotes de aplicativo de lote simples para obter esse benefício de publicação, pois é isso que permite que a Store processe cada arquivo de pacote .appx ou .msix em paralelo.

Devo usar pacotes de ativos?

Atualizar a estrutura de arquivos do seu aplicativo para aproveitar o uso de pacotes de ativos pode gerar benefícios tangíveis: redução do tamanho do pacote e iterações de desenvolvimento mais enxutas. Se os pacotes de arquitetura do seu aplicativo contiverem uma quantidade significativa de arquivos em comum ou se a maior parte dele for composta por arquivos não executáveis, é altamente recomendável que você invista o tempo adicional para converter e começar a usar pacotes de ativo.

No entanto, deve-se alertar que os pacotes de ativo não são um meio de alcançar a opcionalidade de conteúdo do aplicativo. Os arquivos do pacote de ativo não são opcionais e sempre serão baixados, independentemente da arquitetura, idioma ou escala do dispositivo de destino. Qualquer conteúdo opcional que você deseja que seu aplicativo suporte deve ser implementado usando pacotes opcionais.

Como criar um pacote de ativo

A maneira mais fácil de criar pacotes de ativo é usar o layout de empacotamento. No entanto, eles também podem ser criados manualmente usando o MakeAppx.exe. Para especificar quais arquivos incluir no pacote de ativo, você precisará criar um "arquivo de mapeamento". Neste exemplo, o único arquivo no pacote de ativo é "Video.mp4", mas todos os arquivos do pacote devem ser listados nesse arquivo. Observe que o especificador ResourceDimensions em ResourceMetadata é omitido em pacotes de ativo (ao contrário de um arquivo de mapeamento para pacotes de recurso).

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

Use um desses comandos para criar o pacote de ativo usando MakeAppx.exe (para MSIX e .appx).

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

É importante observar que todos os arquivos referenciados no AppxManifest (os arquivos de logotipo) não podem ser movidos para pacotes de ativo – esses arquivos devem ser duplicados entre pacotes de arquitetura.

Os pacotes de ativo também não devem conter um resources.pri. O MRT não pode ser usado para acessar arquivos de pacote de ativo. Para saber mais sobre como acessar arquivos de pacote de ativo e por que os pacotes de ativo exigem que seu aplicativo seja instalado em uma unidade NTFS, consulte Desenvolvendo com pacotes de ativo e dobramento de pacotes.

Para controlar se um pacote de ativo tem permissão para ser executado ou não, use uap6:AllowExecution no elemento Properties do AppxManifest. Você também deve adicionar uap6 ao elemento de nível superior Package para que ele se torne o seguinte:

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Se não for especificado, o valor padrão para AllowExecution é true. Defina-o como false em pacotes de ativo sem executáveis para acelerar a publicação.