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.
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.
<Microsoft>
element: Add or modify optional features specific to the Factory OS Product.- See Factory OS for available features that are specific to Factory OS
<OEM>
element: If you've defined optional drivers, add them in this element.
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>