Uso de la característica de archivos relacionados para hacer referencia a varios archivos de actualización
Usa la característica de archivos relacionados cuando necesites expresar relaciones entre diferentes archivos de actualización en una sola actualización.
Al importar una actualización a Device Update for IoT Hub, se requiere un manifiesto de importación que contenga metadatos sobre la carga de actualización. Los metadatos de nivel de archivo del manifiesto de importación pueden ser una lista plana de archivos de carga de actualización en el caso más sencillo. En escenarios más avanzados, la característica de archivos relacionados ofrece una manera de especificar las relaciones entre varios archivos de actualización.
Al crear un manifiesto de importación mediante la característica de archivos relacionados, puedes agregar una colección de archivos relacionados a uno o varios de los archivos de carga principal. Un ejemplo de este concepto es la característica de actualización diferencial de Device Update, que usa archivos relacionados para especificar una actualización diferencial asociada a un archivo de imagen completo. En el escenario delta, la característica de archivos relacionados permite importar la imagen completa y la actualización diferencial como una única acción de actualización y, a continuación, se puede implementar en un dispositivo. Sin embargo, la característica de archivos relacionados no se limita a las actualizaciones diferenciales, ya que está diseñada para ser extensible para nuestros clientes en función de sus propios escenarios únicos.
Cómo definir archivos relacionados
La característica de archivos relacionados está disponible para los manifiestos de importación con la versión 5 o posterior.
Al agregar archivos relacionados a un manifiesto de importación, incluya la información siguiente:
File details
Proporcione el nombre de archivo, el tamaño y el hash para definir los archivos relacionados.
Controlador de descarga
Especifique cómo se procesan estos archivos relacionados para producir el archivo de destino. Para especificar el enfoque de procesamiento, incluye una propiedad
downloadHandler
en el manifiesto de importación. Es necesario incluirdownloadHandler
si especificas una colección no vacía derelatedFiles
en un elementofile
. Puedes especificar undownloadHandler
mediante una propiedadid
simple. El controlador de descargaid
tiene un límite de 64 caracteres ASCII.Propiedades de archivos relacionados
Puede proporcionar metadatos adicionales para el controlador de actualizaciones en el dispositivo, con el fin de saber cómo interpretar y usar correctamente los archivos que ha especificado como archivos relacionados. Estos metadatos se agregan como parte de un contenedor de propiedades
properties
a los objetosfile
yrelatedFile
.
Para obtener más información sobre el esquema de importación de archivos relacionados, consulte Objeto relatedFiles.
Ejemplo de importación de manifiesto mediante archivos relacionados
El siguiente manifiesto de importación de ejemplo muestra cómo se usa la característica de archivos relacionados para importar una actualización diferencial. En este ejemplo, puedes ver que en la sección files
hay una imagen completa especificada (full-image-file-name
) con un elemento properties
. A su vez, el elemento properties
tiene un elemento asociado relatedFiles
debajo. Dentro de la sección relatedFiles
, puedes ver otra sección properties
para el archivo de actualización diferencial (delta-from-v1-file-name
) y también un elemento downloadHandler
con la lista id
adecuada (microsoft/delta:1
).
Nota
En este ejemplo se usan actualizaciones diferenciales para mostrar cómo hacer referencia a archivos relacionados. Si quiere usar las actualizaciones diferenciales como una característica, consulte más información en la documentación sobre actualizaciones diferenciales.
{
"updateId": {
// provider, name, version
},
"compatibility": [
{
// manufacturer, model, etc.
}
],
"instructions": {
"steps": [
// Inline steps...
]
},
"files": [
{
// standard file properties
"fileName": "full-image-file-name",
"sizeInBytes": 12345,
"hashes": {
"SHA256": "full-image-file-hash"
},
"mimeType": "application/octet-stream",
// new properties
"properties ": {},
"relatedFiles": [
{
// delta from version 1.0.0.0
// standard file properties
"fileName": "delta-from-v1-file-name",
"sizeInBytes": 1234,
"hashes": {
"SHA256": "delta-from-v1-file-hash"
},
"mimeType": "application/octet-stream",
// new properties
"properties": {
"microsoft.sourceFileHash": "delta-source-file-hash",
"microsoft.sourceFileHashAlgorithm": "sha256"
}
}
],
// handler to download/process our related files
"downloadHandler": {
"id": "microsoft/delta:1"
}
}
],
"createdDateTime": "2021-12-01T01:12:21Z",
"manifestVersion": "5.0"
}
Ejemplo de comando init con archivos relacionados
El comando az iot du init v5 para crear un manifiesto de importación admite un parámetro --related-file
opcional.
El parámetro --related-file
toma una clave path
y properties
:
--related-file path=<replace with path(s) to your delta file(s), including the full file name> properties='{"microsoft.sourceFileHashAlgorithm": "sha256", "microsoft.sourceFileHash": "<replace with the source SWU image file hash>"}'
Por ejemplo:
az iot du update init v5 \
--update-provider Microsoft --update-name myBundled --update-version 2.0 \
--compat manufacturer=Contoso model=SpaceStation \
--step handler=microsoft/script:1 properties='{"arguments": "--pre"}' description="Pre-install script" \
--file path=/my/update/scripts/preinstall.sh downloadHandler=microsoft/delta:1 \
--related-file path=/my/update/scripts/related_preinstall.json properties='{"microsoft.sourceFileHashAlgorithm": "sha256"}' \
--step updateId.provider=Microsoft updateId.name=SwUpdate updateId.version=1.1 \
--step handler=microsoft/script:1 properties='{"arguments": "--post"}' description="Post-install script" \
--file path=/my/update/scripts/postinstall.sh
Pasos siguientes
- Más información sobre el esquema de manifiesto de importación
- Más información sobre las actualizaciones diferenciales