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

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.

  1. KlonAzure/iot-hub-device-updateRepositori Git.

  2. Navigasikan ke Tools/AduCmdlets dalam klon lokal Anda dari PowerShell.

  3. 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

Langkah berikutnya