Image configuration file (or OEMInput)

The image configuration file (or OEMInput) is an XML file that defines the packages and customizations that go into an image's design, including the hardware and drive configuration, Factory OS Product, languages, and which Product-specific features, apps, drivers, and packages are included.

When you generate an image, the image generation process builds an image using packages that map to the values and attributes you configured in OEMInput.xml. Configuring some OEMInput elements, like languages and product, adds packages from the Windows System Kit (WSK) directly into your image without additional configuration. You can also configure and add feature manifests that define additional package locations and enable additional features, apps, drivers, and settings.

Shows that feature manifest can be added to an image configuration file to add functionality. Once an image configuration file is customized, an image is built using collateral from the WSK and the OEM workspace.

OEMInput location

When you prepare a workspace, you'll get a starting image configuration file in the root of the workspace directory that is preconfigured with device information, feature manifests, features, and apps for the product you chose. Look for a file with the following naming scheme in the workspace directory: <Product>_<architecture>_<boottype>_<hardware or VM>_<imagetype>.xml

You can get the path and file name of your OEMInput.xml file by running echo %WSKOEMInputFileName% from the WSK environment.

Schema description

The following is an empty OEMInput.xml file. This section describes each element's purpose and usage.

<OEMInput>
  <Description></Description>
  <DeviceLayoutType></DeviceLayoutType>
  <Device></Device>
  <ReleaseType></ReleaseType>
  <BuildType></BuildType>
  <Languages>
    <Language></Language>
  </Languages>
  <AdditionalFMs>
    <AdditionalFM></AdditionalFM>
  </AdditionalFMs>
  <Features>
    <Microsoft>
      <Feature></Feature>
    </Microsoft>
    <OEM>
      <Feature></Feature>
    </OEM>
  </Features>
  <AppXOptionalPackages>
    <AppXID></AppXID>
  </AppXOptionalPackages>
  <DevicePlatformIDs>
    <DevicePlatformID></DevicePlatformID>
  </DevicePlatformIDs>​
  <Product></Product>
  <TestContent></TestContent>
  <UserInstallableFeatures>​
      <Feature></Feature>​
  </UserInstallableFeatures>
</OEMInput>

Description

Image description and architecture of the image. The architecture (AMD64, x86) must be in this field. If the architecure isn't in this field, it can cause the build to fail.

Example:

<Description>Factory OS Hardware Validation image. UEFI Hardware OEMInput for AMD64</Description>

DeviceLayoutType

Defines disk layout properties for the image.

Options Description
GPT Use for UEFI-based devices and Hyper-V Generation 2 virtual machines.
GPT_SPACES_512 Use for UEFI-based devices and Hyper-V Generation 2 virtual machines with the spaces layout. When you create new sample files with PrepWSKWorkspace, this is the default.
GPT_SPACES_4096 Use for UEFI-based devices and Hyper-V Generation 2 virtual machines with the spaces layout that use 4096 sector disks.
GPT_SPACES_SPLIT Use when you're using a split device layout.

Example:

<DeviceLayoutType>GPT_SPACES_512</DeviceLayoutType>

Device

Defines if the image is for UEFI-based devices.

Options Description
GenericUEFIDevice Use for UEFI-based devices and Hyper-V Generation 2 virtual machines. When you create new sample files with PrepWSKWorkspace, this is the default.

Example:

<Device>GenericUEFIDevice</Device>

ReleaseType

Determines whether test apps, drivers, and other packages can be used.

Options Description
Test Use this to identify an image as a test image, there will be fewer imaging restrictions on this image type.
<ReleaseType>Test</ReleaseType>

BuildType

Specifies to use a production build.

Options Description
fre This is the default. Don't change this value.

Example:

<BuildType>fre</BuildType>

Languages

Specifies which languages are available in an image.

  • Languages are specified in the <Language> elements.
  • The default language is specified using the Default attribute for a language. You must specify one language as the default. Only specify one default language.

See Add languages for information about how to add languages.

Example (en-us set as default):

<Languages>
    <Language Default="true">en-us</Language>
    <Language>zh-cn</Language>
</Languages>

AdditionalFMs

Lists the feature manifests used in your device design. Feature manifests list the apps, drivers, and other components that you can add to your image. Some of these are predefined when you create a new workspace and set of sample files, for example:

Example of predefined feature manifests:

<AdditionalFMs> 
    <!-- You MUST include GenericDeviceFM.xml and FOSNonProductionFM.xml! -->
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\FOSNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\GenericDeviceFM.xml</AdditionalFM>
    <!-- Add OEM FMs here. -->
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMAppsFM.xml</AdditionalFM>
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMDriversFM.xml</AdditionalFM>
</AdditionalFMs>

Features

The <Features> element allows you to add optional features to your image.

Example:

