Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du hämtar en ny uppdatering och förbereder uppdateringen för import till Enhetsuppdatering för IoT Hub.
Förutsättningar
- Åtkomst till en IoT Hub med Enhetsuppdateringen för IoT Hub aktiverad.
- En IoT-enhet (eller simulator) som etablerats för enhetsuppdatering i IoT Hub.
- PowerShell 5 eller senare (inkluderar Installationer av Linux, macOS och Windows)
- Webbläsare som stöds:
- Microsoft Edge
- Google Chrome
Hämta en uppdatering för dina enheter
Nu när du har konfigurerat Enhetsuppdatering och etablerat dina enheter behöver du de uppdateringsfiler som du ska distribuera till dessa enheter.
Om du har köpt enheter från en OEM-tillverkare (Original Equipment Manufacturer) eller lösningsintegrerare tillhandahåller den organisationen förmodligen uppdateringsfiler åt dig, utan att du behöver skapa uppdateringarna. Kontakta OEM-tillverkaren eller lösningsintegreraren för att ta reda på hur de gör uppdateringar tillgängliga.
Om din organisation redan skapar programvara för de enheter som du använder är det samma grupp som ska skapa uppdateringarna för programvaran.
När du skapar en uppdatering som ska distribueras med enhetsuppdatering för IoT Hub börjar du med antingen den avbildningsbaserade eller paketbaserade metoden beroende på ditt scenario.
Skapa ett grundläggande importmanifest för enhetsuppdatering
När du har dina uppdateringsfiler skapar du ett importmanifest för att beskriva uppdateringen. Om du inte redan har gjort det bör du bekanta dig med de grundläggande importbegreppen. Även om det är möjligt att skapa ett JSON-importmanifest manuellt med hjälp av en textredigerare använder den här guiden PowerShell som exempel.
Tips
Prova självstudierna avbildningsbaserad, paketbaseradeller proxyuppdatering om du inte redan har gjort det. Du kan också bara visa exempel på importmanifestfiler från dessa självstudier som referens.
Klona
Azure/iot-hub-device-updateGit-lagringsplats.Navigera till
Tools/AduCmdletsi din lokala klon från PowerShell.Kör följande kommandon när du har ersatt följande exempelparametervärden med dina egna: Provider, Namn, Version, Egenskaper, Hanterare, Installerade villkor, Filer. Mer information om vilka värden du kan använda finns i Importera schema och API-information. Tänk särskilt på att samma exakta uppsättning kompatibilitetsegenskaper inte kan användas med fler än en kombination av provider och namn.
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
När du har skapat importmanifestet kan du bläddra till länken Nästa steg längst ned på den här sidan om du är redo att importera uppdateringen.
Skapa ett avancerat importmanifest för enhetsuppdatering för en proxyuppdatering
Om uppdateringen är mer komplex, till exempel en proxyuppdatering, kan du behöva skapa flera importmanifest. Du kan använda samma PowerShell-skript från föregående avsnitt för att skapa föräldra- och barnimportmanifest för komplexa uppdateringar. Kör följande kommandon när du har ersatt exempelparametervärdena med dina egna. Mer information om vilka värden du kan använda finns i Importera schema och API-information.
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