Siapkan pembaruan untuk diimpor ke Device Update for IoT Hub
Pelajari cara mendapatkan pembaruan baru dan siapkan pembaruan untuk mengimpor ke Device Update for IoT Hub.
Prasyarat
- Akses ke IoT Hub dengan Device Update for IoT Hub diaktifkan.
- Perangkat IoT (atau simulator) yang disediakan untuk Pembaruan Perangkat dalam IoT Hub.
- PowerShell 5 atau yang lebih baru (termasuk instalasi Linux, macOS, dan Windows)
- Browser yang didukung:
- Microsoft Edge
- Google Chrome
Mendapatkan pembaruan untuk perangkat Anda
Setelah menyiapkan Device Update dan menyiapkan perangkat, Anda memerlukan file pembaruan yang akan anda terapkan ke perangkat tersebut.
Jika Anda telah membeli perangkat dari Produsen Peralatan Asli (OEM) atau integrator solusi, organisasi tersebut kemungkinan besar akan menyediakan file pembaruan untuk Anda, tanpa mengharuskan Anda membuat pembaruan. Hubungi OEM atau integrator solusi untuk mengetahui cara mereka memberikan pembaruan.
Jika organisasi Anda sudah membuat perangkat lunak untuk perangkat yang Anda gunakan, grup yang sama akan menjadi pihak yang membuat pembaruan untuk perangkat lunak tersebut.
Saat membuat pembaruan yang akan digunakan menggunakan Device Update for IoT Hub, mulailah dengan pendekatan berbasis gambar atau berbasis paket tergantung pada skenario Anda.
Buatlah manifes impor Device Update dasar
Setelah Anda memiliki file pembaruan, buat manifes impor untuk menjelaskan pembaruan. Jika Anda belum melakukannya, pastikan untuk membiasakan diri dengan konsep impor dasar. Meskipun memungkinkan untuk menulis JSON manifes impor secara manual menggunakan editor teks, panduan ini akan menggunakan PowerShell sebagai contoh.
Tip
Coba tutorial berbasis gambar, berbasis paket, atau pembaruan proxy jika Anda belum mencobanya. Anda juga dapat melihat contoh file manifes impor dari tutorial tersebut sebagai referensi.
Klon
Azure/iot-hub-device-updateRepositori Git.Navigasikan ke
Tools/AduCmdletsdalam klon lokal Anda dari PowerShell.Jalankan perintah berikut setelah mengganti nilai parameter sampel berikut dengan data Anda yang mencakup: Penyedia, Nama, Versi, Properti, Pengendali, Kriteria Terpasang, File. Lihat Impor informasi skema dan API untuk detail tentang nilai yang dapat Anda gunakan. Khususnya, perhatikan bahwa set properti kompatibilitas yang sama persis tidak dapat digunakan dengan lebih dari satu kombinasi Penyedia dan Nama.
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
Setelah membuat manifes impor, jika Anda siap mengimpor pembaruan, Anda dapat langsung menuju ke tautan Langkah berikutnya di bagian bawah halaman ini.
Membuat manifes impor Device Update tingkat lanjut untuk pembaruan proxy
Jika pembaruan Anda lebih kompleks, seperti pembaruan proxy, Anda mungkin perlu membuat beberapa manifes impor. Anda dapat menggunakan script PowerShell yang sama dari bagian sebelumnya untuk membuat manifes impor induk dan anak untuk pembaruan yang kompleks. Jalankan perintah berikut setelah mengganti nilai parameter sampel dengan data Anda. Lihat Impor informasi skema dan API untuk detail tentang nilai yang dapat Anda gunakan.
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