Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die mehrstufige geordnete Ausführung bietet Ihnen die Möglichkeit, Aufgaben vor der Installation und nach der Installation auszuführen, wenn Sie ein Over-the-Air-Update bereitstellen. Diese Funktion ist Teil des Schemas "Public Preview Refresh Update Manifest v4".
Lesen Sie die Updatemanifestdokumentation , bevor Sie die folgenden Änderungen im Rahmen der öffentlichen Vorschauaktualisierungsversion überprüfen.
Bei mehrstufiger geordneter Ausführung gibt es zwei Arten von Schritten:
- Inlineschritt (Standardwert)
- Referenzschritt
Beispiel für ein Updatemanifest mit einem Inlineschritt:
{
"updateId": {...},
"isDeployable": true,
"compatibility": [
{
"deviceManufacturer": "du-device",
"deviceModel": "e2e-test"
}
],
"instructions": {
"steps": [
{
"description": "Example APT update that install libcurl4-doc on a host device.",
"handler": "microsoft/apt:1",
"files": [
"apt-manifest-1.0.json"
],
"handlerProperties": {
"installedCriteria": "apt-update-test-1.0"
}
}
]
},
"manifestVersion": "4.0",
"importedDateTime": "2021-11-16T14:54:55.8858676Z",
"createdDateTime": "2021-11-16T14:50:47.3511877Z"
}
Beispiel für ein Updatemanifest mit zwei Inlineschritten:
{
"updateId": {...},
"isDeployable": true,
"compatibility": [
{
"deviceManufacturer": "du-device",
"deviceModel": "e2e-test"
}
],
"instructions": {
"steps": [
{
"description": "Install libcurl4-doc on host device",
"handler": "microsoft/apt:1",
"files": [
"apt-manifest-1.0.json"
],
"handlerProperties": {
"installedCriteria": "apt-update-test-2.2"
}
},
{
"description": "Install tree on host device",
"handler": "microsoft/apt:1",
"files": [
"apt-manifest-tree-1.0.json"
],
"handlerProperties": {
"installedCriteria": "apt-update-test-tree-2.2"
}
}
]
},
"manifestVersion": "4.0",
"importedDateTime": "2021-11-16T20:21:33.6514738Z",
"createdDateTime": "2021-11-16T20:19:29.4019035Z"
}
Beispiel für ein Updatemanifest mit einem Referenzschritt:
Das übergeordnete Update, das auf ein untergeordnetes Update verweist
{ "updateId": {...}, "isDeployable": true, "compatibility": [ { "deviceManufacturer": "du-device", "deviceModel": "e2e-test" } ], "instructions": { "steps": [ { "type": "reference", "description": "Cameras Firmware Update", "updateId": { "provider": "contoso", "name": "virtual-camera", "version": "1.2" } } ] }, "manifestVersion": "4.0", "importedDateTime": "2021-11-17T07:26:14.7484389Z", "createdDateTime": "2021-11-17T07:22:10.6014567Z" }Das Kinder-Update in Schritten dargestellt
{ "updateId": { "provider": "contoso", "name": "virtual-camera", "version": "1.2" }, "isDeployable": false, "compatibility": [ { "group": "cameras" } ], "instructions": { "steps": [ { "description": "Cameras Update - pre-install step", "handler": "microsoft/script:1", "files": [ "contoso-camera-installscript.sh" ], "handlerProperties": { "scriptFileName": "contoso-camera-installscript.sh", "arguments": "--pre-install-sim-success --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path", "installedCriteria": "contoso-virtual-camera-1.2-step-0" } }, { "description": "Cameras Update - firmware installation (failure - missing file)", "handler": "microsoft/script:1", "files": [ "contoso-camera-installscript.sh", "camera-firmware-1.1.json" ], "handlerProperties": { "scriptFileName": "missing-contoso-camera-installscript.sh", "arguments": "--firmware-file camera-firmware-1.1.json --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path", "installedCriteria": "contoso-virtual-camera-1.2-step-1" } }, { "description": "Cameras Update - post-install step", "handler": "microsoft/script:1", "files": [ "contoso-camera-installscript.sh" ], "handlerProperties": { "scriptFileName": "contoso-camera-installscript.sh", "arguments": "--post-install-sim-success --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path", "installedCriteria": "contoso-virtual-camera-1.2-stop-2" } } ] }, "referencedBy": [ { "provider": "DU-Client-Eng", "name": "MSOE-Update-Demo", "version": "3.1" } ], "manifestVersion": "4.0", "importedDateTime": "2021-11-17T07:26:14.7376536Z", "createdDateTime": "2021-11-17T07:22:09.2232968Z", "etag": "\"ad7a553d-24a8-492b-9885-9af424d44d58\"" }
Hinweis
Im Updatemanifest sollte jeder Schritt eine andere installedCriteria-Zeichenfolge aufweisen, wenn diese Zeichenfolge verwendet wird, um zu bestimmen, ob der Schritt ausgeführt werden soll.
Übergeordnete Updates und untergeordnete Updates
Wenn aktualisierungsmanifeste aufeinander verweisen, wird das Manifest der obersten Ebene als übergeordnetes Update bezeichnet, und ein in einem Referenzschritt angegebenes Manifest wird als untergeordnetes Update bezeichnet.
Derzeit kann ein untergeordnetes Update keine Referenzschritte enthalten. Diese Einschränkung wird zur Importzeit überprüft, und wenn der Import nicht befolgt wird, tritt ein Fehler auf.
Inline-Schritte in einem Hauptupdate
Inlineschritte, die in einem übergeordnetem Update angegeben sind, werden auf das Hostgerät angewendet. Hier wird das ADUC_WorkflowData-Objekt, das an einen Schritthandler (auch als Update-Inhaltshandler bezeichnet) übergeben wird, die Selected Components-Daten nicht enthalten. Der Handler für diesen Typ von Schritt sollte keinComponent-Aware Handler sein.
Der Schritte-Inhaltshandler wendet die IsInstalled-Validierungslogik für jeden Schritt an. Der Schritthandler des Geräteupdate-Agents überprüft, ob ein bestimmtes Update bereits installiert ist, indem überprüft wird, ob IsInstalled() zu einem Ergebniscode "900" führte, was "true" bedeutet. Wenn ein Update bereits installiert ist, wird der DU-Agent zukünftige Schritte überspringen, um zu vermeiden, dass ein Bereits auf dem Gerät installiertes Update neu installiert wird, da wir anhand dieses Schritts ermitteln können, ob der Schritt ausgeführt werden soll.
Um ein Aktualisierungsergebnis zu melden, muss das Ergebnis einer Ausführung eines Schritthandlers in ADUC_Result Struktur in eine gewünschte Ergebnisdatei geschrieben werden, wie in der Option "-result-file" angegeben. Basierend auf den Ergebnissen der Ausführung wird im Erfolgsfall 0 zurückgegeben, bei schwerwiegenden Fehlern hingegen -1 oder 0xFF.
Weitere Informationen finden Sie unter "Schritte des Inhaltshandlers und Implementieren eines benutzerdefinierten inhaltsfähigen Inhaltshandlers für Komponenten".
Referenzierte Schritte in einer übergeordneten Aktualisierung
Referenzschritte, die in einem übergeordneten Update angegeben sind, werden auf Komponenten angewendet, die auf oder mit dem Hostgerät verbunden sind. Ein Referenzschritt ist ein Schritt, der den Updatebezeichner eines anderen Updates enthält, das als untergeordnetes Update bezeichnet wird.
Beim Verarbeiten eines Referenzschritts lädt der Schrittehandler eine in den Referenzschrittdaten angegebene getrennte Updatemanifestdatei herunter und überprüft dann die Dateiintegrität. Als Nächstes analysiert der Schrittehandler das untergeordnete Updatemanifest und erstellt ein ADUC_Workflow -Objekt (auch als untergeordnete Workflowdaten bezeichnet), indem die Daten aus dem untergeordneten Updatemanifest und Datei-URLs aus dem übergeordneten Updatemanifest kombiniert werden. Diese Kind-Workflowdaten verfügen auch über ein "Level"-Attribut, das auf "1" festgelegt ist.
Hinweis
Derzeit können Kinderaktualisierungen keine Referenzschritte enthalten.
Getrennte Updatemanifeste
Um Bereitstellungsfehler aufgrund von IoT Hub Twin-Größenbeschränkungen zu vermeiden, wird jedes große Updatemanifest in Form einer JSON-Datendatei bereitgestellt, auch als getrenntes Updatemanifest bezeichnet.
Wenn ein Update mit großen Inhalten in Device Update für IoT Hub importiert wird, enthält das generierte Updatemanifest eine weitere Nutzlastdatei, Detached Update Manifestdie die vollständigen Daten des Updatemanifests enthält.
Die UpdateManifest Eigenschaft im Geräte- oder Modul-Twin enthält die Informationen zur abgetrennten Update-Manifestdatei.
Beim Verarbeiten des Änderungsereignisses der PnP-Eigenschaft lädt der Device-Update-Agent automatisch die separate Update-Manifestdatei herunter und erstellt ein ADUC_WorkflowData-Objekt, das die vollständigen Update-Manifestdaten enthält.