Criar e converter um mapa de grupo de conteúdo de origem
Para preparar o aplicativo para a instalação de streaming, você precisará criar um mapa de grupo de conteúdo. Este artigo vai ajudá-lo a saber os detalhes para criar e converter um mapa de grupo de conteúdo, enquanto oferece algumas dicas e truques ao longo do caminho.
Você precisará criar um arquivo SourceAppxContentGroupMap.xml
e depois usar o Visual Studio ou a ferramenta MakeAppx.exe para converter esse arquivo para a versão final: AppxContentGroupMap.xml
. É possível ignorar uma etapa criando o AppxContentGroupMap.xml
do zero, mas é recomendado (e geralmente mais fácil) criar o SourceAppxContentGroupMap.xml
e convertê-lo, já que recursos de curinga não são permitidos no AppxContentGroupMap.xml
(e eles são muito úteis).
Vamos dar uma olhada em um cenário simples no qual a instalação de streaming de aplicativos é benéfica.
Digamos que você tenha criado um jogo, mas o tamanho do aplicativo final passa de 100 GB. Vai levar um bom tempo para baixar da Microsoft Store, o que pode ser inconveniente. Se você decidir usar a instalação de streaming de aplicativo, poderá especificar a ordem em que os arquivos do aplicativo serão baixados. Ao pedir à Store que comece fazendo o download dos arquivos essenciais, os usuários poderão usar o aplicativo mais rápido, enquanto outros arquivos não essenciais são baixados em segundo plano.
Observação
O uso da instalação de streaming de aplicativo depende muito da forma como os arquivos do aplicativo estão organizados. É recomendável que você comece a pensar o mais rápido possível no layout de conteúdo do aplicativo com relação à instalação de streaming, para facilitar a segmentação dos arquivos do aplicativo.
Primeiro, vamos criar um arquivo SourceAppxContentGroupMap.xml
.
Antes de entrarmos em todos os detalhes, aqui está um exemplo de um arquivo SourceAppxContentGroupMap.xml
simples e completo:
<?xml version="1.0" encoding="utf-8"?>
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"
xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap">
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
</ContentGroupMap>
Há dois componentes principais em um mapa de grupo de conteúdo: a seção obrigatória, que contém o grupo de conteúdo necessário, e a seção automática, que pode incluir vários grupos de conteúdo automáticos.
O grupo de conteúdo necessário é um único grupo de conteúdo dentro do elemento <Required>
do SourceAppxContentGroupMap.xml
. Um grupo de conteúdo necessário deve incluir todos os arquivos essenciais que são necessários para iniciar o aplicativo com o mínimo de experiência do usuário. Por causa da compilação do .NET Native, todo o código (o executável do aplicativo) deve fazer parte do grupo necessário, enquanto os ativos e outros arquivos ficam nos grupos automáticos.
Por exemplo, se o aplicativo for um jogo, o grupo necessário poderá incluir arquivos usados no menu principal ou na tela inicial do jogo.
Aqui está o trecho do nosso arquivo de exemplo original SourceAppxContentGroupMap.xml
:
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
Há algumas coisas importantes para se observar aqui:
- O
<ContentGroup>
dentro do elemento<Required>
deve ser chamado de "Obrigatório". Esse nome é exclusivo para o grupo de conteúdo necessário e não pode ser usado com nenhum outro<ContentGroup>
no mapa de grupo de conteúdo final. - Há apenas um
<ContentGroup>
. Isso é intencional, pois deve haver somente um grupo de arquivos essenciais. - Neste exemplo, é um único arquivo
.exe
. Um grupo de conteúdo necessário não precisa ser composto apenas por um arquivo, pode conter vários.
Uma forma simples de começar a escrever esse arquivo é abrir uma nova página no seu editor de texto favorito, fazer um rápido "Salvar como" do arquivo na pasta de projeto do aplicativo e nomear o novo arquivo como: SourceAppxContentGroupMap.xml
.
Importante
Se você estiver desenvolvendo um aplicativo C++, precisará ajustar as propriedades do arquivo SourceAppxContentGroupMap.xml
. Defina a propriedade Content
como true e a propriedade File Type
como Arquivo XML.
Ao criar o SourceAppxContentGroupMap.xml
, é útil aproveitar o uso de curingas nos nomes de arquivos. Para obter mais informações, consulte a seção de Dicas e truques para usar curingas.
Se você desenvolveu o aplicativo usando o Visual Studio, é recomendável que adicione isso no grupo de conteúdo necessário:
<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>
Adicionar o nome de arquivo curinga único incluirá arquivos adicionados ao diretório do projeto do Visual Studio, como o executável do aplicativo ou DLLs. As pastas WinMetadata e Propriedades devem incluir as outras pastas criadas pelo Visual Studio. Os curingas de Ativos são usados para selecionar as imagens de Logotipo e SplashScreen necessárias para a instalação do aplicativo.
Tenha em mente que não é possível usar o curinga duplo, "**", na raiz da estrutura de arquivos para incluir todos os arquivos no projeto, pois isso resultará em falha ao tentar converter o SourceAppxContentGroupMap.xml
para o AppxContentGroupMap.xml
final.
Também é importante observar que os arquivos de volume (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) não devem ser incluídos no mapa do grupo de conteúdo. Se os arquivos de volume estiverem incluídos em um dos nomes de arquivo curinga especificados, eles serão ignorados.
Os grupos de conteúdo automáticos são os ativos que são baixados em segundo plano enquanto o usuário interage com os grupos de conteúdo já baixados. Esses grupos incluem todos os arquivos adicionais que não são essenciais para iniciar o aplicativo. Por exemplo, você pode dividir grupos de conteúdo automáticos em diferentes níveis, definindo cada nível como um grupo de conteúdo separado. Como mencionado na seção de grupo de conteúdo necessário: por causa da compilação do .NET Native, todo o código (o executável do aplicativo) deve fazer parte do grupo necessário, enquanto os ativos e outros arquivos ficam nos grupos automáticos.
Vamos dar uma olhada mais detalhada no grupo de conteúdo automático do nosso exemplo SourceAppxContentGroupMap.xml
:
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
O layout do grupo automático é bastante parecido com o do grupo necessário, com poucas diferenças:
- Há vários grupos de conteúdo.
- Os grupos de conteúdo automáticos podem ter nomes exclusivos, exceto pelo nome "Obrigatório", que é reservado para o grupo de conteúdo necessário.
- Os grupos de conteúdo automáticos não podem conter nenhum arquivo do grupo de conteúdo necessário.
- Um grupo de conteúdo automático pode incluir arquivos que também fazem parte de outros grupos de conteúdo automáticos. Os arquivos serão baixados apenas uma vez e serão baixados com o primeiro grupo de conteúdo automático que os contenha.
O layout de arquivo para mapas de grupo de conteúdo sempre se baseia na pasta raiz do projeto.
No nosso exemplo, utilizamos curingas em ambos os elementos <ContentGroup>
para recuperar todos os arquivos dentro de um nível de arquivo de "Assets\Level2" ou "Assets\Level3". Se a sua estrutura de pastas for mais profunda, você pode usar o curinga duplo:
<ContentGroup Name="Level2">
<File Name="Assets\Level2\**"/>
</ContentGroup>
Você também pode usar curingas com texto nos nomes de arquivo. Por exemplo, se quiser incluir todos os arquivos na sua pasta "Ativos" com um nome de arquivo que contenha "Level2", você pode usar algo parecido com isto:
<ContentGroup Name="Level2">
<File Name="Assets\*Level2*"/>
</ContentGroup>
Para converter o SourceAppxContentGroupMap.xml
para a versão final, AppxContentGroupMap.xml
, você pode usar o Visual Studio 2017 ou a ferramenta de linha de comando MakeAppx.exe.
Para converter o mapa de grupo de conteúdo usando o Visual Studio:
- Adicione o
SourceAppxContentGroupMap.xml
à pasta do projeto - Vá até a janela Propriedades e altere a Ação de Compilação do
SourceAppxContentGroupMap.xml
para "AppxSourceContentGroupMap" - No Gerenciador de Soluções, clique com o botão direito do mouse no projeto
- Navegue até Store -> Converter Arquivo de Mapa de Grupo de Conteúdo
Se você não desenvolveu o aplicativo no Visual Studio, ou se prefere usar a linha de comando, pode usar a ferramenta MakeAppx.exe para converter o SourceAppxContentGroupMap.xml
.
Um comando simples do MakeAppx.exe pode se parecer com isto:
MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\
A opção /s especifica o caminho para o SourceAppxContentGroupMap.xml
, e a opção /f especifica o caminho para o AppxContentGroupMap.xml
. A última opção, /d, determina qual diretório deve ser usado para expandir curingas nos nomes de arquivo, neste caso, é o diretório do projeto do aplicativo.
Para obter mais informações sobre as opções que você pode usar com o MakeAppx.exe, abra um prompt de comando, vá até MakeAppx.exe e insira:
MakeAppx convertCGM /?
Isso é tudo que você precisa para deixar o AppxContentGroupMap.xml
final pronto para o aplicativo! Ainda há mais a fazer antes que o aplicativo esteja totalmente pronto para a Microsoft Store. Para obter mais informações sobre como adicionar a instalação por streaming ao aplicativo, confira esta página.