Preparare un aggiornamento per l'importazione in Aggiornamento dispositivi per hub IoT
Informazioni su come ottenere un nuovo aggiornamento e preparare l'aggiornamento per l'importazione in Aggiornamento dispositivi per hub IoT.
Prerequisiti
- Accesso a un hub IoT con Aggiornamento del dispositivo per hub IoT abilitato.
- Provisioning di un dispositivo IoT (o simulatore) per Aggiornamento dispositivi all'interno di hub IoT.
- PowerShell 5 o versione successiva (include installazioni linux, macOS e Windows)
- Browser supportati:
- Microsoft Edge
- Google Chrome
Ottenere un aggiornamento per i dispositivi
Ora che è stato configurato l'aggiornamento dei dispositivi ed è stato effettuato il provisioning dei dispositivi, saranno necessari i file di aggiornamento che verranno distribuiti in tali dispositivi.
Se hai acquistato dispositivi da un oem (Original Equipment Manufacturer) o un integratore di soluzioni, l'organizzazione fornirà più probabilmente i file di aggiornamento, senza dover creare gli aggiornamenti. Contattare l'OEM o l'integratore di soluzioni per scoprire come rendere disponibili gli aggiornamenti.
Se l'organizzazione crea già software per i dispositivi usati, lo stesso gruppo sarà quello per creare gli aggiornamenti per tale software.
Quando si crea un aggiornamento da distribuire con Aggiornamento dispositivi per hub IoT, iniziare con l'approccio basato su immagini o basato su pacchetto a seconda dello scenario.
Creare un manifesto di importazione di Aggiornamento dispositivi di base
Dopo aver creato i file di aggiornamento, creare un manifesto di importazione per descrivere l'aggiornamento. Se non è già stato fatto, assicurarsi di acquisire familiarità con i concetti di importazione di base. Anche se è possibile creare manualmente un file JSON del manifesto di importazione usando un editor di testo, questa guida userà PowerShell come esempio.
Suggerimento
Se non è già stato fatto, provare le esercitazioni sull'aggiornamento basato su immagini, basate su pacchetti o proxy. È anche possibile visualizzare solo file manifesto di importazione di esempio da tali esercitazioni per riferimento.
Clonare
Azure/iot-hub-device-update
il repository Git.Passare a
Tools/AduCmdlets
nel clone locale da PowerShell.Eseguire i comandi seguenti dopo aver sostituito i valori dei parametri di esempio seguenti con il proprio: Provider, Name, Version, Properties, Handler, Installed Criteria, Files. Per informazioni dettagliate sui valori che è possibile usare, vedere Importare schema e API. In particolare, tenere presente che lo stesso set esatto di proprietà di compatibilità non può essere usato con più di una combinazione provider e nome.
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
Dopo aver creato il manifesto di importazione, se si è pronti per importare l'aggiornamento, è possibile scorrere fino al collegamento Passaggi successivi nella parte inferiore di questa pagina.
Creare un manifesto di importazione avanzato di Aggiornamento dispositivi per un aggiornamento proxy
Se l'aggiornamento è più complesso, ad esempio un aggiornamento proxy, potrebbe essere necessario creare più manifesti di importazione. È possibile usare lo stesso script di PowerShell della sezione precedente per creare manifesti di importazione padre e figlio per aggiornamenti complessi. Eseguire i comandi seguenti dopo aver sostituito i valori dei parametri di esempio con i propri. Per informazioni dettagliate sui valori che è possibile usare, vedere Importare schema e API.
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