Share via


UWP Streaming App Installation

What is UWP App Streaming Install?

As apps and games get progressively larger, users are waiting longer before they can start using an app that they acquired. Streaming install aims to solve this by providing you with a way to optimize how UWP applications are delivered to your users. Instead of waiting for the whole app to finish downloading before it can be used, users can start engaging with the app as soon as the required portion (which can be much smaller than the app itself) has been downloaded, allowing users to enjoy the app much faster. The rest of the app is downloaded in the background while the user is active within the app.

This blog post series will explain in depth how UWP app streaming install works and take you through implementing streaming install within your own app. Let's go through the basics to get you started.

Streaming Install Overview

For an app to be streaming installed, the app must be segmented into different parts. These parts are individually called a "content group", which is a logical grouping of files within your app. There is the required content group, which contains all the files that need be downloaded before users can launch the app. Then there are automatic content groups, which are the files that will be downloaded in the background while users are using the app.

The required content group should contain the files that are necessary for the minimal experience that you want for users when they can first launch the app, while the automatic content groups should be defined based on logical ways of segmenting your app. For example, if you are writing a platforming game, the automatic groups might be mapped to the levels within your game, so that level 1 files are all in the "level 1" automatic group and so forth.

*It is for this reason that we strongly recommend you start thinking about streaming install as soon as you start development to make the segmentation of your app easier and less disruptive later.*

These content groups are all defined in the content group map file (in depth in the next post) that will be at the root of your app, and the presence of this file will identify the app as stream-able.

The reason why there are multiple automatic content groups is so that the app itself can prioritize which content group to download first on demand. So continuing with the platforming game example, if a user loads a save file and jumps straight to level 3 while the app is being streaming installed, the app can request for the "level 3" automatic group to download first through our streaming APIs (in depth in a later post).

Minimum Requirements

Make sure you are on a computer that has the Windows 10 Creators Update (Windows Insider Preview build 15048 or later) with the corresponding Creators Update SDK.

It is also worth mentioning here that stream-able apps must have MinVersion be the Creators Update, defined in your apps manifest (or if using Visual Studio, chosen at the start of project creation or right click on Package.appxmanifest and open with XML editor):

streaming1-1

What this means is that stream-able apps will not be available for users that are still on the Anniversary Update or other older OS versions. *While you can still deploy a stream-able app yourself using the AppInstaller or Add-AppxPackage in PowerShell on a machine that is still on the Anniversary Update, the streaming APIs (that we will cover in depth in later parts) will not be available in that OS version, so your app will crash if you are calling those APIs in your app. In general, you should not be deploying a stream-able app in a pre-Creators Update OS, since users will not be able to acquire from the Store a stream-able app in that environment anyways.*

Important:   Also, managed apps can only stream content, not code, due to .NET Native compilation, so this means that automatic groups can only contain assets and all code must be part of the required group.

 

<more links coming soon>

Questions?  Ask in the comments section below.

Andy Liu, Program Manager, Windows Developer Platform