Een update voorbereiden om te importeren in Device Update voor IoT Hub
Meer informatie over het verkrijgen van een nieuwe update en het voorbereiden van de update voor het importeren in Device Update voor IoT Hub.
Vereisten
- Toegang tot een IoT Hub waarvoor Apparaatupdate voor IoT Hub is ingeschakeld.
- Een IoT-apparaat (of simulator) dat is ingericht voor Apparaatupdate in IoT Hub.
- PowerShell 5 of hoger (inclusief Linux-, macOS- en Windows-installaties)
- Ondersteunde browsers:
- Microsoft Edge
- Google Chrome
Een update voor uw apparaten verkrijgen
Nu u Device Update hebt ingesteld en uw apparaten hebt ingericht, hebt u de updatebestanden nodig die u op die apparaten gaat implementeren.
Als u apparaten hebt gekocht bij een OEM (Original Equipment Manufacturer) of oplossingsintegrator, levert die organisatie waarschijnlijk updatebestanden voor u, zonder dat u de updates hoeft te maken. Neem contact op met de OEM- of oplossingsintegrator om erachter te komen hoe ze updates beschikbaar maken.
Als uw organisatie al software maakt voor de apparaten die u gebruikt, is diezelfde groep degene die de updates voor die software moet maken.
Wanneer u een update maakt die moet worden geïmplementeerd met behulp van Device Update voor IoT Hub, begint u met de benadering op basis van installatiekopieën of pakketten, afhankelijk van uw scenario.
Een eenvoudig importmanifest voor Device Update maken
Zodra u uw updatebestanden hebt, maakt u een importmanifest om de update te beschrijven. Als u dit nog niet hebt gedaan, moet u vertrouwd raken met de basisconcepten voor importeren. Hoewel het mogelijk is om handmatig een JSON-importmanifest te maken met behulp van een teksteditor, gebruikt deze handleiding PowerShell als voorbeeld.
Tip
Probeer de zelfstudies voor installatiekopieën, pakketten of proxy-updates als u dit nog niet hebt gedaan. U kunt ook alleen voorbeeldmanifestbestanden uit deze zelfstudies bekijken voor naslaginformatie.
Git-opslagplaats klonen
Azure/iot-hub-device-update
.Navigeer naar
Tools/AduCmdlets
in uw lokale kloon vanuit PowerShell.Voer de volgende opdrachten uit nadat u de volgende voorbeeldparameterwaarden hebt vervangen door uw eigen waarden: Provider, Naam, Versie, Eigenschappen, Handler, Geïnstalleerde criteria, Bestanden. Zie Schema- en API-gegevens importeren voor meer informatie over de waarden die u kunt gebruiken. Houd er met name rekening mee dat dezelfde exacte set compatibiliteitseigenschappen niet kan worden gebruikt met meer dan één combinatie van provider en naam.
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
Nadat u het importmanifest hebt gemaakt en u klaar bent om de update te importeren, kunt u naar de koppeling Volgende stappen onder aan deze pagina schuiven.
Een geavanceerd importmanifest voor Device Update maken voor een proxy-update
Als uw update complexer is, zoals een proxy-update, moet u mogelijk meerdere importmanifesten maken. U kunt hetzelfde PowerShell-script uit de vorige sectie gebruiken om bovenliggende en onderliggende importmanifesten te maken voor complexe updates. Voer de volgende opdrachten uit nadat u de voorbeeldparameterwaarden hebt vervangen door uw eigen parameter. Zie Schema- en API-gegevens importeren voor meer informatie over de waarden die u kunt gebruiken.
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