Giter Site home page Giter Site logo

iot-core-azure-dm-client's Introduction

Managing Windows IoT Devices through Azure IoT Hub

Announcement - April 4th, 2021

This repository is being marked as Archived. Please refer to the new Windows Azure DM Client https://github.com/ms-iot/azure-client-tools.

Announcement - January 10th, 2019

We have released a new version of the Windows Azure DM Client at https://github.com/ms-iot/azure-client-tools. It will eventually replace the code in this repo. Check-out the new version, and let us know what you think!

Overview

Device Management (DM) allows operators to remotely configure and monitor very high volumes of IoT devices simultaneously.

Configuration for the devices can be pushed to devices, whether the target devices are online or offline. If the device is offline it will pick up the new configuration when it reconnects. Device operators can also retrieve the status of each device, including whether device configuration updates have been successfully applied or not.

Enabling these features for IoT devices requires a central, robust, and reliable mechanism to store and to deploy the configuration data to the target devices, and monitor device status - at scale.

A complete solution requires the following:

  • A Robust/Scalable Cloud Service to store the desired and reported states of the various devices.

  • A Client that runs on the device and can apply the desired configuration and report the state of the device.

    • The Windows IoT Azure DM Client (an open source SDK + runtime), in conjunction with Azure IoT Hub, can apply and report on a large set of common, sometimes critical, Windows configurations.
  • A Portal or an Application that will be used by the operator to configure and query the devices remotely.

    • This must be customized for devices by the device OEM or operator. As part of this solution, we also provide an open source data model and implementation for easier interaction with the IoT Hub storage and the Windows IoT client.

This repo holds the Windows IoT Azure DM Client open source SDK + runtime components necessary to achieve the described scenario.

Windows IoT Azure DM Client

Release Notes

Overview

The Windows IoT Azure DM Client integrates tightly with the user's application on the device. This integration allows some interaction scenarios between the remote configuration and the application business logic.

The DM client consists of:

  • A UWP library (Windows IoT Azure DM Client Library) that is to be linked to the user's application. The application can be a foreground application or a background application.
  • An NT service (SystemConfigurator) that is running with System privilege and can listen to Azure IoT Hub notifications relayed by the UWP library and carry out the necessary device management actions.

Getting Started...

System Requirements

Developer's Box

  • Visual Studio 2017 (download).
    • Make sure the following is selected:
      • VC++ 2017 v141 toolset (x86, x64)
      • Visual C++ compilers and libraries for ARM.
      • Visual C++ 2017 redistributable update.
      • Visual C++ runtime for UWP.
      • Visual Studio C++ Core Features
      • Visual C++ ATL support
      • Windows 10 SDK (10.0.15063.0) for Desktop
      • Windows 10 SDK (10.0.15063.0) for UWP
      • Windows 10 SDK (10.0.16299.0) for UWP (For DMController)

Device

  • Windows IoT Core build 15063 (March 2017) or later.

Reference

iot-core-azure-dm-client's People

Contributors

alanch-ms avatar arturl avatar bderuijsscher avatar bfjelds avatar britel avatar divertom avatar gmileka avatar jryfar avatar namkedia avatar parameshbabu avatar russell1066 avatar scout208 avatar tiagoshibata avatar tmredback avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iot-core-azure-dm-client's Issues

Stop using naked Exceptions

I see code like this in DM:

            if (result.Context != 0)
            {
                throw new Exception();
            }

Let's introduce a strong type for DM exceptions and put some useful info in it (error code might be OK, plus some text maybe)

Enable update of the DM service

If the DM code is updated, we need a mechanism to update the service implementation (something like the DM service loading a DLL packaged within the APPX to handle DM requests? the service dll/exe could just be a wrapper to delegate requests based on version to implementations installed along with the APPX?)

Threading for user pop-ups in app need to be revisited

When the App receives a method to perform an action, the callback happens on the dm library thread, not the main ui thread. The dm thread has to block until the method is handled - and when it needs to display ui to the user, it needs to do that on the ui thread. The current implementation is not great - and we need to do it the right way. See YesNo() method in the sample app.

Deploying APPX without dependencies throws NULL.

AppxManagement.cs:
public async Task AppInstallAsync(DeviceManagementClient client) { }

Missing NULL check on Dependencies. Should be like that:

