次の方法で共有


ラボ 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を使用して) パッケージ化できるようにする必要があります。

  1. Win32 サービス アプリのサブディレクトリを C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages の下に作成します。 ここには、イメージをビルドするときに含める XML ファイルと EXE ファイルが格納されます。 たとえば、実際の例については、C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.ServicesAzureDM.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>

Note

XML ファイルの <service> 部分では、Win32 サービスに固有の情報を指定します。 Win32 アプリケーション (コンソール アプリなど) を追加する場合は、このセクションを省略できます。

  1. 手順 1 のサブディレクトリに EXE ファイルを追加します。 これは、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 を使用して、アプリ パッケージの機能 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 イメージのフラッシュに関するページで指定されているように、これをハードウェア デバイスにフラッシュできます。

次の手順

ラボ 1g: 製品イメージのビルド