Search code examples
uwpraspberry-piiotwindows-10-universalwindows-10-iot-core

Is there a better way for Deploying IOT / UWP / Pi apps?


We develop custom UWP apps for various tasks in our industrial environment that we deploy to custom built Raspberry Pi kiosks in-house. We aren't putting anything on any stores or to the public in any way, just simple in-house apps. So far our method for deployment has been to:

  1. Use Windows 10 IOT Core Dashboard to Flash an sd card with the basic image
  2. Install it into the Raspberry Pi and boot
  3. Use Windows Device Portal to configure static IP etc
  4. Use Visual Studio to Deploy UWP app to Remote Machine using the IP address
  5. Use Windows Device Portal to switch to the app

If it's an update to the software it differs by starting with going into Windows Device Portal to switch away from the app because VS seems to blow up some of the time when it tries to stop the app before deploying.

If we're updating 15 devices we have to do this for each one individually by IP address which can take hours.

So here's the question: Is there a better way to do this? Some way to do all this with a single script that can be fired off? Several of us have done hours of research but it's hard to find any documentation online for doing any of this. Are we just doing it completely wrong perhaps? We've definitely run into quite a few problems relating to Microsoft and Raspberry both refusing to make drivers for something so none exist but I guess I won't get into that.

I've followed the IOT Core Manufacuring Guid tutorials at the following link and I found the power shell scripting promising but it still seems way more complicated than what we've been doing. We do use TFS so I wonder if it's possible to use a TFS build script to fire off all these steps; has anyone done that successfully?

https://learn.microsoft.com/en-us/windows-hardware/manufacture/iot/iot-core-manufacturing-guide

Also, I've seen on the Windows Device Portal page for the individual devices under Apps / Apps Manager an option for Run From Network. We've tried a hundred different ways to get that to work but have been unable to. My supervisor said he read somewhere it doesn't work for Pis. Is there anyone out there that has gotten that option to work? There doesn't seem to be a plethora of documentation out there on how to do any of that. It would be nice to install the app package or whatever is needed to a single location and have all the Pis pick it up remotely and update easily.


Solution

  • The way to deploy an application to Windows IoT Core in your post does not apply when you have mounts of devices. As we know, there are several ways to deliver app updates to Windows 10 IoT Core devices:

    • Using Microsoft Store: The app is published and updated from the Microsoft Store

    • Using Device Update Center: The app is published to Windows Update and updated like any other OEM package (driver package) Coming soon

    • Using Azure IoT Device Management: The app is published to Azure Storage and updated through the Azure DM channel New for Windows 10, version 1709

    • Using OMA-DM: The app is updated using an OMA-DM compliant device management channel such as Intune or System Center Configuration Manager (SCCM)

    In your scenario, in my opinion, OMA-DM is a better way to delopy and update apps on your device. When using OMA-DM, the app is updated using an OMA-DM compliant device management channel such as Intune or System Center Configuration Manager (SCCM).The OMA-DM interface is supported in Windows 10 IoT Core and any OMA-DM compliant management solution can be used to install and update applications. Read the documentation for EnterpriseModernAppManagement CSP for usage instructions.

    Please see more references as following:

    https://learn.microsoft.com/en-us/windows/iot-core/manage-your-device/devicemanagement