Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Se você pretende enviar seu aplicativo para a Loja, entre em contato com o suporte do desenvolvedor do Windows e obtenha aprovação para usar pacotes de recursos e organização de pacotes.
Os pacotes de ativos podem diminuir o tamanho geral do empacotamento e o tempo de publicação para seus aplicativos na Loja. Você pode saber mais sobre pacotes de ativos e como ele pode acelerar suas iterações de desenvolvimento em Introdução aos pacotes de ativos.
Se você estiver pensando em usar pacotes de ativos para seu aplicativo ou já souber que deseja usá-lo, provavelmente está se perguntando como os pacotes de ativos alterarão seu processo de desenvolvimento. Em suma, o desenvolvimento de aplicativos para o usuário permanece igual – isso é possível devido à compactação de pacotes de ativos.
Acesso ao arquivo depois de dividir seu aplicativo
Para entender como o agrupamento de pacotes não afeta o processo de desenvolvimento, primeiro, vamos dar um passo atrás para entender o que acontece quando você divide seu aplicativo em vários pacotes (sejam pacotes de ativos ou pacotes de recursos).
Em um alto nível, quando você dividir alguns dos arquivos do aplicativo em outros pacotes (que não são pacotes de arquitetura), você não poderá acessar esses arquivos diretamente em relação ao local em que o código é executado. Isso ocorre porque esses pacotes estão todos instalados em diretórios diferentes de onde o pacote de arquitetura está instalado. Por exemplo, se você estiver fazendo um jogo e seu jogo estiver localizado em francês e alemão e você tiver criado para computadores x86 e x64, deverá ter esses arquivos de pacote de aplicativos dentro do pacote de aplicativos do jogo:
- MyGame_1.0_x86.appx
- MyGame_1.0_x64.appx
- MyGame_1.0_language-fr.appx
- MyGame_1.0_language-de.appx
Quando o jogo é instalado no computador de um usuário, cada arquivo de pacote de aplicativo terá sua própria pasta no diretório do WindowsApps . Portanto, para um usuário francês que executa o Windows de 64 bits, seu jogo terá esta aparência:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| `-- …
|-- MyGame_1.0_language-fr
| `-- …
`-- …(other apps)
Observe que os arquivos do pacote do aplicativo que não são aplicáveis ao usuário não serão instalados (os pacotes x86 e alemães).
Para esse usuário, o principal executável do jogo estará dentro da pasta MyGame_1.0_x64 e será executado a partir daí e, normalmente, ele só terá acesso aos arquivos dentro dessa pasta. Para acessar os arquivos na pasta MyGame_1.0_language-fr , você teria que usar as APIs mrt ou as APIs PackageManager. As APIs MRT podem selecionar automaticamente o arquivo mais apropriado dentre os idiomas instalados. Você pode saber mais sobre as APIs MRT em Windows.ApplicationModel.Resources.Core. Como alternativa, você pode encontrar o local instalado do pacote de idioma francês usando a Classe PackageManager. Você nunca deve assumir o local instalado dos pacotes do seu aplicativo, pois isso pode mudar e pode variar entre os usuários.
Compactação de pacote de ativos
Então, como você pode acessar os arquivos em seus pacotes de ativos? Bem, você pode continuar a usar as APIs de acesso a arquivos que está usando para acessar qualquer outro arquivo em seu pacote de arquitetura. Isso ocorre porque os arquivos de pacotes de ativos serão incorporados ao seu pacote de arquitetura quando ele for instalado por meio do processo de incorporação de pacote. Além disso, como os arquivos do pacote de ativos devem ser originalmente arquivos em seus pacotes de arquitetura, isso significa que você não precisaria alterar o uso da API ao passar da implantação de arquivos soltos para a implantação empacotada em seu processo de desenvolvimento.
Para entender mais sobre como funciona o dobramento de pacotes, vamos começar com um exemplo. Se você tiver um projeto de jogo com a seguinte estrutura de arquivos:
MyGame
|-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
Se você quiser dividir seu jogo em três pacotes: um pacote de arquitetura x64, um pacote de ativos para áudios e um pacote de ativos para vídeos, seu jogo será dividido nestes pacotes:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_1.0_Audios.appx
`-- Audios
|-- Level1
| `-- ...
`-- Level2
`-- ...
MyGame_1.0_Videos.appx
`-- Videos
|-- Level1
| `-- ...
`-- Level2
`-- ...
Quando você instala o jogo, o pacote x64 será implantado primeiro. Em seguida, os dois pacotes de ativos ainda serão implantados em suas próprias pastas, assim como no nosso exemplo anterior, MyGame_1.0_language-fr. No entanto, devido à compactação de pacotes, os arquivos do pacote de ativos também serão vinculados por hard link para aparecer na pasta MyGame_1.0_x64 (portanto, mesmo que os arquivos apareçam em dois locais, eles não ocupam o dobro do espaço em disco). O local no qual os arquivos do pacote de ativos serão exibidos é exatamente o local em que eles estão em relação à raiz do pacote. Portanto, veja como será o layout final do jogo implantado:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| |-- Audios
| | |-- Level1
| | | `-- ...
| | `-- Level2
| | `-- ...
| |-- Videos
| | |-- Level1
| | | `-- ...
| | `-- Level2
| | `-- ...
| |-- Engine
| | `-- ...
| |-- XboxLive
| | `-- ...
| `-- Game.exe
|-- MyGame_1.0_Audios
| `-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- MyGame_1.0_Videos
| `-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
`-- …(other apps)
Ao usar o dobramento de pacotes para pacotes de ativos, você ainda pode acessar os arquivos divididos em pacotes de ativos da mesma forma (observe que a estrutura de pastas tem exatamente a mesma estrutura que a pasta do projeto original) e você pode adicionar pacotes de ativos ou mover arquivos entre pacotes de ativos sem prejudicar seu código.
Agora, para um exemplo mais complicado de dobradura de embalagem. Digamos que você queira dividir seus arquivos com base no nível e, se quiser manter a mesma estrutura da pasta de projeto original, seus pacotes devem ter esta aparência:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_Level1.appx
|-- Audios
| `-- Level1
| `-- ...
`-- Videos
`-- Level1
`-- ...
MyGame_Level2.appx
|-- Audios
| `-- Level2
| `-- ...
`-- Videos
`-- Level2
`-- ...
Isso permitirá que as pastas e arquivos Level1 no pacote MyGame_Level1 e pastas e arquivos Level2 no pacote MyGame_Level2 sejam mesclados nas pastas Áudios e Vídeos durante a dobragem de pacotes. Portanto, como regra geral, o caminho relativo designado para arquivos empacotados no arquivo de mapeamento ou layout de empacotamento é o caminho que você deve usar para acessá-los após o dobramento do pacote para MakeAppx.exe.
Por fim, se houver dois arquivos em pacotes de ativos diferentes que tenham os mesmos caminhos relativos, isso resultará em uma colisão durante a consolidação dos pacotes. Se ocorrer uma colisão, a implantação do aplicativo resultará em um erro e falhará. Além disso, como a agregação de pacotes aproveita os links simbólicos, se você usar pacotes de recursos, seu aplicativo não poderá ser implantado em unidades não NTFS. Se você souber que seu aplicativo provavelmente será movido para unidades removíveis por seus usuários, você não deve usar pacotes de ativos.