Using Windows Device Portal to debug streaming install

With the Fall Creators Update, you can now debug streaming install of UWP apps through the Windows Device Portal (WDP) and Xbox Device Portal (XDP). To find out more about WDP, you can read the blog post here, and to find out more about UWP streaming install, you can read the blog series here.

Previously in the Creators Update, to debug your stream-able app, you would have to package your app and sideload it or implement the streaming debugging APIs (described in the streaming blog series) either in your own app or use the sample debugging app. The debugging APIs are necessary because in a loose file registered app, by default, all of the files are already present (there is nothing to streaming install), thus we need the APIs to simulate streaming install (environments where only certain content groups are present).

To make it easier to debug streaming install, we’ve added a new tool to WDP and XDP that provides you with a convenient interface for the debugging APIs. With the new tool, you will be able to simulate streaming install for your stream-able apps on your remote devices and make sure it behaves correctly to deliver a great streaming experience for your users.

Registering Your Stream-able App

Let’s see how the tool works in action. To debug a stream-able app, first you have to loose file register the app to the device. As an example, we’ll use the same streaming install demo app used in the streaming install blog series that you can find here. Once you have the app, go to the Apps Manager tool in the WDP or the My Games and Apps tool in the XDP. You can loose file register the app by choosing either register from network share or deploy loose app files. (You can find out more about loose file registering from network shares from the blog post here.)

Once the app has been deployed to the device, you can go to the “Streaming Install Debugger” workspace on the WDP or add the UWP Streaming Install Debugger to your workspace on the XDP.

Overview of the Streaming Install Debugger

Upon navigating to the tool, you should see it automatically select the stream-able app you just deployed. By default, it will select the latest loose file registered stream-able app automatically. If you don’t see your app selected, simply choose it from the first dropdown list. (If you don’t see the app listed, try the “Refresh” button and make sure your loose file folder contains an AppxContentGroupMap.xml.) You can also launch the app on the device from the tool by pressing the “Start” button.

The tool will list all of the content groups for your app in the order that they’re defined in the AppxContentGroupMap.xml (the default order that they will be downloaded in). The only content group that is not listed is the Required content group (so only the automatic content groups are listed). This is because the required content group cannot be manipulated with the debugging APIs in any way, since it is the group that is required for the app to be launchable.

Changing States of Content Groups

In the third column, you will see the states of the content groups. By default for loose file registered stream-able apps, content groups are all marked as Staged, meaning the files in all of the content groups are available to be accessed by the app. You can change the states of any of the content groups by just selecting another state in the Current State dropdown list. You don’t need to confirm your change, changes are applied immediately upon selection. If you changed the state, while the demo app is open on the device (at the “Start Your Adventure!” page), you should see your change immediately reflected. So for example, if we change Level2 to “Not Staged”, then in the app we should immediately see the Level 2 view button grayed out along with an incomplete progress bar below it.

Simulating Staging for Content Groups

The fourth column, “Staging Percentage” is for simulating the staging progress of a content group. The sliders here will only be usable if that content group’s state is “Staging”. So for example, if we change “Level2” to “Staging” and then drag the slider to 0, we should see no change in the app (since this is the same visually as “Not Staged”). But if we then start dragging the slider to the right, stopping at 25, then the progress bar of Level 2 should fill up to 25% or ¼ of the way. If we drag the slider all the way to 100, then the View button becomes available again, and the progress bar disappears, since 100% staging is logically the same as the “Staged” state.

Sorting and Filtering Content Groups

As you are manipulating the content group states, you may also find it useful to only focus on certain content groups. You can sort content groups by order #, content group name (alphabetically), or current state (alphabetically). You can also filter content groups by typing in the text box below the “Start” button. You can filter by current state or content group name, and you can change this by using the dropdown to the left of the text box. So if we’re only interested in the Level # content groups, we select to filter by content group name and type “Level” in the text box.

Enabling and Using the Multi-Select Functionality

Lastly, you can also enable multi-select for the tool by pressing the button to the right of the filter text box. Turning on multi-select, you should see an additional column added to the beginning of the table with check boxes, along with another set of state controls next to the multi-select button. With multi-select on, you can manipulate all of the selected content groups’ states at once. So for example, if we want to set all content groups as “Not Staged” to simulate the moment right when the app becomes launchable, we can select all content groups by clicking on the topmost checkbox, then selecting “Not Staged” in the new set of state controls next to the multi-select button. We should see this change immediately in the app also.

So with the new streaming install debugger in WDP and XDP, you’ll be able to simulate different streaming install scenarios for your app deployed on a remote device and make sure it behaves correctly in the different scenarios to perfect your streaming install experience for your users.