ラボ 1c: イメージへのファイルとレジストリ設定の追加
Windows IoT Core イメージに対してテスト ファイルとレジストリ キーを作成し、それらをパッケージ化して、顧客に配布された後でサービスを提供できるようにします。 イメージに追加するファイルとレジストリ キーは、多くの場合、アーキテクチャに固有のものではないので、すべてのデバイス アーキテクチャで使用できる共通パッケージを作成することをお勧めします。
目標
- デバイス用のレジストリとファイル設定を含んだパッケージを作成する
- レジストリ/ファイル設定パッケージをパッケージ化して、FFU イメージに含めることができるようにする
- レジストリ/ファイル設定パッケージを含めるように、IoT Addon Kit プロジェクト構成ファイルを変更する
- レジストリ/ファイル設定パッケージを含んだ FFU イメージをビルドして展開する
イメージに対していくつかのテスト ファイルとレジストリ キーを作成し、それらを再びパッケージ化して、顧客に届いた後にサービスを提供できるようにします。
これらは、x86、x64、Arm ビルドで使用される共通機能マニフェスト (OEMCommonFM.xml) に追加します。
このラボでは、ProductB という製品を新たに作成します。これにより、後で IoT サンプル アプリを使用してデバイスの IP アドレスを取得し、ファイルとレジストリ キーが機能したことを確認できるようになります。
前提条件
以前に、基本イメージの作成に関するページに従って基本イメージを作成していることを確認してください。
この操作を完了するには、次のツールがインストールされている必要があります。
- Windows アセスメント & デプロイメント キット (Windows ADK)
- IoT Core PowerShell 環境
- Windows 10 IoT Core パッケージ
- IoT Core ADK アドオン
- メモ帳や VS Code などのテキスト エディター
テスト ファイルを作成する
メモ帳を使用していくつかのサンプル テキスト ファイルを作成し、ランダムなテキストを追加して、それらのファイルが空でない状態にします。 この例では、TestFile1.txt および TestFile2.txt という 2 つのファイルを作成しました。
テスト ファイル用のパッケージをビルドする
IoT Core PowerShell Environment を開きます。
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
ファイルに追加されます。C:\Program Files (x86)\Windows Kits\10\Tools\bin\i386\pkggen.cfg.xml
には、$(runtime.system32)
のような変数が定義されます。Add-IoTRegistryPackage を使用して Registry package を作成します。
# 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
ファイルに追加されます。New-IoTCabPackage を使用してパッケージをビルドします。
New-IoTCabPackage Files.Configs (or) buildpkg Files.Configs New-IoTCabPackage Registry.Settings (or) buildpkg Registry.Settings
パッケージがビルドされ、
C:\MyWorkspace\Build\<arch>\pkgs
で使用可能になります。
新しい製品を作成する
新しい製品フォルダーを作成します。
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 Core イメージのフラッシュに関するページで指定されているように、これをハードウェア デバイスにフラッシュできます。
追加されたファイルとレジストリ キーを確認する
デバイスにファイルが追加されたことを確認するには、次の手順を実行します。
テクニシャン PC とデバイスの両方を同じイーサネット ネットワークに接続します。
たとえば、ワイヤード (有線) ネットワーク経由で接続するには、イーサネット ケーブルを接続します。 デバイスに直接接続するには、テクニシャン PC からデバイスにネットワーク ケーブルを直接接続します。
テスト アプリで、デバイスの IP アドレスをメモします。 たとえば、10.100.0.100 などです。
テクニシャン PC で、エクスプローラーを開き、\ プレフィックスと \c$ サフィックスを使用して、デバイスの IP アドレスを入力します。
\\10.100.0.100\c$
devicename (既定の管理者アカウント) とパスワードを使用してログオンします (既定値は minwinpc\Administrator / p@ssw0rd です)。
デバイスにファイルが存在しているかどうかを確認します。 この例では、次を探します。
\\10.100.0.100\c$\Windows\system32\TestFile1.txt
\\10.100.0.100\c$\OEMInstall\TestFile2.txt
レジストリ キーを確認する
テクニシャン PC で、SSH クライアント (PuTTY など) を使用してデバイスに接続します。 たとえば、IP アドレスとポート 22 を使用してデバイスに接続します。 次に、管理者アカウントとパスワードを使用してログインします (詳しくは、「SSH」をご覧ください)。
SSH クライアントのコマンド ラインから、システムに対してレジストリ キーを照会します。 この例では、次のコマンドを実行してレジストリ キーの存在を確認しました。
reg query HKLM\Software\Fabrikam\Test
SSH クライアントにテスト値が表示されます。
なお、Windows デバイス ポータルで Run Command を使用して、接続したデバイスで
reg query
コマンドを実行することもできます。
出力ウィンドウにテスト値が表示されます。