<Features>
    <Microsoft>
        <Feature>WCOS_EVENTLOG_SERVICE</Feature>        
        <Feature>WCOS_PNP_RUNTIMEDEVICEINSTALL</Feature>
        <Feature>FONTSIZE_15</Feature>
        <Feature>DEVICEPORTAL_OPTIONAL_MONITORCONFIG</Feature>
        <Feature>SERVICING_STACK</Feature>
        <Feature>ALLOW_CONNECTEDSTANDBY</Feature>
        <Feature>MICROSOFT_EDGE</Feature>
        <Feature>OEM_IMAGE</Feature>
        <Feature>SHELL_BOOT</Feature>
        <Feature>DEVSHELL_MFG</Feature>
        <Feature>MANUFACTURING_TOOLS</Feature>
        <Feature>STATESEPARATION_ON</Feature>
        <Feature>TESTSIGNING_ON</Feature>
        <Feature>ENABLE_WOW</Feature>
        <Feature>WCOS_DEVICEPORTAL</Feature>
        <Feature>WCOS_DEVICEPORTAL_WOW</Feature>
        <Feature>WCOS_POWERSHELLCORE</Feature>
        <Feature>FACTORY_ORCHESTRATOR_SERVICE</Feature>
        <Feature>STORAGESPACES_LAYOUT</Feature>
        <Feature>KDNETUSB_ON</Feature>
    </Microsoft>
    <OEM>
        <Feature>OEMDriver</Feature>
    </OEM>
</Features>

AppXOptionalPackages

Add the App ID of optional apps to be included in the image.

Example:

<AppXOptionalPackages>
    <AppXID>Microsoft.WindowsCalculator_8wekyb3d8bbwe</AppXID>
    <AppXID>Microsoft.FactoryTestFrameworkUWP_8wekyb3d8bbwe</AppXID>
</AppXOptionalPackages>

DevicePlatformIDs

A DevicePlatofrmID is a string consisting of values from the SMBIOS system information structure, concatenated together with each value separated by a period. Your OEMInput.xml file can include multiple DevicePlaformIDs.

When you create a workspace, your OEMInput file will include <DevicePlatformID>Manufacturer.Family.Product.Version</DevicePlatformID>. Update the <DevicePlatformID> string to reflect your hardware. See DevicePlatformID for more information.

If your OEMInput.xml file doesn't include the <DevicePlatformIDs> element, make sure to add it. You won't be able to flash your image onto your hardware if this element isn't in your OEMInput.xml file.

Example:

<DevicePlatformIDs>
    <DevicePlatformID>Manufacturer.FamilyName.ProductName.ProductVersion</DevicePlatformID>
    <DevicePlatformID>Contoso.Laptops.ContosoBook.V1</DevicePlatformID>
    <DevicePlatformID>Contoso.ContosoLaptop.*.1</DevicePlatformID>
</DevicePlatformIDs>

Product

[Product defines the core feature manifest that's used in an image.

Options Description
Factory OS Use for Factory OS

Example:

<Product>Factory OS</Product>

TestContent

Used to add a folder of test-collateral to images. See Test content for information about adding test content.

Example:

<TestContent>%WSKWorkspaceRoot%\TestContent</TestContent>

Sample image configuration file for a spaces-enabled Factory OS AMD64 UEFI VM

<?xml version="1.0" encoding="utf-8"?>
<OEMInput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/embedded/2019/06/ImageUpdate">
  <Description>FactoryOS Test en-us image. VM2 OEMInput for VMGen2 on amd64</Description>
  <DeviceLayoutType>GPT_SPACES_512</DeviceLayoutType>
  <Device>GenericUEFIDevice</Device>
  <ReleaseType>Test</ReleaseType>
  <BuildType>fre</BuildType>
  <Languages>
    <Language Default="true">en-us</Language>
  </Languages>
  <AdditionalFMs> 
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\MobileDeviceSpaceFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\FOSNonProductionFM.xml</AdditionalFM>
    <!-- Add OEM FMs here. -->
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMAppsFM.xml</AdditionalFM>
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMDriversFM.xml</AdditionalFM>
  </AdditionalFMs> 
  <Features>
    <Microsoft>
        <Feature>STATESEPARATION_ON</Feature>
        <Feature>STORAGESPACES_LAYOUT</Feature>
        <Feature>UEFI_VM</Feature>
        <Feature>WCOS_EVENTLOG_SERVICE</Feature>        
        <Feature>FONTSIZE_15</Feature>
        <Feature>DEVICEPORTAL_OPTIONAL_MONITORCONFIG</Feature>
        <Feature>WCOS_STORAGE_CDDVD</Feature>        
        <Feature>WCOS_POWERSHELL</Feature>
        <Feature>TESTSIGNING_ON</Feature>
        <Feature>SHELL_BOOT</Feature>
        <Feature>MANUFACTURING_TOOLS</Feature>
        <Feature>ENABLE_WOW</Feature>
        <Feature>WCOS_DEVICEPORTAL</Feature>
        <Feature>WCOS_DEVICEPORTAL_WOW</Feature>
        <Feature>FACTORY_ORCHESTRATOR_SERVICE</Feature>
        <Feature>MANUFACTURING_POWER_SCHEME</Feature>
        <Feature>MANUFACTURING_MODE_EMPTY_PROFILE</Feature>
        <Feature>RESOLUTION_1080X1920</Feature>
        <Feature>OEM_IMAGE</Feature>
        <Feature>KDNETUSB_ON</Feature>        
        <Feature>WCOS_HYPERV_GUEST_UEFI</Feature>
    </Microsoft>
  </Features>
  <AppXOptionalPackages>
    <AppXID>Microsoft.FactoryTestFrameworkUWP_8wekyb3d8bbwe</AppXID>
  </AppXOptionalPackages>
      <DevicePlatformIDs>
      <DevicePlatformID>*.*.*.**</DevicePlatformID>
    </DevicePlatformIDs>
  <Product>Factory OS</Product>
  <TestContent>%WSKWorkspaceRoot%\TestContent</TestContent>
</OEMInput>