Подготовка обновления к импорту в службу Обновления устройств для Центра Интернета вещей
Узнайте, как получить новое обновление и подготовить обновление для импорта в службу Обновления устройств для Центра Интернета вещей.
Необходимые компоненты
- Доступ к Центру Интернета вещей, для которого настроено Обновление устройств для Центра Интернета вещей.
- Устройство Интернета вещей (или симулятор), подготовленное для службы Обновление устройств в Центре Интернета вещей.
- PowerShell 5 или более поздней версии (включает установки Linux, macOS и Windows)
- Поддерживаемые браузеры:
- Microsoft Edge
- Google Chrome
Получение обновления для устройств
Теперь, когда вы настроили Обновление устройств и подготовили устройства, вам потребуются файлы обновлений для развертывания на этих устройствах.
Если вы приобрели устройства от производителя оригинального оборудования (OEM) или интегратора решений, то эта организация, скорее всего, предоставит вам файлы обновления, и вам не придется создавать их самостоятельно. Обратитесь к поставщику вычислительной техники или к интегратору решений, чтобы узнать, как они предоставляют обновления.
Если ваша организация уже создает программное обеспечение для используемых устройств, то эта же группа людей будет отвечать и за создание обновлений для этого программного обеспечения.
При создании обновления для развертывания с помощью службы Обновление устройств для Центра Интернета вещей начните с подхода на основе образа или пакета в зависимости от вашего сценария.
Создание базового манифеста импорта Обновления устройств
После получения файлов обновления создайте манифест импорта для описания обновления. Обязательно ознакомьтесь с основными понятиями импорта, если это еще не сделано. Хотя файл JSON манифеста импорта можно создать вручную с помощью текстового редактора, в этом разделе в качестве примера будет использоваться PowerShell.
Совет
Если вы еще не сделали этого, попробуйте воспользоваться учебниками по обновлению на основе образов, пакетов или прокси-серверов. Вы также можете просто просмотреть примеры файлов манифеста импорта из этих учебников для справки.
Перейдите к элементу
Tools/AduCmdlets
в локальном клоне из PowerShell.После замены следующих примеров значений параметров на собственные выполните следующие команды: Provider, Name, Version, Properties, Handler, Installed Criteria, Files. Сведения о том, какие значения можно использовать, см. в разделе Импорт схемы и сведений об API. В частности, следует иметь в виду, что один и тот же набор свойств совместимости не может использоваться с несколькими сочетаниями поставщика и имени.
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
Если после создания манифеста импорта вы готовы импортировать обновление, вы можете прокрутить страницу вниз и щелкнуть ссылку «Следующие шаги».
Создание расширенного манифеста импорта Обновления устройств для обновления прокси-сервера
Если обновление сложное, например Обновление прокси-сервера, может потребоваться создать несколько манифестов импорта. Вы можете использовать тот же сценарий PowerShell из предыдущего раздела, чтобы создать родительские и дочерние манифесты импорта для сложных обновлений. Выполните следующие команды после замены значений параметров из образца собственными. Сведения о том, какие значения можно использовать, см. в разделе Импорт схемы и сведений об 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