Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie ein neues Update erhalten und das Update für den Import in Device Update für IoT Hub vorbereiten.
Voraussetzungen
- Zugriff auf einen IoT Hub mit für den IoT Hub aktivierter Geräteaktualisierung.
- Ein für Device Update bereitgestelltes IoT-Gerät (oder ein entsprechender Simulator) in IoT Hub.
- PowerShell 5 oder höher (einschließlich Linux-, macOS- und Windows-Installationen)
- Unterstützte Browser:
- Microsoft Edge
- Google Chrome
Abrufen eines Updates für Ihre Geräte
Nachdem Sie nun Geräteupdate eingerichtet und Ihre Geräte bereitgestellt haben, benötigen Sie die Updatedatei(n), die Sie auf diesen Geräten bereitstellen.
Wenn Sie Geräte von einem Original Equipment Manufacturer (OEM) oder Lösungsintegrator erworben haben, stellt diese Organisation höchstwahrscheinlich Updatedateien für Sie bereit, ohne dass Sie die Updates erstellen müssen. Wenden Sie sich an den OEM oder Lösungsintegrator, um zu erfahren, wie Updates verfügbar gemacht werden.
Wenn Ihre Organisation bereits Software für die von Ihnen verwendeten Geräte erstellt, werden die gleichen Gruppen die Updates für diese Software erstellen.
Wenn Sie ein Update erstellen, das mithilfe von Device Update für IoT Hub bereitgestellt werden soll, beginnen Sie je nach Szenario entweder mit dem imagebasierten oder paketbasierten Ansatz.
Erstellen eines grundlegenden Device Update-Importmanifests
Nachdem Sie die Aktualisierungsdateien erstellt haben, erstellen Sie ein Importmanifest, um das Update zu beschreiben. Wenn Sie dies noch nicht getan haben, sollten Sie sich unbedingt mit den grundlegenden Importkonzeptenvertraut machen. Obwohl es möglich ist, ein Importmanifest-JSON manuell mit einem Text-Editor zu erstellen, verwendet dieses Handbuch PowerShell als Beispiel.
Tipp
Probieren Sie die bildbasierten-, paketbasierten- oder Proxy-Update--Tutorials aus, wenn Sie dies noch nicht getan haben. Sie können auch Beispielimportmanifestdateien aus diesen Lernprogrammen zur Referenz anzeigen.
Git-Repository klonen
Azure/iot-hub-device-update.Navigieren Sie in PowerShell zu
Tools/AduCmdletsin Ihrem lokalen Klon.Führen Sie die folgenden Befehle aus, nachdem Sie die angegebenen Beispiel-Parameterwerte durch Ihre eigenen Werte ersetzt haben: Provider, Name, Version, Properties, Handler, Installed Criteria, Files. Details zu den werten, die Sie verwenden können, finden Sie unter Importieren von Schema- und API-Informationen. Beachten Sie insbesondere, dass derselbe genaue Satz von Kompatibilitätseigenschaften nicht mit mehreren Anbieter- und Namenskombinationen verwendet werden kann.
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
Nachdem Sie Ihr Importmanifest erstellt haben, können Sie, wenn Sie bereit sind, Ihr Update zu importieren, zum Link "Nächste Schritte" unten auf dieser Seite scrollen.
Erstellen eines erweiterten Device Update-Importmanifests für ein Proxyupdate
Wenn Ihr Update komplexer ist, z. B. ein Proxyupdate, müssen Sie möglicherweise mehrere Importmanifeste erstellen. Sie können dasselbe PowerShell-Skript aus dem vorherigen Abschnitt verwenden, um über- und untergeordnete Import-Manifeste für komplexe Updates zu erstellen. Führen Sie die folgenden Befehle aus, nachdem Sie die Beispielparameterwerte durch Eigene ersetzt haben. Details zu den werten, die Sie verwenden können, finden Sie unter Importieren von Schema- und API-Informationen.
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