This blog post is part of a series about how Windows Phone 8.1 affects developers. This blog post talks about how phone uses the new package model and is written by Andreas Hammar at Jayway and was originally posted here.
App packaging with appx
When it comes to packaging and distribution of apps - Xap is out, Appx is in. Appx is the package model used by the Windows Store and offers some additional features over xap.
To generate an appx package for your app, you invoke the Store menu, and choose to create application package.
You then get to choose what platform and configuration you want to build – and also whether to create an app bundle or not, more on that later.
This process generates one binary appxupload file per configuration, and a folder postfixed Test that contains the appx and other files, for deployment testing before upload to the Store.
And looking inside one of the Test folders, we find the actual appx file, together with a binary appxsym file:
An appx contains the entire app, it is actually just a zip file with a different extension. Looking inside the actual appx file, and the Assets folder, we find all the files for the app:
Noteworthy here is:
App.xbf With the XAML stack from Windows comes the Xaml Binary Format, pre-compiled Xaml – a big performance win, especially on app startup
.scale-240.png Apparently the app ships with scaling level 240 – on Windows we have 100, 140 and 180.
App bundles allow the resources of an app to be partitioned based on three parameters:
- DirectX feature level
When creating a bundle, you enable the Windows Phone Store to only download the resources needed for that specific device.
To demonstrate this I’ve added some resource files to the project, both a different scaling level and two more languages (en-us Is the default).
You choose to create a bundle on the package creation page:
And the resulting package files are instead just one big bundle.
Looking inside the appx for the bundle we find one appx per non-default resource-partition.