Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Se pretender submeter a sua aplicação à Microsoft Store, precisa entrar em contacto com o suporte ao desenvolvedor do Windows e obter aprovação para utilizar pacotes de ativos e dobragem de pacotes.
Os pacotes de ativos podem diminuir o tamanho geral da embalagem e o tempo de publicação dos seus aplicativos na Microsoft Store. Você pode saber mais sobre pacotes de ativos e como isso pode acelerar suas iterações de desenvolvimento em Introdução aos pacotes de ativos.
Se você está pensando em usar pacotes de ativos para seu aplicativo ou já sabe que deseja usá-lo, provavelmente está se perguntando sobre como os pacotes de ativos mudarão seu processo de desenvolvimento. Em suma, o desenvolvimento de aplicações para si permanece o mesmo - isto é possível graças ao agrupamento de pacotes de recursos.
Acesso a arquivos depois de dividir seu aplicativo
Para entender como o agrupamento de pacotes não afeta o seu processo de desenvolvimento, vamos recuar primeiro para entender o que acontece quando se divide a sua aplicação em múltiplos pacotes (sejam pacotes de ativos ou pacotes de recursos).
Em um alto nível, quando você divide alguns dos arquivos do seu 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 onde o código é executado. Isso ocorre porque esses pacotes são todos instalados em diretórios diferentes de onde o pacote de arquitetura está instalado. Por exemplo, se estiver a criar um jogo e o seu jogo estiver localizado em francês e alemão e tiver sido criado para máquinas x86 e x64, então deverá ter estes ficheiros de pacote de aplicações no pacote de aplicações do seu 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 na máquina de um usuário, cada arquivo de pacote de aplicativo terá sua própria pasta no diretório WindowsApps . Então, para um usuário francês executando 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ão).
Para este usuário, o executável principal do seu 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 dos idiomas instalados, você pode saber mais sobre 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 variar entre os usuários.
Dobragem de pacotes 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 do pacote de ativos serão incorporados ao seu pacote de arquitetura quando este for instalado por meio do processo de dobragem do pacote. Além disso, como os arquivos de pacotes de ativos devem ser originalmente arquivos dentro de 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 a dobragem de embalagens, 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 3 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 seu jogo, o pacote x64 será implantado primeiro. Em seguida, os dois pacotes de recursos serão implantados nas suas próprias pastas, tal como o MyGame_1.0_language-fr do nosso exemplo anterior. No entanto, devido à dobragem do pacote, os arquivos do pacote de ativos também serão vinculados 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 em que os arquivos do pacote de ativos aparecerão é exatamente o local em que eles estão em relação à raiz do pacote. Então, aqui está 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 a dobragem de pacotes para pacotes de ativos, você ainda pode acessar os arquivos divididos em pacotes de ativos da mesma maneira (observe que a pasta de arquitetura tem exatamente a mesma estrutura da pasta de projeto original) e pode adicionar pacotes de ativos ou mover arquivos entre pacotes de ativos sem afetar seu código.
Agora para um exemplo de dobragem de embalagem mais complicado. Digamos que você queira dividir seus arquivos com base no nível, e se quiser manter a mesma estrutura da pasta do 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 do pacote. Portanto, como regra geral, o caminho relativo designado para arquivos empacotados no arquivo de mapeamento ou layout de empacotamento para MakeAppx.exe é o caminho que você deve usar para acessá-los após a dobragem do pacote.
Por fim, se houver dois arquivos em pacotes de ativos diferentes que tenham os mesmos caminhos relativos, isso causará uma colisão durante a dobragem do pacote. Se ocorrer uma colisão, a implantação do seu aplicativo resultará em um erro e falhará. Além disso, como a dobragem de pacotes tira proveito dos links físicos, se utilizar pacotes de ativos, a sua aplicação não poderá ser implementada em unidades que não sejam NTFS. Se você sabe que seu aplicativo provavelmente será movido para unidades removíveis por seus usuários, não deve usar pacotes de ativos.