Lab 1f: Hinzufügen von Win32-Diensten zu einem Image

Windows 10 IoT Core unterstützt das Hinzufügen eines Win32 NT-Diensts zu einem Image.

Voraussetzungen/Anforderungen

Stellen Sie sicher, dass Sie ein einfaches Image in Erstellen eines Basisimages erstellt haben.

Die folgenden Tools müssen installiert sein, um diesen Abschnitt abzuschließen:

  • Windows Assessment and Deployment Kit (Windows ADK)

Hinweis

Die verwendete ADK-Version muss mit der Version der unten gezeigten IoT Core-Pakete übereinstimmen.

  • Windows 10 IoT Core-Pakete
  • IoT Core PowerShell-Umgebung
  • IoT Core-ADK-Add-Ons
  • Ein Texteditor wie der Windows-Editor oder VS Code

Hinzufügen einer Win32-Dienst-App zum Paketbuild

Um Ihre Win32-Dienst-App in den FFU-Image-Buildprozess einzuschließen, müssen Sie zuerst die EXE Datei hinzufügen, damit sie verpackt werden kann (mit buildpkg).

  1. Erstellen Sie ein Unterverzeichnis für Ihre Win32-Dienst-App unter C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages. Dieser enthält die XML- und EXE-Dateien, die beim Erstellen des Images eingebunden werden sollen. Ein funktionierende Beispiel zur Referenz finden Sie beispielsweise im Unterverzeichnis AzureDM.Services in C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.Services.

  2. Erstellen Sie eine XML-Datei mit dem Titel <your Win32 Service App Name>.wm.xml in dem Unterverzeichnis, das Sie aus Schritt 1 erstellt haben. Diese Datei gibt an, wie das Paket erstellt wird. Hier ist ein Beispiel dafür, wie diese Datei aussehen sollte (Sie würden die entsprechenden Einträge durch die Informationen für Ihre Win32-Dienst-App ersetzen):

<?xml version="1.0" encoding="utf-8"?>
<identity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Services"
namespace="AzureDM"
owner="$(OEMNAME)"
legacyName="$(OEMNAME).<your Win32 Service App Name>.Services" xmlns="urn:Microsoft.CompPlat/ManifestSchema.v1.00">
<onecorePackageInfo
targetPartition="MainOS"
releaseType="Production"
ownerType="OEM" />
<files>
<file
destinationDir="$(runtime.system32)"
source="<your Win32 Service App Name executable filename>" />
</files>
<service
name="<your Win32 Service App Name>"
start="auto"
type="win32OwnProcess"
objectName="LocalSystem"
errorControl="normal"
displayName="<your Win32 Service App Display Name>"
description="<your Win32 Service App Description>"
imagePath="<path and file name of your Win32 Service App>">
<failureActions
resetPeriod="86400">
<actions>
<action
type="restartService"
delay="1000" />
<action
type="restartService"
delay="1000" />
<action
type="restartService"
delay="1000" />
<action
type="none"
delay="0" />
</actions>
</failureActions>
</service>
</identity>

Hinweis

Der Bereich <service> in der XML-Datei enthält Win32-Dienst-spezifische Informationen. Wenn Sie eine Win32-Anwendung (z. B. eine Konsolen-App) hinzufügen, kann dieser Abschnitt weggelassen werden.

  1. Fügen Sie ihre EXE-Datei dem Unterverzeichnis aus Schritt 1 hinzu. Dies ist die ausführbare Datei Ihrer Win32-Dienst-App.

Packen der Win32-Dienst-App

Der nächste Schritt besteht darin, die Win32-Dienst-App-Datei zu packen,wobei Sie diese mit dem Windows ADK erstellen können (wenn Sie das FFU-Image erstellen).

  1. Öffnen Sie IoTCorePShell.cmd in Ihrem Arbeitsbereich. Sie sollten aufgefordert werden, die Datei als Administrator auszuführen.
  2. Erstellen Sie das Paket in einer CAB-Datei (mit New-IoTCabPackage).
New-IoTCabPackage <your Win32 Service App Name>
(or) buildpkg <your Win32 Service App Name>

Dadurch wird das Paket in einer CAB Datei im Unterverzeichnis \Build\<arch>\pkgs in Ihrem Arbeitsbereich erstellt.

Aktualisieren der Projektkonfigurationsdateien

Sie können ihre Produktkonfigurationsdateien jetzt aktualisieren, um Ihre App in die FFU-Imageerstellung einzuschließen.

  1. Fügen Sie mithilfe von Add-IoTProductFeature die Feature-ID für Ihr App-Paket hinzu, wobei Sie <your Win32 service app name> durch einen Bezeichner für Ihre Win32-Dienst-App ersetzen:
Add-IoTProductFeature <product name> Test <your Win32 service app name> -OEM
or addfid <product name> Test <your Win32 service app name> -OEM

Dadurch wird eine FeatureID hinzugefügt, die dem Bezeichner entspricht, den Sie für Ihre Win32-Dienst-App gewählt haben.

Erstellen und Testen eines Images

Erstellen Sie das FFU-Image erneut, wie unter Erstellen eines IoT-Core-Basisimages angegeben. Dazu müssen Sie nur den Befehl New-IoTFFUImage ausführen:

New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test 

Nachdem die FFU-Datei erstellt wurde (die jetzt Ihre App enthalten sollte), können Sie sie mit Flash auf Ihr Hardwaregerät übertragen, wie unter Erstellen eines Windows IoT Core-Images mit Flash angegeben.

Nächste Schritte

Lab 1g: Erstellen eines verkaufsfähigen Images