Installing and Servicing apps on Windows 10 IoT Core
Microsoft makes it easy for OEMs to install and service UWP apps on Windows 10 IoT Core through the Universal Store. All store signed apps on Windows 10 devices are capable of receiving updates directly from the store.
Preinstall and servicing of store signed apps is only available to Windows 10 IoT Core Pro customers. If you are an OEM wishing to preinstall apps on your IoT devices please visit our Commercialization page to get started. If you are developer wishing to preinstall apps for IoT you must seek sponsorship from an OEM enrolled in the program.
Publishing UWP to Universal Store
Members of the Windows Store OEM Preinstall program have special permissions in their Windows Dev Center account that allows a store signed version of an app to be downloaded. It is important to first be enrolled in the program before creating any app submissions. The publishing process following the additional permission is the same as other Windows 10 devices. The first step is to create an app submission.
TargetDeviceFamily should be set to Windows.Universal to be able to publish the IoT UWP apps to Universal Store. Both Windows.IoT and Windows.IoTHeadless are not yet allowed for store publishing.
Special Instructions for Headless Apps
In order for headless apps to meet store compliance there needs to be a “head” associated with the app. In order to add this “head” to our headless app we need to
- Create a new Blank XAML project in Visual Studio.
- Build the new project under release configuration
- Navigate to <New Project Folder>/bin/Release//
Locate file titled .exe
- If you are using Visual Studio 2017 it is required that you create a subdirectory in your project. In this sample we call it “exe”. Then copy the file to the “exe” directory of your headless app project.
- If you are using Visual Studio 2015 you just copy the file to the root directory of your app project.
- Include the newly added file to the Visual Studio project and set to “Copy Always”
- Open the Package.appxmanifest in Code mode (right-click and choose View Code) for the headless app and modify the following:
- If you are using VS 2017 add the attribute Executable=”exe\<Filename of .exe copied to project>.exe” to the element Application
- If you are using VS 2015 add the attribute Executable=”<Filename of .exe copied to project>.exe” to the element Application
- Add the attribute EntryPoint=”<Namespace of Blank XAML project>.App” to the element Application
- Remove the AppListEntry attribute from the element uap:VisualElements
With the app submission created the next step is to package the UWP app and upload to the app submission in Windows Dev Center. For IoT Core it is important to set Generate app bundle to Never. This will allow the Windows Dev Center to generate the correct package for preinstall on IoT Core.
Submit the submission to being the certification process. The certification process usually will take 24-48hrs after which the app will either be immediately published or available to publish based on the publishing option chosen when creating your submission.
Preinstalling an App
Now that an app has been published to the Universal Store the app has a store signed version that can be used to preinstall the app on devices.
- In the Windows Dev Center account click App Management > Current Packages on the left hand navigation bar
- Under the most recent App submission click “Download Windows 10 package”. This will download a zip file containing the app package, the dependency packages, and the license files
- There are two methods available to install an app to a device
The first method is adding the app to the image during the imaging process. Check out the Adding an App to your image guide on MSDN.
The second method is using Windows Imaging and Configuration Designer (WICD) to create a provisioning package. The provisioning package will install the app upon boot. This method is more common to devices that have already been deployed.
- Launch Windows Imaging and Configuration Designer (WICD)
- Select Advanced Provisioning
- Enter the project name and a description
- Choose Windows 10 IoT Core for the project settings
- Skip the provisioning package import
- On the left hand side expand Runtime Settings and click on Universal App Install > User Context App
- Enter the Package Family Name of your app and click Add (Note: The PFN can be found in the Windows Dev Center under App Management > App Identity)
- Under the newly added PFN add the Appx and its dependencies
- Set the DeploymentOptions to “Force target application shutdown”
- Set the LicenseProductID under UserContextAppLicense to the LicenseID found in the XML file ending with license1.xml.
- Rename the license file found in previous steps changing its extension to .ms-windows-store-license.
- Select your License Product ID on the left hand side and browse your license file to assign LicenseInstall field.
- Export the package
- Copy the exported .ppkg file to C:\Windows\Provisioning\Packages on the IoT device you wish to install the app on and reboot.
- Alternatively you can include the .ppkg file in your image when building. Check out the Add a provisioning package to an image guide on MSDN.
Updating an App
Updating apps on IoT Core are very simple.
- In the Windows Dev Center create a new App Submission for the app to be updated
- In Visual Studio package the app as done earlier in Step 3 in the Publishing UWP to Universal Store section. (Note: Be sure to increment the version number for each new package)
- Upload the package to Windows Dev Center under the new submission and submit
- Following the app certification process devices will update the app to the latest version. (Note: App updates on devices can take up to 24 hours to receive latest version)