Partilhar via


Criar e converter um mapa de grupo de conteúdo de origem

Para preparar seu aplicativo para instalação de streaming, você precisará criar um mapa de grupo de conteúdo. Este artigo irá ajudá-lo com as especificidades da criação e conversão de um mapa de grupo de conteúdo, fornecendo algumas dicas e truques ao longo do caminho.

Criando o mapa do grupo de conteúdo de origem

Você precisará criar um SourceAppxContentGroupMap.xml arquivo e, em seguida, usar o Visual Studio ou a ferramenta MakeAppx.exe para converter esse arquivo para a versão final: AppxContentGroupMap.xml. É possível saltar uma etapa criando o AppxContentGroupMap.xml do início, mas é recomendado (e geralmente mais fácil) criar o SourceAppxContentGroupMap.xml e convertê-lo, já que caracteres curinga não são permitidos no AppxContentGroupMap.xml (e são realmente úteis).

Vamos percorrer um cenário simples em que a instalação de streaming de aplicativos é benéfica.

Digamos que você criou um jogo, mas o tamanho do seu aplicativo final é superior a 100 GB. Isso vai levar muito tempo para ser baixado da Microsoft Store, o que pode ser inconveniente. Se você optar por usar a instalação de streaming de aplicativos, poderá especificar a ordem em que os arquivos do aplicativo serão baixados. Ao dizer à Loja para baixar arquivos essenciais primeiro, o usuário poderá interagir com seu aplicativo mais cedo, enquanto outros arquivos não essenciais são baixados em segundo plano.

Observação

O uso da instalação de streaming de aplicações depende muito da organização dos ficheiros da sua aplicação. É recomendável que pense no layout de conteúdo do seu aplicativo em relação à instalação via streaming do aplicativo o mais rapidamente possível, para simplificar a segmentação dos arquivos do seu aplicativo.

Primeiro, criaremos um SourceAppxContentGroupMap.xml arquivo.

Antes de entrarmos nos detalhes, aqui está um exemplo de um arquivo simples e completo SourceAppxContentGroupMap.xml :

<?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 necessária , que contém o grupo de conteúdo necessário, e a seção automática , que pode conter vários grupos de conteúdo automáticos.

Grupo de conteúdo obrigatório

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 conter todos os arquivos essenciais necessários para iniciar o aplicativo com o mínimo de experiência do usuário. Devido à compilação nativa do .NET, todo o código (o executável do aplicativo) deve fazer parte do grupo necessário, deixando ativos e outros arquivos para os grupos automáticos.

Por exemplo, se o seu 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 a notar aqui:

  • O <ContentGroup> elemento dentro do <Required> elemento deve ser chamado de "Obrigatório". Esse nome é reservado apenas para o grupo de conteúdo necessário e não pode ser usado com nenhum outro <ContentGroup> no mapa final do grupo de conteúdo.
  • Há apenas um <ContentGroup>. Isto é intencional, uma vez que deve haver apenas um grupo de ficheiros essenciais.
  • O arquivo neste exemplo é um único .exe arquivo. Um grupo de conteúdo necessário não está restrito a um arquivo, pode haver vários.

Uma maneira fácil de começar a escrever este arquivo é abrir uma nova página em seu editor de texto favorito, fazer um rápido "Salvar como" do seu arquivo na pasta de projeto do seu aplicativo e nomear seu arquivo recém-criado: SourceAppxContentGroupMap.xml.

Importante

Se estiveres a desenvolver uma aplicação C++, terás de ajustar as propriedades do ficheiro do SourceAppxContentGroupMap.xml. Defina a Content propriedade como true e a File Type propriedade como XML File.

Ao criar o SourceAppxContentGroupMap.xml, é útil aproveitar o uso de curingas em nomes de arquivos, para obter mais informações, consulte a seção Dicas e truques para usar curingas .

Se você desenvolveu seu aplicativo usando o Visual Studio, é recomendável incluí-lo em seu 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 ficheiro wildcard único incluirá os ficheiros adicionados ao diretório do projeto a partir do Visual Studio, como o executável da aplicação ou as DLLs. As pastas WinMetadata e Properties devem incluir as outras pastas geradas pelo Visual Studio. Os caracteres coringa Assets são utilizados para selecionar as imagens de Logo e SplashScreen necessárias para que a aplicação seja instalada.

