Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Obtenga información sobre cómo obtener una nueva actualización y preparar la actualización para importarla en Device Update para IoT Hub.
Prerrequisitos
- Acceso a IoT Hub con Device Update para IoT Hub habilitado.
- Un dispositivo IoT (o simulador) aprovisionado en IoT Hub para la actualización de dispositivos.
- PowerShell 5 o posterior (incluye instalaciones de Linux, macOS y Windows)
- Exploradores compatibles:
- Microsoft Edge
- Google Chrome
Obtención de una actualización para los dispositivos
Ahora que ha configurado Device Update y aprovisionado los dispositivos, necesitará los archivos de actualización que implementará en esos dispositivos.
Si ha adquirido dispositivos de un fabricante de equipos originales (OEM) o integrador de soluciones, es probable que esa organización proporcione archivos de actualización para usted, sin necesidad de crear las actualizaciones. Póngase en contacto con el OEM o el integrador de soluciones para saber cómo facilitan sus actualizaciones.
Si su organización ya crea software para los dispositivos que usa, ese mismo grupo será el que creará las actualizaciones de ese software.
Al crear una actualización que se va a implementar mediante Device Update para IoT Hub, comience con el enfoque basado en imágenes o basado en paquetes en función de su escenario.
Creación de un manifiesto de importación básico de Device Update
Una vez que tenga los archivos de actualización, cree un manifiesto de importación para describir la actualización. Si aún no lo ha hecho, asegúrese de familiarizarse con los conceptos básicos de importación. Aunque es posible crear manualmente un json de manifiesto de importación mediante un editor de texto, esta guía usará PowerShell como ejemplo.
Sugerencia
Pruebe los tutoriales de actualización basados en imágenes, basados en paquetes, o de proxy si aún no lo ha hecho. También puede ver solamente los archivos de ejemplo de manifiesto de importación de esos tutoriales como referencia.
Clon
Azure/iot-hub-device-updateRepositorio de Git.Navega a
Tools/AduCmdletsen tu clon local utilizando PowerShell.Ejecute los siguientes comandos después de reemplazar los siguientes valores de parámetro de ejemplo por los suyos propios: Provider, Name, Version, Properties, Handler, Installed Criteria, Files. Consulte Importación de información sobre el esquema y la API para obtener más información sobre los valores que puede usar. En concreto, tenga en cuenta que no se puede usar el mismo conjunto exacto de propiedades de compatibilidad con más de una combinación de proveedor y nombre.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process Import-Module ./AduUpdate.psm1 $updateId = New-AduUpdateId -Provider Contoso -Name Toaster -Version 1.0 $compat = New-AduUpdateCompatibility -Properties @{ deviceManufacturer = 'Contoso'; deviceModel = 'Toaster' } $installStep = New-AduInstallationStep -Handler 'microsoft/swupdate:1'-HandlerProperties @{ installedCriteria = '1.0' } -Files 'path to your update file' $update = New-AduImportManifest -UpdateId $updateId -Compatibility $compat -InstallationSteps $installStep # Write the import manifest to a file, ideally next to the update file(s). $update | Out-File "./$($updateId.provider).$($updateId.name).$($updateId.version).importmanifest.json" -Encoding utf8
Una vez que haya creado el manifiesto de importación, si está listo para importar la actualización, puede desplazarse al vínculo Pasos siguientes en la parte inferior de esta página.
Creación de un manifiesto de importación avanzada de Device Update para una actualización de proxy
Si la actualización es más compleja, como una actualización de proxy, es posible que tenga que crear varios manifiestos de importación. Puede usar el mismo script de PowerShell de la sección anterior para crear manifiestos de importación primarios y secundarios para actualizaciones complejas. Ejecute los siguientes comandos después de reemplazar los valores de parámetro de ejemplo por los suyos propios. Consulte Importación de información sobre el esquema y la API para obtener más información sobre los valores que puede usar.
Import-Module $PSScriptRoot/AduUpdate.psm1 -ErrorAction Stop
# We will use arbitrary files as update payload files.
$childFile = "$env:TEMP/childFile.bin.txt"
$parentFile = "$env:TEMP/parentFile.bin.txt"
"This is a child update payload file." | Out-File $childFile -Force -Encoding utf8
"This is a parent update payload file." | Out-File $parentFile -Force -Encoding utf8
# ------------------------------
# Create a child update
# ------------------------------
Write-Host 'Preparing child update ...'
$microphoneUpdateId = New-AduUpdateId -Provider Contoso -Name Microphone -Version $UpdateVersion
$microphoneCompat = New-AduUpdateCompatibility -DeviceManufacturer Contoso -DeviceModel Microphone
$microphoneInstallStep = New-AduInstallationStep -Handler 'microsoft/swupdate:1' -Files $childFile
$microphoneUpdate = New-AduImportManifest -UpdateId $microphoneUpdateId `
-IsDeployable $false `
-Compatibility $microphoneCompat `
-InstallationSteps $microphoneInstallStep `
-ErrorAction Stop -Verbose:$VerbosePreference
# ------------------------------
# Create another child update
# ------------------------------
Write-Host 'Preparing another child update ...'
$speakerUpdateId = New-AduUpdateId -Provider Contoso -Name Speaker -Version $UpdateVersion
$speakerCompat = New-AduUpdateCompatibility -DeviceManufacturer Contoso -DeviceModel Speaker
$speakerInstallStep = New-AduInstallationStep -Handler 'microsoft/swupdate:1' -Files $childFile
$speakerUpdate = New-AduImportManifest -UpdateId $speakerUpdateId `
-IsDeployable $false `
-Compatibility $speakerCompat `
-InstallationSteps $speakerInstallStep `
-ErrorAction Stop -Verbose:$VerbosePreference
# ------------------------------------------------------------
# Create the parent update which parents the child update above
# ------------------------------------------------------------
Write-Host 'Preparing parent update ...'
$parentUpdateId = New-AduUpdateId -Provider Contoso -Name Toaster -Version $UpdateVersion
$parentCompat = New-AduUpdateCompatibility -DeviceManufacturer Contoso -DeviceModel Toaster
$parentSteps = @()
$parentSteps += New-AduInstallationStep -Handler 'microsoft/script:1' -Files $parentFile -HandlerProperties @{ 'arguments'='--pre'} -Description 'Pre-install script'
$parentSteps += New-AduInstallationStep -UpdateId $microphoneUpdateId -Description 'Microphone Firmware'
$parentSteps += New-AduInstallationStep -UpdateId $speakerUpdateId -Description 'Speaker Firmware'
$parentSteps += New-AduInstallationStep -Handler 'microsoft/script:1' -Files $parentFile -HandlerProperties @{ 'arguments'='--post'} -Description 'Post-install script'
$parentUpdate = New-AduImportManifest -UpdateId $parentUpdateId `
-Compatibility $parentCompat `
-InstallationSteps $parentSteps `
-ErrorAction Stop -Verbose:$VerbosePreference
# ------------------------------------------------------------
# Write all to files
# ------------------------------------------------------------
Write-Host 'Saving manifest and update files ...'
New-Item $Path -ItemType Directory -Force | Out-Null
$microphoneUpdate | Out-File "$Path/$($microphoneUpdateId.Provider).$($microphoneUpdateId.Name).$($microphoneUpdateId.Version).importmanifest.json" -Encoding utf8
$speakerUpdate | Out-File "$Path/$($speakerUpdateId.Provider).$($speakerUpdateId.Name).$($speakerUpdateId.Version).importmanifest.json" -Encoding utf8
$parentUpdate | Out-File "$Path/$($parentUpdateId.Provider).$($parentUpdateId.Name).$($parentUpdateId.Version).importmanifest.json" -Encoding utf8
Copy-Item $parentFile -Destination $Path -Force
Copy-Item $childFile -Destination $Path -Force
Write-Host "Import manifest JSON files saved to $Path" -ForegroundColor Green
Remove-Item $childFile -Force -ErrorAction SilentlyContinue | Out-Null
Remove-Item $parentFile -Force -ErrorAction SilentlyContinue | Out-Null