Laboratório 1f: adicionar serviços Win32 a uma imagem
Windows 10 IoT Core dá suporte à adição de um Serviço Win32 NT à sua imagem.
Pré-requisitos/requisitos
Verifique se você criou uma imagem básica de Criar uma imagem básica.
Você precisará das seguintes ferramentas instaladas para concluir esta seção:
- Kit de Avaliação e Implantação do Windows (Windows ADK)
Observação
A versão do ADK usada deve corresponder à versão dos Pacotes do IoT Core usada abaixo.
- Pacotes do Windows 10 IoT Core
- Ambiente do PowerShell do IoT Core
- ADK do IoT Core Add-Ons
- Um editor de texto como o Bloco de Notas ou o VS Code
Adicionar um aplicativo do Serviço Win32 ao build do pacote
Para incluir seu Aplicativo de Serviço Win32 no processo de build de imagem FFU, primeiro você deve adicionar o arquivo .EXE para que ele possa ser empacotado (usando buildpkg
).
Crie um subdiretório para seu Aplicativo de Serviço Win32 em
C:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages
. Isso conterá os arquivos XML e EXE a serem incluídos ao compilar a imagem. Por exemplo, consulte o subdiretório AzureDM.Services emC:\IoT\Workspaces\ContosoWS\Source-<arch>\Packages\AzureDM.Services
para obter um exemplo de trabalho.Crie um arquivo XML intitulado
<your Win32 Service App Name>.wm.xml
no subdiretório que você criou na Etapa 1. Esse arquivo especificará como o pacote será criado. Aqui está um exemplo de como esse arquivo deve ser (você substituiria as entradas apropriadas por suas informações do Aplicativo de Serviço 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>
Observação
A <service>
área no arquivo XML especifica informações específicas do serviço Win32. Se você estiver adicionando um aplicativo Win32 (como um aplicativo de console), esta seção poderá ser omitida.
- Adicione o arquivo EXE ao subdiretório da Etapa 1. Este é o executável do aplicativo do Serviço Win32.
Empacotar o aplicativo de serviço Win32
A próxima etapa é empacotar o arquivo do Aplicativo de Serviço Win32, que permitirá compilá-lo usando o Windows ADK (quando você compilar a imagem FFU).
- Abra
IoTCorePShell.cmd
no workspace. Ele deve solicitar que você execute como administrador. - Compilar o pacote em um arquivo de .CAB (usando New-IoTCabPackage)
New-IoTCabPackage <your Win32 Service App Name>
(or) buildpkg <your Win32 Service App Name>
Isso criará o pacote em um arquivo .CAB no \Build\<arch>\pkgs
subdiretório em seu workspace.
Atualizar arquivos de configuração do projeto
Agora você pode atualizar seus arquivos de configuração de produto para incluir seu aplicativo na compilação de imagem FFU.
- Adicione a ID do recurso para o pacote do aplicativo usando Add-IoTProductFeature, substituindo
<your Win32 service app name>
por um identificador para seu aplicativo de serviço Win32:
Add-IoTProductFeature <product name> Test <your Win32 service app name> -OEM
or addfid <product name> Test <your Win32 service app name> -OEM
Isso adiciona um FeatureID correspondente ao identificador que você escolheu para seu aplicativo de serviço Win32.
Compilar e testar imagem
Crie a imagem FFU novamente, conforme especificado em Criar uma imagem básica do IoT Core. Você só deve executar o comando New-IoTFFUImage :
New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test
Depois que o arquivo FFU tiver sido criado (agora ele deve incluir seu aplicativo), você poderá exibi-lo em seu dispositivo de hardware, conforme especificado em Flashing a Windows IoT Core Image.