var appInstallInfo = new AppInstallInfo();
if (null != Dependencies)
{

foreach (var dependencyBlobInfo in Dependencies)
{
var depPath = await dependencyBlobInfo.DownloadToTempAsync(client);
appInstallInfo.Dependencies.Add(depPath);
}
}

Solutions fails to build C++ 17 because of std::tr2::sys deprecation errors

The project fails to build because of deprecation errors for the std::tr2::sys library used in src\SharedUtilities\Logger.cpp.:

warning STL4018: The non-Standard std::tr2::sys namespace is deprecated and will be REMOVED. It is superseded by std::experimental::filesystem. You can define _SILENCE_TR2_SYS_NAMESPACE_DEPRECATION_WARNING to acknowledge that you have received this warning.

Modifying the using directive in the mentioned file to std::experimental::filesystem appears to solve the issue.

(The changes are outlined in the C++17 release notes https://blogs.msdn.microsoft.com/vcblog/2017/12/08/c17-feature-removals-and-deprecations/ )

Can't find samples\Toaster\ConnectionStringProvider.cs

In the documentation, Running the Samples, Step 4 says

Update samples\Toaster\ConnectionStringProvider.cs to use appropriate IotHub device connection string.

But the file ConnectionStringProvider.cs does not exist.

Remove unsupported update properties

The following nodes under ./Device/Vendor/MSFT/Policy/Config/Update are not supported for IoT Core:
AllowMUUpdateService
AllowNonMicrosoftSignedUpdate
ExcludeWUDrivers
RequireUpdateApproval
UpdateServiceUrl

Need to re-write the time parsing code in C++

We need to be able to parse the time formats for two reasons:

  1. csps return formats that are not accepted by .net - which breaks the app.
  2. to convert to/from SYSTEMTIME and strings. The strings need to be compatible with the CSPs that consume them.

DMMessage should have versioning

version should be a part of DMMessage (imagine a case where the handling of a message is different between various iterations of DM)

Program crash immediately after run.

Downloaded the latest bits and tried running. Program crashed with these errors.

Exception thrown at 0x76F61882 (KernelBase.dll) in IoTDMAgent.exe: 0x00000005: Access is denied.

Exception thrown at 0x76F61882 in IoTDMAgent.exe: Microsoft C++ exception: std::exception at memory location 0x006FFB58.

Unhandled exception at 0x76F61882 in IoTDMAgent.exe: Microsoft C++ exception: std::exception at memory location 0x006FFB58.

Update of application through Azure Blob Storage impossible when Appx is pre-installed in custom FFU

Hi there,

we are having difficulties demonstrating the ability to update a running (foreground, startup) application that hosts the DM Client library. It is successfully connected to IoT Hub and is even able to download the new Appx package. The application is packaged into a Test image as defined in the Core Manufacturing guide.

However, upon attempting to install an update to the application - with a new version number of course - an error is generated that a package with the same name already exists and must be removed first. (Error is received through the device twin). This seems a bit odd as this might yield a remote system disconnected to the IoT hub, if it is at all possible.

Reading the documentation on Application Management again it appears as though it isn't even possible to update an application through IoT Hub, only through Windows Store.

Is this correct?

Regards
(Note: a cross reference to MSDN forum where I have opened this question)

Remove Tag/Status from reported properties

Some of the reported sections have Tag and Status - which are unnecessary.
Also, some like certificates have an extra nesting level under 'configuration' - that is unnecessary too.

Exception in HandleGetWindowsTelemetry prevents TwinProps to be reported

WindowsTelemetry fails with Exception error code: -1610579711 if the following key is not present, preventing DeviceTwinProperties getting reported.

HandleGetWindowsTelemetry
WindowsTelemetry::Get
Exception error code: -1610579711

reg.exe ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\DataCollection" /v AllowTelemetry /t REG_DWORD /d 0

device loses connection

Hi,

I think I need some support... I've set up the IoTDMbackground example and it is working fine... for some time but not reliable. Connection is "lost" after some days, the SystemConfigurator and IoTDMbackground processes are still running and the service state of SystemConfigurator is still "running" when connection is lost.

The device doesn't respond to device twin updates any more, and "device explorer" and the azure iot hub dashboard both say the my device is not connected. When I restart the IoTDMbackground app, the connection is re-established and things start working again, for some time, then same issue again.

Besides from running iotdmbackground in debug mode for several days with VS debugger attached: what else could I do to narrow down the cause? Implement failover behavior inside IoTDMbackground? (How?)

best regards

Walkthrough fails to build IoTDM library for all platforms

https://github.com/ms-iot/iot-core-azure-dm-client/blob/master/docs/building-the-dm-binaries.md

"Open src\IoTDM.sln in Visual Studio."
"Set the configuration to Release."
"Build the solution for each of the three architectures (ARM, x64, and x86)."

RELEASE / ARM

1>------ Build started: Project: DMMessage, Configuration: Release ARM ------
2>------ Build started: Project: SystemConfiguratorProxyInterface, Configuration: Release ARM ------
3>------ Build started: Project: CSPTests, Configuration: Release ARM ------
4>------ Skipped Build: Project: E2ETestApp, Configuration: Release ARM ------
4>Project not selected to build for this solution configuration 
2>Processing .\SystemConfiguratorProxy.Idl
2>SystemConfiguratorProxy.Idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\oaidl.idl
2>oaidl.idl
1>stdafx.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\vccorlib.h(356): error C3940: 'EventRegistrationToken': identifier not found - possible mismatch between compiler and library versions. Please ensure vccorlib.h/.lib, vccorlib120.dll and c1xx.dll match
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\vccorlib.h(356): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Done building project "DMMessage.vcxproj" -- FAILED.
5>------ Build started: Project: SystemConfigurator, Configuration: Release ARM ------
3>stdafx.cpp
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\objidl.idl
2>objidl.idl
5>stdafx.cpp
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\unknwn.idl
2>unknwn.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\wtypes.idl
2>wtypes.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\wtypesbase.idl
2>wtypesbase.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\basetsd.h
2>basetsd.h
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\guiddef.h
2>guiddef.h
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\oaidl.acf
2>oaidl.acf
6>------ Build started: Project: ServiceConfiguratorProxyClientLib, Configuration: Release ARM ------
6>pch.cpp
6>pch.cpp : fatal error C1192: #using failed on 'C:\iot-core-azure-dm-client\src\ARM\Release\DMMessage\Microsoft.Devices.Management.Message.winmd'
6>        'The system cannot find the file specified.'
6>Done building project "ServiceConfiguratorProxyClientLib.vcxproj" -- FAILED.
7>------ Build started: Project: IoTDMClientLib, Configuration: Release ARM ------
7>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\ARM\Release\DMMessage\Microsoft.Devices.Management.Message.winmd' could not be found
7>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\ARM\Release\ServiceConfiguratorProxyClientLib\SystemConfiguratorProxyClient.winmd' could not be found
8>------ Build started: Project: IoTDMClientLibTests, Configuration: Release ARM ------
3>ETWLogger.cpp
8>C:\iot-core-azure-dm-client\tests\IoTDMClientLibTests\IoTDMClientLibTests.csproj : XamlCompiler error WMC1006: Cannot resolve Assembly or Windows Metadata file 'Windows.Foundation.UniversalApiContract.winmd'
8>C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\XamlCompiler\Microsoft.Windows.UI.Xaml.Common.targets(261,5): Xaml Internal Error error WMC9999: Type universe cannot resolve assembly: Windows.Foundation.UniversalApiContract, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime.
3>Logger.cpp
3>StringUtils.cpp
3>Utils.cpp
5>DMException.cpp
5>ETWLogger.cpp
5>Impersonator.cpp
3>DeviceHealthAttestationCSP.cpp
5>JsonHelpers.cpp
5>Logger.cpp
3>MdmProvision.cpp
5>PermissionsManager.cpp
5>PermissionsSnapshot.cpp
5>PermissionsTracer.cpp
5>PolicyHelper.cpp
3>TaskQueue.cpp
5>SecurityAttributes.cpp
5>StringUtils.cpp
5>TimeHelpers.cpp
3>CertificateManagementTest.cpp
5>Utils.cpp
5>DMMessageHelper.cpp
3>CSPTests.cpp
3>DeviceHealthAttestationTest.cpp
5>SerializationHelper.cpp
3>TestUtils.cpp
5>TpmSupport.cpp
5>AppCfg.cpp
3>WifiManagementTest.cpp
5>CertificateInfo.cpp
5>CertificateManagement.cpp
5>CertificateStoreCSP.cpp
5>Compiling...
5>ClientCertificateInstallCSP.cpp
5>CustomDeviceUiCsp.cpp
3>Generating code
5>DeviceHealthAttestationCSP.cpp
5>EnterpriseModernAppManagementCSP.cpp
3>Finished generating code
5>MdmProvision.cpp
3>CSPTests.vcxproj -> C:\iot-core-azure-dm-client\src\ARM\Release\CSPTests.exe
5>RebootCSP.cpp
5>RemoteWipeCSP.cpp
5>WifiCSP.cpp
5>DMService.cpp
5>ServiceManager.cpp
5>SystemConfigurator.cpp
5>SystemConfiguratorProxy.cpp
5>TaskQueue.cpp
5>TimeCfg.cpp
5>TimeService.cpp
5>WindowsTelemetry.cpp
5>Blob.cpp
5>CommandProcessor.cpp
5>DiagnosticLogCSP.cpp
5>WindowsUpdatePolicy.cpp
5>DMStorage.cpp
5>SystemConfiguratorProxy_s.c
5>Generating code
5>Finished generating code
5>SystemConfigurator.vcxproj -> C:\iot-core-azure-dm-client\src\ARM\Release\SystemConfigurator.exe
9>------ Build started: Project: Toaster, Configuration: Release ARM ------
10>------ Build started: Project: IoTDMBackground, Configuration: Release ARM ------
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\IoTDMClientLib\bin\ARM\Release\IoTDMClient.dll' could not be found
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\ARM\Release\DMMessage\Microsoft.Devices.Management.Message.winmd' could not be found
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\ARM\Release\ServiceConfiguratorProxyClientLib\SystemConfiguratorProxyClient.winmd' could not be found
9>C:\iot-core-azure-dm-client\samples\ToasterApp\Toaster.csproj : XamlCompiler error WMC1006: Cannot resolve Assembly or Windows Metadata file 'Windows.Foundation.UniversalApiContract.winmd'
9>C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\XamlCompiler\Microsoft.Windows.UI.Xaml.Common.targets(261,5): Xaml Internal Error error WMC9999: Type universe cannot resolve assembly: Windows.Foundation.UniversalApiContract, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime.
========== Build: 3 succeeded, 6 failed, 3 up-to-date, 1 skipped ==========

RELEASE / X86

1>------ Build started: Project: DMMessage, Configuration: Release Win32 ------
2>------ Build started: Project: SystemConfiguratorProxyInterface, Configuration: Release Win32 ------
3>------ Build started: Project: CSPTests, Configuration: Release Win32 ------
4>------ Skipped Build: Project: E2ETestApp, Configuration: Release x86 ------
4>Project not selected to build for this solution configuration 
2>Processing .\SystemConfiguratorProxy.Idl
3>stdafx.cpp
2>SystemConfiguratorProxy.Idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\oaidl.idl
1>stdafx.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\vccorlib.h(356): error C3940: 'EventRegistrationToken': identifier not found - possible mismatch between compiler and library versions. Please ensure vccorlib.h/.lib, vccorlib120.dll and c1xx.dll match
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\vccorlib.h(356): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Done building project "DMMessage.vcxproj" -- FAILED.
5>------ Build started: Project: SystemConfigurator, Configuration: Release Win32 ------
2>oaidl.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\objidl.idl
2>objidl.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\unknwn.idl
2>unknwn.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\wtypes.idl
2>wtypes.idl
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\wtypesbase.idl
2>wtypesbase.idl
5>stdafx.cpp
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\basetsd.h
2>basetsd.h
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared\guiddef.h
2>guiddef.h
2>Processing C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um\oaidl.acf
2>oaidl.acf
6>------ Build started: Project: ServiceConfiguratorProxyClientLib, Configuration: Release Win32 ------
6>pch.cpp
6>pch.cpp : fatal error C1192: #using failed on 'C:\iot-core-azure-dm-client\src\Release\DMMessage\Microsoft.Devices.Management.Message.winmd'
6>        'The system cannot find the file specified.'
6>Done building project "ServiceConfiguratorProxyClientLib.vcxproj" -- FAILED.
7>------ Build started: Project: IoTDMClientLib, Configuration: Release x86 ------
3>ETWLogger.cpp
7>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\Release\DMMessage\Microsoft.Devices.Management.Message.winmd' could not be found
7>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\Win32\Release\ServiceConfiguratorProxyClientLib\SystemConfiguratorProxyClient.winmd' could not be found
8>------ Build started: Project: IoTDMClientLibTests, Configuration: Release x86 ------
3>Logger.cpp
8>C:\iot-core-azure-dm-client\tests\IoTDMClientLibTests\IoTDMClientLibTests.csproj : XamlCompiler error WMC1006: Cannot resolve Assembly or Windows Metadata file 'Windows.Foundation.UniversalApiContract.winmd'
8>C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\XamlCompiler\Microsoft.Windows.UI.Xaml.Common.targets(261,5): Xaml Internal Error error WMC9999: Type universe cannot resolve assembly: Windows.Foundation.UniversalApiContract, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime.
3>StringUtils.cpp
5>DMException.cpp
5>ETWLogger.cpp
5>Impersonator.cpp
5>JsonHelpers.cpp
3>Utils.cpp
5>Logger.cpp
5>PermissionsManager.cpp
5>PermissionsSnapshot.cpp
3>DeviceHealthAttestationCSP.cpp
5>PermissionsTracer.cpp
5>PolicyHelper.cpp
3>MdmProvision.cpp
5>SecurityAttributes.cpp
5>StringUtils.cpp
5>TimeHelpers.cpp
5>Utils.cpp
3>TaskQueue.cpp
5>DMMessageHelper.cpp
3>CertificateManagementTest.cpp
5>SerializationHelper.cpp
5>TpmSupport.cpp
3>CSPTests.cpp
5>AppCfg.cpp
3>DeviceHealthAttestationTest.cpp
5>CertificateInfo.cpp
5>CertificateManagement.cpp
3>TestUtils.cpp
5>CertificateStoreCSP.cpp
5>Compiling...
5>ClientCertificateInstallCSP.cpp
3>WifiManagementTest.cpp
5>CustomDeviceUiCsp.cpp
5>DeviceHealthAttestationCSP.cpp
5>EnterpriseModernAppManagementCSP.cpp
5>MdmProvision.cpp
3>Generating code
5>RebootCSP.cpp
3>1252 of 1270 functions (98.6%) were compiled, the rest were copied from previous compilation.
3>  24 functions were new in current compilation
3>  2 functions had inline decision re-evaluated but remain unchanged
3>Finished generating code
5>RemoteWipeCSP.cpp
3>CSPTests.vcxproj -> C:\iot-core-azure-dm-client\src\Release\CSPTests.exe
5>WifiCSP.cpp
5>DMService.cpp
5>ServiceManager.cpp
5>SystemConfigurator.cpp
5>SystemConfiguratorProxy.cpp
5>TaskQueue.cpp
5>TimeCfg.cpp
5>TimeService.cpp
5>WindowsTelemetry.cpp
5>Blob.cpp
5>CommandProcessor.cpp
5>DiagnosticLogCSP.cpp
5>WindowsUpdatePolicy.cpp
5>DMStorage.cpp
5>SystemConfiguratorProxy_s.c
5>Generating code
5>11785 of 18629 functions (63.3%) were compiled, the rest were copied from previous compilation.
5>  151 functions were new in current compilation
5>  6706 functions had inline decision re-evaluated but remain unchanged
5>Finished generating code
5>SystemConfigurator.vcxproj -> C:\iot-core-azure-dm-client\src\Win32\Release\SystemConfigurator.exe
9>------ Build started: Project: Toaster, Configuration: Release x86 ------
10>------ Build started: Project: IoTDMBackground, Configuration: Release x86 ------
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\IoTDMClientLib\bin\x86\Release\IoTDMClient.dll' could not be found
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\Release\DMMessage\Microsoft.Devices.Management.Message.winmd' could not be found
10>CSC : error CS0006: Metadata file 'C:\iot-core-azure-dm-client\src\Win32\Release\ServiceConfiguratorProxyClientLib\SystemConfiguratorProxyClient.winmd' could not be found
9>C:\iot-core-azure-dm-client\samples\ToasterApp\Toaster.csproj : XamlCompiler error WMC1006: Cannot resolve Assembly or Windows Metadata file 'Windows.Foundation.UniversalApiContract.winmd'
9>C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\XamlCompiler\Microsoft.Windows.UI.Xaml.Common.targets(261,5): Xaml Internal Error error WMC9999: Type universe cannot resolve assembly: Windows.Foundation.UniversalApiContract, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime.
========== Build: 3 succeeded, 6 failed, 3 up-to-date, 1 skipped ==========

Update readme

The readme still refers to the C SDK, which we're not using any more. Fix it.

Azure Blob storage (sub)folders not supported when distributing Appx packages

When distributing appx packages through Azure Blob storage, the implementation currently expects all files to be located within the root of the specified container. Folders or subfolders within this implementation are not supported and will yield an "container name is missing in " error.

Root cause is het AzureBlobFileTransfer class that implements the BlobInfoFromSource method. This method expects the input string to have exactly one slash, wheras an input string containing one or more subfolders might have two or more.

Documentation: set-timezone json example breaks UWP

The documentation JSON sample needs to be updated for timezone settings of desired properties otherwise UWP shuts down (due to nullref):

"microsoft" : {
"management" : {
"timeInfo": {
"timeZoneDaylightBias": -60,
"timeZoneDaylightDate": "3/2/2016 2:00:00 AM",
"timeZoneDaylightName": "Pacific Daylight Time",
"timeZoneStandardBias": 0,
"timeZoneStandardDate": "11/1/2016 2:00:00 AM",
"timeZoneStandardName": "Pacific Standard Time",
"timeZoneBias": 480,
"ntpServer": "time.windows.com",
"timeZoneStandardDayOfWeek": 1,
"timeZoneDaylightDayOfWeek": 1

}
}
}

Error when Building System Configurator

Cannot open include file: 'tlhelp32.h' : No such file or Directory Impersonator.cpp
Cannot open include file: 'Shlobl.h' : No such file or Directory Utils.cpp

Discrepancy in integration of SystemConfigurator service in device image

There seems to be a discrepancy in the explanation of how to properly implement the SystemConfigurator service within a test or retail image of a product.

The method mentioned in the documentation (here), describes a method that involves adding the executable to the build manifest. Additionally, it states that a custom CMD file should be added that will install the SystemConfigurator as a service upon first boot.

When reading the Core Manufacturing guide however (here), there seems to be a package available that handles the installation, namely AzureDM.Services.

It looks like the latter approach is desirable since it doesn't involve the requirement of a hardcoded administrator password.

Can not config the state of systemconfigurator service as auto

I have built the Device Management Binaries successfully, copied SystemConfigurator.exe into my Raspberry Pi3 running with Windows IoT Core 16299, and then installed the service successfully. I wanted to set the service as auto-start when device reboots using the following command:

sc.exe config systemconfigurator start=auto

The response of this command is :

[SC] ChangeServiceConfig SUCCESS

But when reboot the device, I checked the status of the _SystemConfigurator service through the command like:

sc.exe query systemconfigurator

The service does not seem to really auto start.

SERVICE_NAME: systemconfigurator
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1067 (0x42b)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

Unify DMMessage serialization code

Can we create a WinRT Component that handles DMMessage serialization (and JSON class serialization for data)? Having it in both native code and managed code makes testing it hard (you have to validate the native serialization, validate that the managed code can read what the native code writes, etc).

Add Links to the Samples page

iot-core-azure-dm-client/docs/samples.md

Under Running the Samples, for the bolded sections, suggest adding links.
Example:

  • Setup your Azure IoTHub account <-- include a link to the Azure website that shows how to create an IoT Hub
  • Install Visual Studio 2015 Update 3 <-- is this out of date .. should it be a link to where to download latest Visual Studio?
  • Setup your IoT Core device using IoT Dashboard <-- include a link to where to downtown IoT Dashboard

Status for SyncML Replace commands are ignored

The result of the Replace command typically looks like this:

<?xml version="1.0" encoding="utf-16"?>
<SyncML>
<SyncHdr/>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>1</CmdRef>
<Cmd>Replace</Cmd>
<Data>405</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>

However, the code that parses the XML only looks at the first Status node and ignores the second one.

To repro, try ./Device/Vendor/MSFT/Policy/Config/Update/BranchReadinessLevel .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.