Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Als u van plan bent uw app naar de Store te sturen, moet u contact opnemen met Windows-ontwikkelaarsondersteuning en goedkeuring verkrijgen om asset packages en package folding te gebruiken.
Assetpakketten kunnen de totale verpakkingsgrootte en publicatietijd voor uw apps naar de Store verminderen. Meer informatie over assetpakketten en hoe het uw ontwikkelingsiteraties kan versnellen op Inleiding tot assetpakketten.
Als u denkt aan het gebruik van assetpakketten voor uw app of al weet dat u deze wilt gebruiken, vraagt u zich waarschijnlijk af hoe assetpakketten uw ontwikkelingsproces veranderen. Kortom, app-ontwikkeling voor u blijft hetzelfde. Dit is mogelijk vanwege pakketvouwen voor assetpakketten.
Bestandstoegang na het splitsen van uw app
Als u wilt weten hoe pakketopvouwen geen invloed heeft op uw ontwikkelingsproces, laten we eerst teruggaan om te begrijpen wat gebeurt wanneer u uw app splitst in meerdere pakketten (met asset-pakketten of resource-pakketten).
Wanneer u sommige bestanden van uw app splitst in andere pakketten (die geen architectuurpakketten zijn), hebt u op hoog niveau geen toegang tot deze bestanden rechtstreeks ten opzichte van waar uw code wordt uitgevoerd. Dit komt doordat deze pakketten allemaal zijn geïnstalleerd in verschillende mappen van waaruit uw architectuurpakket is geïnstalleerd. Als u bijvoorbeeld een game maakt en uw game is gelokaliseerd in het Frans en Duits en u voor zowel x86- als x64-machines hebt gebouwd, moet u deze app-pakketbestanden in de app-bundel van uw game hebben:
- MyGame_1.0_x86.appx
- MyGame_1.0_x64.appx
- MyGame_1.0_language-fr.appx
- MyGame_1.0_language-de.appx
Wanneer uw game is geïnstalleerd op de computer van een gebruiker, heeft elk app-pakketbestand een eigen map in de WindowsApps-directory. Dus voor een Franse gebruiker met 64-bits Windows ziet uw game er als volgt uit:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| `-- …
|-- MyGame_1.0_language-fr
| `-- …
`-- …(other apps)
Houd er rekening mee dat de app-pakketbestanden die niet van toepassing zijn op de gebruiker, niet worden geïnstalleerd (de x86- en Duitse pakketten).
Voor deze gebruiker bevindt het belangrijkste uitvoerbare bestand van uw game zich in de map MyGame_1.0_x64 en wordt vanaf daar uitgevoerd. Normaal gesproken heeft deze alleen toegang tot de bestanden in deze map. Als u toegang wilt krijgen tot de bestanden in de map MyGame_1.0_language-fr , moet u de MRT-API's of de PackageManager-API's gebruiken. De MRT-API's kunnen automatisch het meest geschikte bestand selecteren in de geïnstalleerde talen. Meer informatie over MRT-API's vindt u in Windows.ApplicationModel.Resources.Core. U kunt ook de geïnstalleerde locatie van het Franse taalpakket vinden met behulp van de PackageManager Class. U moet nooit uitgaan van de geïnstalleerde locatie van de pakketten van uw app, omdat dit kan veranderen en kan variëren tussen gebruikers.
Vouwen van assetpakketten
Hoe hebt u toegang tot de bestanden in uw assetpakketten? U kunt de API's voor bestandstoegang die u gebruikt, blijven gebruiken om toegang te krijgen tot elk ander bestand in uw architectuurpakket. Dit komt doordat assetpakketbestanden worden opgenomen in uw architectuurpakket wanneer het wordt geïnstalleerd via het proces van pakketintegratie. Aangezien assetpakketbestanden oorspronkelijk bestanden in uw architectuurpakketten moeten zijn, betekent dit bovendien dat u het API-gebruik niet hoeft te wijzigen wanneer u overstapt van losse bestandsimplementatie naar verpakte implementatie in uw ontwikkelproces.
Laten we beginnen met een voorbeeld om meer te weten te komen over hoe package folding werkt. Als u een gameproject hebt met de volgende bestandsstructuur:
MyGame
|-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
Als u uw game wilt splitsen in 3 pakketten: een x64-architectuurpakket, een assetpakket voor audio en een assetpakket voor video's, wordt uw game onderverdeeld in deze pakketten:
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
`-- ...
Wanneer u uw game installeert, wordt het x64-pakket eerst geïmplementeerd. Vervolgens worden de twee assetpakketten nog steeds geïmplementeerd in hun eigen mappen, net als MyGame_1.0_language-fr uit ons vorige voorbeeld. Vanwege pakketvouwing worden de assetpakketbestanden echter ook als hardkoppelingen weergegeven in de map MyGame_1.0_x64, waardoor, hoewel de bestanden op twee locaties verschijnen, ze niet tweemaal de schijfruimte innemen. De locatie waarin de assetpakketbestanden worden weergegeven, is precies de locatie waar ze zich bevinden ten opzichte van de hoofdmap van het pakket. Zo ziet de uiteindelijke lay-out van het geïmplementeerde spel eruit:
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)
Wanneer u pakketvouwen gebruikt voor assetpakketten, hebt u nog steeds toegang tot de bestanden die u op dezelfde manier hebt gesplitst in assetpakketten (u ziet dat de architectuurmap exact dezelfde structuur heeft als de oorspronkelijke projectmap) en u kunt assetpakketten toevoegen of bestanden tussen assetpakketten verplaatsen zonder dat dit van invloed is op uw code.
Nu voor een gecompliceerder voorbeeld van het vouwen van pakketten. Stel dat u in plaats daarvan uw bestanden wilt splitsen op basis van niveau en als u dezelfde structuur wilt behouden als de oorspronkelijke projectmap, moeten uw pakketten er als volgt uitzien:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_Level1.appx
|-- Audios
| `-- Level1
| `-- ...
`-- Videos
`-- Level1
`-- ...
MyGame_Level2.appx
|-- Audios
| `-- Level2
| `-- ...
`-- Videos
`-- Level2
`-- ...
Hierdoor kunnen de Level1 mappen en bestanden in het MyGame_Level1 pakket en de Level2 mappen en bestanden in het MyGame_Level2 pakket worden samengevoegd in de Audios en Videos mappen tijdens het samenvoegen van pakketten. Als algemene regel is het relatieve pad dat is aangewezen voor verpakte bestanden in het toewijzingsbestand of de verpakkingsindeling voor MakeAppx.exe het pad dat u moet gebruiken om ze te openen na het vouwen van pakketten.
Als er ten slotte twee bestanden in verschillende assetpakketten met dezelfde relatieve paden zijn, veroorzaakt dit een botsing tijdens het vouwen van pakketten. Als er een conflict optreedt, resulteert de implementatie van uw app in een fout en mislukt deze. Ook omdat package folding gebruikmaakt van harde koppelingen, kan uw app niet worden geïmplementeerd op niet-NTFS-stations als u assetpakketten gebruikt. Als u weet dat uw app waarschijnlijk door uw gebruikers naar verwisselbare stations wordt verplaatst, moet u geen assetpakketten gebruiken.