Préparer l’importation d’une mise à jour dans Device Update pour IoT Hub
Découvrez comment obtenir une nouvelle mise à jour et préparer son importation dans Device Update pour IoT Hub.
Prérequis
- Accès à un hub IoT avec Device Update pour IoT Hub activé.
- Un appareil (ou un simulateur) IoT provisionné pour Device Update dans IoT Hub.
- PowerShell 5 ou ultérieur (y compris les installations Linux, macOS et Windows)
- Navigateurs pris en charge :
- Microsoft Edge
- Google Chrome
Obtenir une mise à jour pour vos appareils
Après avoir configuré Device Update et provisionné vos appareils, vous avez besoin du ou des fichiers de mise à jour que vous allez déployer sur ces appareils.
Si vous avez acheté des appareils auprès d’un OEM (Original Equipment Manufacturer) ou d’un intégrateur de solutions, cette organisation fournira probablement des fichiers de mise à jour à votre place, sans que vous ayez à créer les mises à jour. Contactez l’OEM ou l’intégrateur de solutions pour savoir comment il rend les mises à jour disponibles.
Si votre organisation crée déjà des logiciels pour les appareils que vous utilisez, c’est ce même groupe qui créera les mises à jour de ces logiciels.
Quand vous créez une mise à jour à déployer à l’aide de Device Update pour IoT Hub, commencez par l’approche basée sur une image ou par l’approche basée sur un package en fonction de votre scénario.
Créer un manifeste d’importation Device Update de base
Une fois que vous avez vos fichiers de mise à jour, créez un manifeste d’importation pour décrire la mise à jour. Si vous ne l’avez pas déjà fait, veillez à vous familiariser avec les concepts d’importation de base. Bien qu’il soit possible de créer manuellement un manifeste d’importation au format JSON avec un éditeur de texte, ce guide utilise PowerShell comme exemple.
Conseil
Si vous ne l’avez pas déjà fait, essayez le tutoriel basé sur une image, celui basé sur un package ou celui sur la mise à jour de proxy. Vous pouvez également simplement consulter des exemples de manifestes d’importation à partir de ces tutoriels pour référence.
Accédez à
Tools/AduCmdlets
dans votre clone local à partir de PowerShell.Exécutez les commandes suivantes après avoir remplacé les valeurs de paramètre d’exemple suivantes par les vôtres : fournisseur, nom, version, propriétés, gestionnaire, critères installés, fichiers. Pour plus d’informations sur les valeurs que vous pouvez utiliser, consultez Importer les informations sur les schémas et les API . En particulier, sachez que le même ensemble exact de propriétés de compatibilité ne peut pas être utilisé avec plusieurs combinaisons fournisseur et nom.
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
Une fois que vous avez créé votre manifeste d’importation, si vous êtes prêt à importer votre mise à jour, vous pouvez accéder au lien Étapes suivantes en bas de cette page.
Créer un manifeste d’importation Device Update avancé pour une mise à jour de proxy
Si votre mise à jour est plus complexe, par exemple une mise à jour de proxy, vous devrez peut-être créer plusieurs manifestes d’importation. Vous pouvez utiliser le même script PowerShell de la section précédente pour créer des manifestes d’importation parents et enfants pour les mises à jour complexes. Exécutez les commandes suivantes après avoir remplacé les exemples de valeurs de paramètres par les vôtres. Pour plus d’informations sur les valeurs que vous pouvez utiliser, consultez Importer les informations sur les schémas et les 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