ラボ 1f: イメージへの Win32 サービスの追加
Windows 10 IoT Core は、イメージへの Win32 NT サービスの追加をサポートしています。
前提条件または要件
基本イメージの作成に関するページに従って基本イメージを作成したことを確認してください。
このセクションを完了するには、次のツールがインストールされている必要があります。
- Windows アセスメント & デプロイメント キット (Windows ADK)
Note
使用する ADK のバージョンが、以下で使用する IoT Core パッケージのバージョンと一致する必要があります。
- Windows 10 IoT Core パッケージ
- IoT Core PowerShell 環境
- IoT Core ADK アドオン
- メモ帳や VS Code などのテキスト エディター
パッケージ ビルドに Win32 サービス アプリを追加する
Win32 サービス アプリを FFU イメージのビルド プロセスに含めるには、最初に .EXE ファイルを追加して、(buildpkg
を使用して) パッケージ化できるようにする必要があります。
Win32 サービス アプリのサブディレクトリを
C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages
の下に作成します。 ここには、イメージをビルドするときに含める 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>
Note
XML ファイルの <service>
部分では、Win32 サービスに固有の情報を指定します。 Win32 アプリケーション (コンソール アプリなど) を追加する場合は、このセクションを省略できます。
- 手順 1 のサブディレクトリに EXE ファイルを追加します。 これは、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 を使用して、アプリ パッケージの機能 ID を追加します。このとき、
<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 が追加されます。
イメージをビルドしてテストする
基本的な IoT Core イメージの作成に関するページで指定されているように、FFU イメージをもう一度ビルドします。 実行する必要があるのは New-IoTFFUImage コマンドのみです。
New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test
FFU ファイルがビルドされたら (これでアプリが含まれます)、Windows IoT Core イメージのフラッシュに関するページで指定されているように、これをハードウェア デバイスにフラッシュできます。