Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Si planeas enviar tu aplicación a la Tienda, debes ponerte en contacto con el soporte técnico para desarrolladores de Windows y obtener la aprobación para usar paquetes de recursos y plegado de paquetes.
Los paquetes de recursos pueden reducir el tamaño general del empaquetado y el tiempo de publicación de las aplicaciones en la Tienda. Puede obtener más información sobre los paquetes de recursos y cómo puede acelerar las iteraciones de desarrollo en Introducción a los paquetes de recursos.
Si estás pensando en usar paquetes de recursos para tu aplicación o ya sabes que quieres usarlo, probablemente te preguntes cómo cambiarán los paquetes de recursos en el proceso de desarrollo. En resumen, el desarrollo de aplicaciones para usted permanece igual: esto es posible debido al plegado de paquetes para los paquetes de recursos.
Acceso a archivos después de dividir la aplicación
Para comprender cómo el plegado de paquetes no afecta a su proceso de desarrollo, vamos a detenernos primero para entender lo que sucede al dividir la aplicación en varios paquetes (ya sea con paquetes de activos o paquetes de recursos).
En un nivel alto, al dividir algunos de los archivos de la aplicación en otros paquetes (que no son paquetes de arquitectura), no podrá acceder a esos archivos directamente con respecto a dónde se ejecuta el código. Esto se debe a que todos estos paquetes se instalan en directorios diferentes desde donde se instala el paquete de arquitectura. Por ejemplo, si vas a crear un juego y tu juego se localiza en francés y alemán y compilaste para máquinas x86 y x64, debes tener estos archivos de paquete de aplicación dentro del lote de la aplicación de tu juego:
- MyGame_1.0_x86.appx
- MyGame_1.0_x64.appx
- MyGame_1.0_language-fr.appx
- MyGame_1.0_language-de.appx
Cuando el juego se instala en la máquina de un usuario, cada archivo de paquete de aplicación tendrá su propia carpeta en el directorio WindowsApps . Por lo tanto, para un usuario francés que ejecuta Windows de 64 bits, el juego tendrá este aspecto:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| `-- …
|-- MyGame_1.0_language-fr
| `-- …
`-- …(other apps)
Tenga en cuenta que los archivos de paquete de la aplicación que no son aplicables al usuario no se instalarán (los paquetes x86 y alemán).
Para este usuario, el archivo ejecutable principal del juego estará dentro de la carpeta MyGame_1.0_x64 y se ejecutará desde allí y, normalmente, solo tendrá acceso a los archivos de esta carpeta. Para acceder a los archivos de la carpeta MyGame_1.0_language-fr , tendría que usar las API de MRT o las API packageManager. Las API de MRT pueden seleccionar automáticamente el archivo más adecuado de los idiomas instalados, puede obtener más información sobre las API de MRT en Windows.ApplicationModel.Resources.Core. Como alternativa, puede encontrar la ubicación instalada del paquete de idioma francés mediante la clase PackageManager. Nunca debes asumir la ubicación instalada de los paquetes de la aplicación, ya que esto puede cambiar y puede variar entre los usuarios.
Plegado de paquetes de recursos
¿Cómo puede acceder a los archivos de los paquetes de recursos? Bueno, puede seguir usando las API de acceso a archivos que está usando para acceder a cualquier otro archivo del paquete de arquitectura. Esto se debe a que los archivos del paquete de activos se integrarán en el paquete de arquitectura cuando se instale a través del proceso de integración de paquetes. Además, dado que los archivos de paquete de recursos deben ser originalmente archivos dentro de los paquetes de arquitectura, esto significa que no tendría que cambiar el uso de la API al pasar de la implementación de archivos sueltos a la implementación empaquetada en el proceso de desarrollo.
Para obtener más información sobre cómo funciona el plegado de paquetes, comencemos con un ejemplo. Si tienes un proyecto de juego con la siguiente estructura de archivos:
MyGame
|-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
Si quieres dividir tu juego en 3 paquetes: un paquete de arquitectura x64, un paquete de activos para audios y un paquete de activos para vídeos, tu juego se dividirá en estos paquetes:
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
`-- ...
Al instalar el juego, el paquete x64 se implementará primero. A continuación, los dos paquetes de recursos se seguirán implementando en sus propias carpetas, al igual que MyGame_1.0_language-fr de nuestro ejemplo anterior. Sin embargo, debido al plegado de paquetes, los archivos de paquete de recursos también estarán enlazados de manera dura para aparecer en la carpeta MyGame_1.0_x64 (por lo que, aunque los archivos aparecen en dos ubicaciones, no ocupan el doble de espacio en disco). La ubicación en la que aparecerán los archivos de paquete de recursos es exactamente la ubicación en la que están en relación con la raíz del paquete. Por lo tanto, este es el aspecto que tendrá el diseño final del juego implementado:
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)
Al usar el plegado de paquetes para los paquetes de recursos, todavía puede acceder a los archivos que ha dividido en paquetes de recursos de la misma manera (tenga en cuenta que la carpeta de arquitectura tiene exactamente la misma estructura que la carpeta del proyecto original) y puede agregar paquetes de recursos o mover archivos entre paquetes de recursos sin afectar al código.
Ahora para un ejemplo de plegado de paquetes más complicado. Supongamos que quiere dividir los archivos en función del nivel en su lugar y, si desea mantener la misma estructura que la carpeta del proyecto original, los paquetes deben tener este aspecto:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_Level1.appx
|-- Audios
| `-- Level1
| `-- ...
`-- Videos
`-- Level1
`-- ...
MyGame_Level2.appx
|-- Audios
| `-- Level2
| `-- ...
`-- Videos
`-- Level2
`-- ...
Esto permitirá que las carpetas y archivos level1 del paquete MyGame_Level1 y las carpetas y archivos level2 del paquete de MyGame_Level2 se combinen en las carpetas Audios y Vídeos durante el plegado del paquete. Por lo tanto, como regla general, la ruta de acceso relativa designada para los archivos empaquetados en el archivo de asignación o diseño de empaquetado para MakeAppx.exe es la ruta de acceso que debe usar para acceder a ellos después del plegado del paquete.
Por último, si hay dos archivos en paquetes de recursos diferentes que tienen las mismas rutas de acceso relativas, esto provocará una colisión durante el plegado del paquete. Si se produce una colisión, la implementación de tu aplicación dará lugar a un error y fallará. Además, dado que el plegado de paquetes aprovecha los vínculos físicos, si usa paquetes de recursos, la aplicación no podrá implementarse en unidades que no sean NTFS. Si sabe que es probable que los usuarios trasladen su aplicación a unidades extraíbles, no debe usar paquetes de recursos.