实验 1f:将 Win32 服务添加到映像
Windows 10 IoT 核心版支持将 Win32 NT 服务添加到你的映像。
先决条件/要求
确保已根据创建基本映像创建了一个基本映像。
要完成此部分,需要安装以下工具:
- Windows 评估和部署工具包 (Windows ADK)
注意
使用的 ADK 版本必须与下面使用的 IoT 核心版包的版本匹配。
- Windows 10 IoT 核心版程序包
- IoT 核心版 PowerShell 环境
- IoT 核心版 ADK 加载项
- 文本编辑器,比如记事本或 VS Code
将 Win32 服务应用添加到包生成中
要将你的 Win32 服务应用包含在 FFU 映像生成过程中,首先必须添加 .EXE 文件,以便可以将其打包(使用 buildpkg
)。
在
C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages
下为你的 Win32 服务应用创建一个子目录。 这将包含生成映像时要包含的 XML 和 EXE 文件。 要查看示例,请参阅C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.Services
中的 AzureDM.Services 子目录以获取有效示例。在你从第 1 步创建的子目录中创建一个名为
<your Win32 Service App Name>.wm.xml
的 XML 文件。 此文件将指定包的生成方式。 下面是该文件应包含的内容的示例(你可以用你的 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>
注意
XML 文件中的 <service>
区域指定特定于 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>
这会将包构建到工作区 \Build\<arch>\pkgs
子目录下的 .CAB 文件中。
更新项目配置文件
你现在可以更新你的产品配置文件以将你的应用包含在 FFU 映像生成中。
- 使用 Add-IoTProductFeature 为你的应用包添加 FeatureID,同时将
<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
这会添加与你为 Win32 服务应用选择的标识符相对应的 FeatureID。
生成和测试映像
再次生成 FFU映像,如创建基本 IoT 核心版映像中所述。 只需运行 New-IoTFFUImage 命令:
New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test
构建 FFU 文件后(它现在应该包含你的应用),便可以按照刷入 Windows IoT 核心版映像中的说明,将其刷入硬件设备。