Aracılığıyla paylaş


Çok adımlı sıralı yürütme

Çok adımlı sıralı yürütme, havadan güncelleştirme dağıtırken önceden yükleme ve yükleme sonrası görevleri çalıştırma olanağı sağlar. Bu özellik, Genel Önizleme Yenileme Güncelleştirme Bildirimi v4 şemasının bir parçasıdır.

Genel önizleme yenileme sürümünün bir parçası olarak aşağıdaki değişiklikleri gözden geçirmeden önce Güncelleştirme Bildirimi belgelerine bakın.

Çok adımlı sıralı yürütme ile iki tür adım vardır:

  • Satır içi adım (varsayılan)
  • Başvuru adımı

Bir satır içi adımla örnek bir güncelleştirme bildirimi:

{
    "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"
}

İki satır içi adımla örnek bir güncelleştirme bildirimi:

{
    "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"
}

Bir başvuru adımıyla örnek bir güncelleştirme bildirimi:

  • Alt güncelleştirmeye başvuran üst güncelleştirme

    {
        "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"
    }
    
  • Satır içi adımlarla alt güncelleştirme

    {
        "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\""
    }
    

Not

Güncelleştirme bildiriminde, bu dize adımın gerçekleştirilip gerçekleştirilmeyeceğini belirlemek için kullanılıyorsa her adımın farklı bir yüklüCriteria dizesi olmalıdır.

Üst güncelleştirmeler ve alt güncelleştirmeler

Güncelleştirme bildirimleri birbirine başvurduğunda, üst düzey bildirim üst güncelleştirme olarak adlandırılır ve başvuru adımında belirtilen bildirim alt güncelleştirme olarak adlandırılır.

Şu anda bir alt güncelleştirme herhangi bir başvuru adımı içeremez. Bu kısıtlama içeri aktarma zamanında doğrulanır ve izlenmezse içeri aktarma başarısız olur.

Üst güncelleştirmede satır içi adımlar

Üst güncelleştirmede belirtilen satır içi adımlar konak cihaza uygulanır. Burada, bir adım işleyicisine (güncelleştirme içerik işleyicisi olarak da bilinir) geçirilen ADUC_WorkflowData nesnesi verileri içermez Selected Components . Bu tür bir adımın işleyicisi bir Component-Aware işleyici olmamalıdır.

Adım içerik işleyicisi, her adım için IsInstalled doğrulama mantığını uygular. Cihaz Güncelleştirmesi aracısının adım işleyicisi, IsInstalled() öğesinin 'true' anlamına gelen "900" sonuç koduyla sonuçlanıp sonuçlanmadığını denetleyerek belirli bir güncelleştirmenin zaten yüklü olup olmadığını denetler. Bir güncelleştirme zaten yüklüyse, zaten cihazda olan bir güncelleştirmeyi yeniden yüklememek için DU aracısı gelecekteki adımları atlar çünkü adımın gerçekleştirilip gerçekleştirilmeyeceğini belirlemek için bu güncelleştirmeyi kullanırız.

Bir güncelleştirme sonucunu raporlamak için, adım işleyici yürütmesinin sonucu istenen sonuç dosyasındaki --result-file seçeneğinde belirtildiği gibi ADUC_Result yapısına yazılmalıdır. Ardından yürütme sonuçlarına bağlı olarak, başarı için 0 döndürür, önemli hatalar için -1 veya 0xFF döndürür.

Daha fazla bilgi için bkz . Adım içerik işleyicisi ve Özel bileşen kullanan içerik işleyicisi uygulama.

Üst güncelleştirmede başvuru adımları

Üst güncelleştirmede belirtilen başvuru adımları, konak cihazındaki veya bu cihaza bağlı bileşenlere uygulanır. Başvuru adımı, alt güncelleştirme olarak adlandırılan başka bir güncelleştirmenin güncelleştirme tanımlayıcısı içeren bir adımdır.

Bir başvuru adımını işlerken, adım işleyicisi başvuru adımı verilerinde belirtilen ayrılmış bir güncelleştirme bildirim dosyasını indirir ve ardından dosya bütünlüğünü doğrular. Ardından, adım işleyicisi alt güncelleştirme bildirimini ayrıştırır ve alt güncelleştirme bildirimindeki verileri ve üst güncelleştirme bildirimindeki dosya URL'leri bilgilerini birleştirerek bir ADUC_Workflow nesnesi (alt iş akışı verileri olarak da bilinir) oluşturur. Bu alt iş akışı verilerinin 'level' özelliği de '1' olarak ayarlanmıştır.

Not

Şu anda alt güncelleştirmeler herhangi bir başvuru adımı içeremez.

Ayrılmış güncelleştirme bildirimleri

IoT Hub ikiz veri boyutu sınırları nedeniyle dağıtım hatasını önlemek için, tüm büyük güncelleştirme bildirimleri ayrılmış güncelleştirme bildirimi olarak da adlandırılan bir JSON veri dosyası biçiminde teslim edilir.

Büyük içeriğe sahip bir güncelleştirme IoT Hub için Cihaz Güncelleştirmesi'ne aktarılırsa, oluşturulan güncelleştirme bildirimi, Güncelleştirme Bildirimi'nin tam verilerini içeren adlı Detached Update Manifestbaşka bir yük dosyası içerir.

UpdateManifest Cihaz veya modül ikizindeki özelliği, ayrılmış güncelleştirme bildirimi dosyası bilgilerini içerir.

PnP özelliği değiştirilmiş olayı işlenirken, Cihaz Güncelleştirmesi aracısı ayrılmış güncelleştirme bildirim dosyasını otomatik olarak indirir ve tam güncelleştirme bildirimi verilerini içeren bir ADUC_WorkflowData nesnesi oluşturur.