实验 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)。

  1. C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages 下为你的 Win32 服务应用创建一个子目录。 这将包含生成映像时要包含的 XML 和 EXE 文件。 要查看示例,请参阅 C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.Services 中的 AzureDM.Services 子目录以获取有效示例。

  2. 在你从第 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 应用程序(如控制台应用),则可以省略此部分。

  1. 将你的 EXE 文件添加到步骤 1 中的子目录。 这是你的 Win32 服务应用程序可执行文件。

打包 Win32 服务应用

下一步是打包 Win32 服务应用文件,这将允许你使用 Windows ADK 来生成此文件(在你生成 FFU 映像时)。

  1. 从你的工作区中打开 IoTCorePShell.cmd。 系统应该提示你以管理员身份运行。
  2. 将包生成到 .CAB 文件中(使用 New-IoTCabPackage
New-IoTCabPackage <your Win32 Service App Name>
(or) buildpkg <your Win32 Service App Name>

这会将包构建到工作区 \Build\<arch>\pkgs 子目录下的 .CAB 文件中。

更新项目配置文件

你现在可以更新你的产品配置文件以将你的应用包含在 FFU 映像生成中。

  1. 使用 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 核心版映像中的说明,将其刷入硬件设备。

后续步骤

实验室 1g:生成零售版映像