实验 1c:将文件和注册表设置添加到映像

我们将为 Windows IoT 核心版映像创建一些测试文件和注册表项,并将它们打包,以便在分发给你的客户后可以对其进行服务。 由于你添加到映像的文件和注册表项通常不是特定于体系结构的,因此我们建议你创建一个可以在所有设备架构中使用的通用包。

目标

  • 为你的设备创建一个包含注册表和文件设置的包
  • 打包注册表/文件设置包,使其可以包含在 FFU 映像中
  • 修改 IoT 加载项工具包项目配置文件以包含你的注册表/文件设置包
  • 生成并部署包含注册表/文件设置包的 FFU 映像

我们将为映像创建一些测试文件和注册表项,再次将它们打包,以便客户在获得了映像之后便可以使用。

我们将将这些内容添加到常见功能清单 (OEMCommonFM.xml) ,该清单用于 x86、x64 和 Arm 版本。

对于此实验,我们将启动一个新产品 ProductB,以便稍后我们可以使用 IoT 示例应用获取我们设备的 IP 地址并验证我们的文件和注册密钥是否有效。

先决条件

请确保已根据之前的创建基本映像创建了一个基本映像。

要完成此操作,需要安装以下工具:

  • Windows 评估和部署工具包 (Windows ADK)
  • IoT 核心版 Powershell 环境
  • Windows 10 IoT 核心版程序包
  • IoT 核心版 ADK 加载项
  • 文本编辑器,比如记事本或 VS Code。

创建测试文件

使用记事本创建一些示例文本文件并添加一些随机文本,以使这些文件不为空。 对于我们的示例,我们创建了两个文件,分别名为 TestFile1.txt 和 TestFile2.txt。

生成测试文件包

  1. 打开 IoT 核心版 PowerShell 环境:以管理员身份运行 C:\MyWorkspace\IoTCorePShell.cmd 并使用 Add-IoTFilePackage 创建文件包:

    # Array of files with destinationDir, Source and destinationFilename
    $myfiles = @(
        ("`$(runtime.system32)","C:\Temp\TestFile1.txt", ""),        
        ("`$(runtime.bootDrive)\OEMInstall","C:\Temp\TestFile2.txt", "TestFile2.txt")
        )
    Add-IoTFilePackage Files.Configs $myfiles
    

    这会在 C:\MyWorkspace\Common\Packages\Files.Configs 中创建一个新文件夹。

    这还会将 FeatureID FILES_CONFIGS 添加到 C:\MyWorkspace\Common\Packages\OEMCOMMONFM.xml 文件中。

    类似 $(runtime.system32) 的变量将在 C:\Program Files (x86)\Windows Kits\10\Tools\bin\i386\pkggen.cfg.xml 中定义。

  2. 使用 Add-IoTRegistryPackage 创建注册表包:

    # Array of files with destinationDir, Source and destinationFilename
    $myregkeys = @(
        ("`$(hklm.software)\`$(OEMNAME)\Test","StringValue", "REG_SZ", "Test string"),
        ("`$(hklm.software)\`$(OEMNAME)\Test","DWordValue", "REG_DWORD", "0x12AB34CD")
        )
    Add-IoTRegistryPackage Registry.Settings $myregkeys
    

    这会在 C:\MyWorkspace\Common\Packages\Registry.Settings 创建一个新文件夹。

    这还会将 FeatureID REGISTRY_SETTINGS 添加到 C:\MyWorkspace\Common\Packages\OEMCOMMONFM.xml 文件中。

  3. 使用 New-IoTCabPackage 生成包:

    New-IoTCabPackage Files.Configs
    (or) buildpkg Files.Configs
    New-IoTCabPackage Registry.Settings
    (or) buildpkg Registry.Settings
    

    该软件包已生成并在 C:\MyWorkspace\Build\<arch>\pkgs 提供。

创建新产品

  1. 创建新产品文件夹。

    Add-IoTProduct ProductB RPi2
    (or) newproduct ProductB RPi2
    

    这将提示你输入 SMBIOS 值。

更新项目的配置文件

使用 Add-IoTProductFeature 更新产品测试配置以包含功能:

Add-IoTProductFeature ProductX Test FILES_CONFIGS -OEM
(or) addfid ProductX Test FILES_CONFIGS -OEM
Add-IoTProductFeature ProductX Test REGISTRY_SETTINGS -OEM
(or) addfid ProductX Test REGISTRY_SETTINGS -OEM

生成和测试映像

再次生成 FFU映像,如创建基本映像中所述。 只需运行 New-IoTFFUImage 命令:

New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test 

构建 FFU 文件后,便可以按照刷入 Windows IoT 核心版映像中的说明,将其刷入硬件设备。

验证已添加的文件和注册表项

为了验证文件是否已添加到设备上,请执行以下操作:

  1. 将你的技术人员 PC 和设备连接到同一个以太网网络。

    例如,若要通过有线网络进行连接,请插入以太网电缆。 若要直接连接到设备,请将网络电缆直接从你的技术人员 PC 插入设备。

  2. 在测试应用上,记下设备的 IP 地址。 例如 10.100.0.100。

  3. 在技术人员 PC 上,打开文件资源管理器并输入设备 IP 地址(带有 \ 前缀和 \c$ 后缀):

    \\10.100.0.100\c$
    

使用设备名称、默认管理员帐户和密码登录。 (默认为:minwinpc\Administrator / p@ssw0rd)

  1. 检查设备上是否存在文件。 对于我们的示例,查找:

    \\10.100.0.100\c$\Windows\system32\TestFile1.txt

    \\10.100.0.100\c$\OEMInstall\TestFile2.txt

验证注册表项

  1. 在技术人员 PC 上,使用 SSH 客户端(例如 PuTTY)连接你的设备。 例如,使用 IP 地址和端口 22 连接到设备。 然后使用管理员帐户和密码登录。 (要了解更多信息,请参阅 SSH)。

  2. 从 SSH 客户端的命令行中,向系统查询注册表项。 在我们的示例中,执行此命令以检查注册表项是否存在:

    reg query HKLM\Software\Fabrikam\Test
    

    SSH 客户端应该显示你的测试值。

    或者,你可以使用连接设备的 Windows 设备门户中的“运行命令”来运行 reg query 命令。

    在 Windows 设备门户中运行命令

输出窗口应显示你的测试值。

后续步骤

实验 1d:将预配包添加到映像