Задание 1f. Добавление служб Win32 в образ
Windows 10 IoT Базовая поддерживает добавление службы Win32 NT в образ.
Предварительные требования и требования
Убедитесь, что вы создали базовый образ из раздела Создание базового образа.
Для работы с этим разделом вам потребуется установить следующие средства:
- Комплект средств для развертывания и оценки Windows (Windows ADK)
Примечание
Используемая версия ADK должна соответствовать версии основных пакетов Интернета вещей, используемых ниже.
- Пакеты Windows 10 IoT Базовая
- Среда PowerShell IoT Core
- IoT Core ADK Add-Ons
- Текстовый редактор, например Блокнот или VS Code
Добавление приложения службы Win32 в сборку пакета
Чтобы включить приложение службы Win32 в процесс сборки образа FFU, сначала необходимо добавить файл .EXE, чтобы его можно было упаковать (с помощью buildpkg
).
Создайте подкаталог для приложения службы Win32 в разделе
C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages
. Он будет содержать XML- и EXE-файлы, которые будут включены при сборке образа. Например, рабочий пример см. в подкаталоге AzureDM.Services по адресуC:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.Services
.Создайте XML-файл с именем
<your Win32 Service App Name>.wm.xml
в подкаталоге, созданном на шаге 1. В этом файле будет указан способ сборки пакета. Ниже приведен пример того, как должен выглядеть этот файл (вы замените соответствующие записи сведениями о приложении службы Win32):
<?xml version="1.0" encoding="utf-8"?>
<identity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Services"
namespace="AzureDM"
owner="$(OEMNAME)"
legacyName="$(OEMNAME).<your Win32 Service App Name>.Services" xmlns="urn:Microsoft.CompPlat/ManifestSchema.v1.00">
<onecorePackageInfo
targetPartition="MainOS"
releaseType="Production"
ownerType="OEM" />
<files>
<file
destinationDir="$(runtime.system32)"
source="<your Win32 Service App Name executable filename>" />
</files>
<service
name="<your Win32 Service App Name>"
start="auto"
type="win32OwnProcess"
objectName="LocalSystem"
errorControl="normal"
displayName="<your Win32 Service App Display Name>"
description="<your Win32 Service App Description>"
imagePath="<path and file name of your Win32 Service App>">
<failureActions
resetPeriod="86400">
<actions>
<action
type="restartService"
delay="1000" />
<action
type="restartService"
delay="1000" />
<action
type="restartService"
delay="1000" />
<action
type="none"
delay="0" />
</actions>
</failureActions>
</service>
</identity>
Примечание
Область <service>
в XML-файле указывает сведения, относящиеся к службе Win32. Если вы добавляете приложение Win32 (например, консольное приложение), этот раздел можно опустить.
- Добавьте EXE-файл в подкаталог из шага 1. Это исполняемый файл приложения службы Win32.
Упаковка приложения службы Win32
Следующим шагом является упаковка файла приложения-службы Win32, что позволит создать его с помощью Windows ADK (при сборке образа FFU).
- Откройте
IoTCorePShell.cmd
из рабочей области. Появится запрос на запуск от имени администратора. - Сборка пакета в файл .CAB (с помощью New-IoTCabPackage)
New-IoTCabPackage <your Win32 Service App Name>
(or) buildpkg <your Win32 Service App Name>
Пакет будет создан в файл .CAB в подкаталоге \Build\<arch>\pkgs
рабочей области.
Обновление файлов конфигурации проекта
Теперь вы можете обновить файлы конфигурации продукта, чтобы включить приложение в сборку образа FFU.
- Добавьте идентификатор компонента для пакета приложения с помощью add-IoTProductFeature, заменив
<your Win32 service app name>
идентификатором приложения службы Win32:
Add-IoTProductFeature <product name> Test <your Win32 service app name> -OEM
or addfid <product name> Test <your Win32 service app name> -OEM
При этом добавляется featureID, соответствующий идентификатору, выбранному для приложения-службы Win32.
Сборка и тестирование образа
Создайте образ FFU еще раз, как указано в разделе Создание базового образа Интернета вещей. Необходимо выполнить только команду New-IoTFFUImage :
New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test
После сборки файла FFU (теперь он должен включать ваше приложение), вы можете включить его на аппаратное устройство, как указано в разделе Flashing a Windows IoT Core Image.