랩 1f: 이미지에 Win32 서비스 추가
Windows 10 IoT Core는 이미지에 Win32 NT 서비스 추가를 지원합니다.
필수 구성 요소/요구 사항
기본 이미지 만들기에서 기본 이미지를 만들었는지 확인합니다.
이 섹션을 완료하려면 다음 도구를 설치해야 합니다.
- Windows ADK(평가 및 배포 키트)
참고
사용된 ADK 버전은 아래에 사용된 IoT Core 패키지 버전과 일치해야 합니다.
- Windows 10 IoT Core 패키지
- IoT Core PowerShell 환경
- IoT Core ADK 추가 기능
- 메모장 또는 VS Code와 같은 텍스트 편집기
패키지 빌드에 Win32 서비스 앱 추가
Win32 서비스 앱을 FFU 이미지 빌드 프로세스에 포함하려면 먼저 패키징할 수 있도록 .EXE 파일을 추가해야 합니다(buildpkg
사용).
C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages
아래에 Win32 서비스 앱의 하위 디렉터리를 만듭니다. 여기에는 이미지를 빌드할 때 포함할 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>
참고
XML 파일의 <service>
영역은 Win32 서비스 관련 정보를 지정합니다. Win32 애플리케이션(예: 콘솔 앱)을 추가하는 경우 이 섹션을 생략할 수 있습니다.
- 1단계의 하위 디렉터리에 EXE 파일을 추가합니다. 이는 Win32 서비스 애플리케이션 실행 파일입니다.
Win32 서비스 앱 패키징
다음 단계는 Win32 Service App 파일을 패키징하는 것입니다. Windows ADK를 사용하여 FFU 이미지를 빌드할 때 이 파일을 빌드할 수 있습니다.
- 작업 영역에서
IoTCorePShell.cmd
를 엽니다. 관리자 권한으로 실행하라는 메시지가 표시되어야 합니다. - New-IoTCabPackage를 사용하여 패키지를 .CAB 파일에 빌드합니다.
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 이미지 플래싱에 지정된 대로 하드웨어 디바이스로 플래시할 수 있습니다.