Observe que você não pode usar o curinga duplo, "**", na raiz da estrutura do arquivo para incluir todos os arquivos no projeto, pois isso falhará ao tentar converter SourceAppxContentGroupMap.xml para o arquivo final AppxContentGroupMap.xml.

Também é importante observar que os arquivos de pegada (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) não devem ser incluídos no mapa do grupo de conteúdo. Se os arquivos de pegada forem incluídos em um dos nomes de arquivo curinga especificados, eles serão ignorados.

Grupos de conteúdo automáticos

Grupos de conteúdo automáticos são os ativos que são baixados em segundo plano enquanto o usuário está interagindo com os grupos de conteúdo já baixados. Estes contêm quaisquer ficheiros adicionais que não são essenciais para iniciar a aplicação. 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. Conforme observado na seção de grupo de conteúdo necessário: devido à compilação nativa do .NET, todo o código (o executável do aplicativo) deve fazer parte do grupo necessário, deixando ativos e outros arquivos para os grupos automáticos.

Vamos dar uma olhada mais de perto no grupo de conteúdo automático do nosso SourceAppxContentGroupMap.xml exemplo:

<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 semelhante ao grupo necessário, com algumas exceções:

  • Existem vários grupos de conteúdo.
  • Os grupos de conteúdo automáticos podem ter nomes exclusivos, exceto o nome "Obrigatório", que é reservado para o grupo de conteúdo necessário.
  • Os grupos de conteúdo automáticos não podem conter arquivos do grupo de conteúdo necessário.
  • Um grupo de conteúdo automático pode conter arquivos que também estão em outros grupos de conteúdo automático. Os arquivos serão baixados apenas uma vez e serão baixados com o primeiro grupo de conteúdo automático que os contém.

Dicas e truques para usar curingas

O layout de arquivo para mapas de grupo de conteúdo é sempre relativo à pasta raiz do projeto.

Em nosso exemplo, curingas são usados em ambos os <ContentGroup> elementos para recuperar todos os arquivos dentro de um nível de arquivo de "Assets\Level2" ou "Assets\Level3". Se você estiver usando uma estrutura de pastas mais profunda, poderá usar o curinga duplo:

<ContentGroup Name="Level2">
    <File Name="Assets\Level2\**"/>
</ContentGroup>

Você também pode usar curingas com texto para nomes de arquivos. Por exemplo, se você quiser incluir todos os arquivos na pasta "Ativos" com um nome de arquivo que contenha "Nível2", você pode usar algo assim:

<ContentGroup Name="Level2">
    <File Name="Assets\*Level2*"/>
</ContentGroup>

Converter SourceAppxContentGroupMap.xml em AppxContentGroupMap.xml

Para converter o SourceAppxContentGroupMap.xml para a versão final, AppxContentGroupMap.xml, pode utilizar o Visual Studio 2017 ou a ferramenta de linha de comando MakeAppx.exe.

Para usar o Visual Studio para converter seu mapa de grupo de conteúdo:

  1. Adicione o SourceAppxContentGroupMap.xml à pasta do projeto
  2. Altere a Ação de Compilação do SourceAppxContentGroupMap.xml para "AppxSourceContentGroupMap" na janela de Propriedades
  3. Clique com o botão direito do mouse no projeto no gerenciador de soluções
  4. Navegue até Loja -> Converter arquivo de mapa de grupo de conteúdo

Se você não desenvolveu seu aplicativo no Visual Studio, ou se você prefere apenas usar a linha de comando, use a ferramenta MakeAppx.exe para converter seu SourceAppxContentGroupMap.xml.

Um comando MakeAppx.exe simples pode ter esta aparência:

MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\

A opção /s especifica o caminho para o SourceAppxContentGroupMap.xml, e /f especifica o caminho para o AppxContentGroupMap.xml. A opção final, /d, especifica qual diretório deve ser usado para expandir curingas de nome 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 MakeAppx.exe, abra um prompt de comando, navegue até MakeAppx.exe e digite:

MakeAppx convertCGM /?

Isso é tudo o que você precisa para preparar seu aplicativo final AppxContentGroupMap.xml ! Ainda há mais a fazer antes que seu aplicativo esteja totalmente pronto para a Microsoft Store. Para obter mais informações sobre como adicionar a instalação de streaming ao seu aplicativo, confira esta página.