Application Ordering in Surface Application Launcher
Before being able to order your application, the first mandatory requirement is to get all your application you have built that are installed on a device made for Surface must have a corresponding ApplicationName.xml which is used to register you application to Surface Shell. If you do not do the registration process for all your application, they will simply not be visible by the Launcher.
Let’s review briefly how an ApplicationName.xml looks like
From the sample application.xml file above, we will concentrate on the Title, Description, and ExecutablFile entries. As you can see there is no absolute path to physical executable file. The reason for this is that the application.xml file of each application resides in the installation folder of the deployed application.
How the application gets register to Surface shell then?
This operation is done by having a shortcut of that file copied to the %ProgramData%\Microsoft\Surface\v2.0 folder
After you have registered your Surface applications with Surface Shell, they appear in Launcher. By default, all registered applications display in Launcher in alphabetical order (by application title) from left to right.
Application ordering in launcher
By default, each application are organized in the Application Launcher in alphabetical order.
In order to organize application in the launcher the way you want it, there are two different approaches:
- Through the Surface configuration Editor
- Manually by editing the ApplicationOrder.XML
In this post I will describe the scenario we have used in our projects in order to bring some sample use of that ordering process in a flexible way.
Setting up the ApplicationOrder.XML File
Order of application is define by an xml file call ApplicationOrder, that if exist will be available in the %ProgramData%\Microsoft\Surface\v2.0 folder.
In the ApplicationOrder.xml file, you can specify one the two mode:
- The SpecificApps
- The AllApps
We will concentrate on the SpecificsApps in our scenario. The AllApps mode is a combination of SpecificsApps mode and all application registration.
Let’s create for our sample a first file dedicated for kids application for instance and let’s name it KidsOrderApp.xml:
In this file sample we can see that we have register and order 3 applications that will be displayed in the launcher from left to right, in the same order as in the xml file.
Let’s create now a second XML file dedicated to business users and we will name that file BuisinessOrderApp.xml
A flexible Launcher management approach
Now on what we just described you are going to say why the file is not named ApplicationOrder.xml?
You are right in that sense, but the approach that I would like to describe here is to show you the flexibility you can have by playing with different custom files based on your audience.
Let’s imagine the scenario where you want to get visible on the Surface Launcher some application at a certain time period and the others to another time period. The hard way would be that you connect remotely to the unit and then change files you want to see.
A better scenario you can use such file is to use the company domain policies to publish those files automatically. Sure for that approach you need, or your customers need to get the device as part of the company domain.
Once the device is part of the domain you can easily define different scripts which then deploy the corresponding file KidsOrderApp.xml or BusinessOrderApp.xml at the proper time.
The KidsOrderApp.xml could be deploy from 3 PM to 6 PM into an hotel lobby
– The businesOrderApp.xml could be deploy from 8AM to 4AM and 6PM to 7AM
You can then have a vb script file which does following operation:
– Rename the corresponding file to ApplicationOrder.xml
– Publish the file to the %ProgramData%\Microsoft\Surface\v2.0 folder of the device
– Optionally restart the device or wait for a new session start on the device.
The vb script file will be executed in the respective domain policy rule suitable to cover the need.
I hope that this small post on the approach to ordering application and deploy custom scenario brings you more deployment flexibility. A simple thing that when use efficiently can save your time.