Vícekrokové seřazené provádění
Vícekrokové seřazené provádění umožňuje spouštět předinstalační a poinstalační úlohy při nasazení aktualizace prostřednictvím bezdrátového vysílání. Tato možnost je součástí schématu aktualizace manifestu aktualizace verze Public Preview v4.
Než si projděte následující změny v rámci verze Public Preview, projděte si dokumentaci k manifestu aktualizace.
Při vícekrokovém seřazení provádění existují dva typy kroků:
- Vložený krok (výchozí)
- Referenční krok
Příklad manifestu aktualizace s jedním vloženým krokem:
{
"updateId": {...},
"isDeployable": true,
"compatibility": [
{
"manufacturer": "du-device",
"model": "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"
}
Příklad manifestu aktualizace se dvěma vloženými kroky:
{
"updateId": {...},
"isDeployable": true,
"compatibility": [
{
"manufacturer": "du-device",
"model": "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"
}
Příklad manifestu aktualizace s jedním krokem odkazu:
Nadřazená aktualizace, která odkazuje na podřízenou aktualizaci
{ "updateId": {...}, "isDeployable": true, "compatibility": [ { "manufacturer": "du-device", "model": "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" }
Podřízená aktualizace s vloženými kroky
{ "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\"" }
Poznámka
V manifestu aktualizace by měl mít každý krok jiný řetězec installedCriteria , pokud se tento řetězec používá k určení, jestli se má krok provést nebo ne.
Aktualizace pro rodiče a podřízené aktualizace
Když manifesty aktualizací odkazují na sebe navzájem, manifest nejvyšší úrovně se nazývá nadřazená aktualizace a manifest zadaný v kroku odkazu se nazývá podřízená aktualizace.
Podřízená aktualizace v současné době nemůže obsahovat žádné referenční kroky. Toto omezení se ověří v době importu, a pokud ho nedodržíte, import se nezdaří.
Vložené kroky v nadřazené aktualizaci
Vložené kroky zadané v nadřazené aktualizaci se použijí na hostitelské zařízení. Zde ADUC_WorkflowData objekt, který je předán obslužné rutině kroku (označuje se také jako obslužná rutina obsahu aktualizace) a nebude obsahovat Selected Components
data. Obslužnou rutinou pro tento typ kroku by neměla být obslužná rutina Component-Aware
.
Obslužná rutina obsahu kroky použije logiku ověřování IsInstalled pro každý krok. Obslužná rutina kroku agenta aktualizace zařízení zkontroluje, jestli už je konkrétní aktualizace nainstalovaná, a to tak, že zkontroluje, jestli výsledkem isInstalled() byl kód výsledku 900, což znamená "true". Pokud už je aktualizace nainstalovaná, aby se zabránilo přeinstalaci aktualizace, která už je v zařízení, přeskočí agent DU budoucí kroky, protože je používáme k určení, jestli se má tento krok provést, nebo ne.
Chcete-li ohlásit výsledek aktualizace, musí být výsledek spuštění obslužné rutiny kroku zapsán do ADUC_Result struktury v souboru požadovaného výsledku, jak je uvedeno v parametru --result-file. Na základě výsledků spuštění pak pro úspěch vraťte hodnotu 0, pro všechny závažné chyby vrátí hodnotu -1 nebo 0xFF.
Další informace najdete v tématech Popisovač obsahu Kroky a Implementace vlastní obslužné rutiny obsahu podporující komponenty.
Referenční kroky v nadřazené aktualizaci
Referenční kroky zadané v nadřazené aktualizaci se použijí u součástí hostitelského zařízení nebo připojených k hostitelskému zařízení. Referenční krok je krok, který obsahuje identifikátor aktualizace jiné aktualizace označovaný jako podřízená aktualizace.
Při zpracování kroku odkazu obslužná rutina kroků stáhne odpojený soubor manifestu aktualizace zadaný v datech referenčního kroku a pak ověří integritu souboru. Dále obslužná rutina kroků analyzuje manifest podřízené aktualizace a vytvoří objekt ADUC_Workflow (označovaný také jako data podřízeného pracovního postupu) kombinováním dat z podřízeného manifestu aktualizace a informací o adresách URL souborů z nadřazeného manifestu aktualizace. Tato podřízená data pracovního postupu mají také vlastnost level nastavenou na hodnotu 1.
Poznámka
Podřízené aktualizace v současné době nemůžou obsahovat žádné referenční kroky.
Odpojené manifesty aktualizací
Aby se zabránilo selhání nasazení kvůli omezením velikosti dat IoT Hub dvojčete, všechny velké manifesty aktualizací se doručí ve formě datového souboru JSON, označovaného také jako odpojený manifest aktualizace.
Pokud se aktualizace s velkým obsahem importuje do služby Device Update pro IoT Hub, vygenerovaný manifest aktualizace bude obsahovat další soubor datové části s názvem Detached Update Manifest
, který obsahuje úplná data manifestu aktualizace.
Vlastnost UpdateManifest
ve dvojčeti zařízení nebo modulu bude obsahovat informace o odpojených souborech manifestu aktualizace.
Při zpracování události změny vlastnosti PnP agent aktualizace zařízení automaticky stáhne odpojený soubor manifestu aktualizace a vytvoří ADUC_WorkflowData objekt, který obsahuje úplná data manifestu aktualizace.