Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med ordnad körning i flera steg kan du köra förinstallations- och efterinstallationsuppgifter när du distribuerar en over-the-air-uppdatering. Den här funktionen är en del av uppdateringsmanifestet v4 för offentlig förhandsversion.
Se dokumentationen för uppdateringsmanifestet innan du granskar följande ändringar som en del av uppdateringen av den offentliga förhandsversionen.
Vid flerstegskörning finns det två typer av steg:
- Inbyggt steg (standardläge)
- Referenssteg
Ett exempel på uppdateringsmanifest med ett infogat steg:
{
"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"
}
Ett exempel på uppdateringsmanifest med två steg i följd:
{
"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"
}
Ett exempel på uppdateringsmanifest med ett referenssteg:
Den överordnade uppdateringen som refererar till en underordnad uppdatering
{ "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" }Barnuppdatering med inlinjesteg
{ "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\"" }
Anmärkning
I uppdateringsmanifestet bör varje steg ha en annan installeradCriteria-sträng om strängen används för att avgöra om steget ska utföras eller inte.
Förälderuppdateringar och barnuppdateringar
När uppdateringsmanifest refererar till varandra kallas manifestet på den översta nivån för den överordnade uppdateringen och ett manifest som anges i ett referenssteg kallas för en underordnad uppdatering.
För närvarande kan en underordnad uppdatering inte innehålla några referenssteg. Den här begränsningen verifieras vid importtillfället och om den inte följs misslyckas importen.
Infogade steg i en huvuduppdatering
Infogade steg som anges i en överordnad uppdatering tillämpas på värdenheten. Här är ADUC_WorkflowData-objektet som skickas till en steghanterare (även kallad för innehållsuppdaterare) och det kommer inte att innehålla Selected Components-data. Hanteraren för den här typen av steg ska inte vara en Component-Aware hanterare.
Steginnehållshanteraren tillämpar IsInstalled-valideringslogik för varje steg. Enhetsuppdateringsagentens steghanterare kontrollerar om en viss uppdatering redan har installerats genom att kontrollera om IsInstalled() resulterade i en resultatkod "900" vilket betyder "sant". Om en uppdatering redan är installerad, för att undvika att installera om en uppdatering som redan finns på enheten, hoppar DU-agenten över framtida steg eftersom vi använder den för att avgöra om steget ska utföras eller inte.
Om du vill rapportera ett uppdateringsresultat måste resultatet av en steghanterarkörning skrivas till ADUC_Result struct i en önskad resultatfil som anges i alternativet --result-file. Sedan, baserat på resultatet av körningen, för lyckad körning, returnera 0; vid allvarliga fel, returnera -1 eller 0xFF.
Mer information finns i Steginnehållshanterare och Implementera en anpassad komponentmedveten innehållshanterare.
Referenssteg i en överordnad uppdatering
Referenssteg som anges i en huvuduppdatering tillämpas på komponenter som finns på eller är anslutna till värdenheten. Ett referenssteg är ett steg som innehåller uppdateringsidentifierare för en annan uppdatering, som kallas för en underordnad uppdatering.
När du bearbetar ett referenssteg hämtar steghanteraren en frånkopplad uppdateringsmanifestfil som anges i referensstegdata och validerar sedan filintegriteten. Därefter parsar steghanteraren det underordnade uppdateringsmanifestet och skapar ett ADUC_Workflow -objekt (även kallat underordnade arbetsflödesdata) genom att kombinera data från det underordnade uppdateringsmanifestet och information om fil-URL:er från det överordnade uppdateringsmanifestet. Dessa arbetsflödesdata för barn har också en egenskap 'nivå' inställd på "1".
Anmärkning
För närvarande kan underordnade uppdateringar inte innehålla några referenssteg.
Fristående uppdateringsmanifest
För att undvika distributionsfel på grund av storleksbegränsningar för IoT Hub-tvillingdata levereras alla stora uppdateringsmanifest i form av en JSON-datafil, även kallat ett fristående uppdateringsmanifest.
Om en uppdatering med stort innehåll importeras till Enhetsuppdatering för IoT Hub innehåller det genererade uppdateringsmanifestet en annan nyttolastfil med namnet Detached Update Manifest, som innehåller alla data i uppdateringsmanifestet.
Egenskapen UpdateManifest i enhets- eller modultvillingen kommer att innehålla information om den fristående uppdateringsmanifestfilen.
När PnP-egenskapen ändrades laddar enhetsuppdateringsagenten automatiskt ned den frånkopplade uppdateringsmanifestfilen och skapar ett ADUC_WorkflowData-objekt som innehåller fullständiga uppdateringsmanifestdata.