Vorbereiten eines Updates für den Import in Device Update for IoT Hub
Erfahren Sie, wie Sie ein neues Update abrufen und das Update für den Import in Device Update for IoT Hub vorbereiten.
Voraussetzungen
- Zugriff auf einen IoT Hub mit aktiviertem Device Update for IoT Hub.
- Ein für Device Update bereitgestelltes IoT-Gerät (oder ein entsprechender Simulator) in IoT Hub.
- PowerShell 5 oder später (einschließlich Linux-, macOS- und Windows-Installationen)
- Unterstützte Browser:
- Microsoft Edge
- Google Chrome
Abrufen eines Updates für Ihre Geräte
Nachdem Sie Device Update eingerichtet und Ihre Geräte bereitgestellt haben, benötigen Sie die Updatedatei(en), die Sie auf diesen Geräten bereitstellen möchten.
Wenn Sie Geräte von einem Original Equipment Manufacturer (OEM) oder Lösungsintegrator erworben haben, stellt die entsprechende Organisation höchstwahrscheinlich Updatedateien für Sie bereit, ohne dass Sie die Updates selbst erstellen müssen. Wenden Sie sich an den OEM oder Lösungsintegrator, um zu erfahren, wie Updates verfügbar gemacht werden.
Falls Ihre Organisation bereits Software für die von Ihnen verwendeten Geräte erstellt, werden die Updates für diese Software von der zuständigen Gruppe erstellt.
Beginnen Sie beim Erstellen eines Updates mit Device Update for IoT Hub je nach Szenario entweder mit dem imagebasierten oder mit dem paketbasierten Ansatz.
Erstellen eines grundlegenden Device Update-Importmanifests
Sobald Sie über Ihre Updatedateien verfügen, erstellen Sie ein Importmanifest, um das Update zu beschreiben. Wenn Sie es noch nicht getan haben, sollten Sie sich mit den grundlegenden Importkonzepten vertraut machen. Es ist zwar möglich, ein JSON-Importmanifest manuell mithilfe eines Text-Editors zu erstellen, in diesem Leitfaden wird jedoch PowerShell als Beispiel verwendet.
Tipp
Probieren Sie die Tutorials zu imagebasierten, paketbasierten oder Proxyupdates aus, wenn Sie dies noch nicht getan haben. Sie können auch einfach Beispiel-Importmanifestdateien aus diesen Tutorials als Referenz anzeigen.
Navigieren Sie aus PowerShell zu
Tools/AduCmdlets
in Ihrem lokalen Klon.Führen Sie die folgenden Befehle aus, nachdem Sie die folgenden Beispielparameterwerte durch Ihre eigenen Werte ersetzt haben: Anbieter, Name, Version, Eigenschaften, Handler, Installierte Kriterien, Dateien. Ausführliche Informationen 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 und bereit sind, Ihr Update zu importieren, können Sie zum Link „Nächste Schritte“ am unteren Rand 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 wie im vorherigen Abschnitt verwenden, um übergeordnete und untergeordnete Importmanifeste für komplexe Updates zu erstellen. Führen Sie die folgenden Befehle aus, nachdem Sie die Beispielparameterwerte durch Ihre eigenen ersetzt haben. Ausführliche Informationen 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