Windows Embedded Blog

XP Professional for Embedded Devices – Cannot change PID with MUI pack applied

leave a comment »

Symptoms

If you have XP Professional Embedded with an MUI package – e.g. German installed and applied and you try to change the Product Key via the Telephone activation window (msoobe /a) the windows will just hang after you click “Change Product Key”.

Cause

The MUI pack files miss an important function in the javascript oobeutil.js. This file is located in the MUI pack directory under C:WINDOWSsystem32oobeMUIxxxx where xxxx stands for the language ID (e.g. 0407 for German).

Workaround

  1. To solve this issue open the oobeutil.js file in the oobe root folder (C:WINDOWSsystem32oobe) and copy the function StorePID () to your clipboard.
  2. Open the oobeutil.js in the MUI subfolder (C:WINDOWSsystem32oobeMUIxxxx) and paste the function to the end of the file.
  3. Save the file

Alternatively you can also copy the whole file to the MUI subdirectory.

Written by Wolfgang Unger

March 9, 2009 at 12:52

Posted in Uncategorized

Automatically enter the PID in XP Embedded Builder

leave a comment »

If you don’t want to enter the PID in XP Embedded Builder all the time you can have XP Embedded Builder to do this for you.

For this please do the following:

  1. Create a textfile named PID.txt
  2. Enter the Product Key in this file including the dashes (e.g.: AAAAA-BBBBB-CCCCC-DDDDD-EEEEE)
  3. Save the PID.txt to the root of a USB flash drive
  4. Connect the USB flash drive to the target pc where you will boot XP Embedded Builder

Now every time you boot XP Embedded Builder with this USB flash drive connected the PID will be entered automatically from this file.

Written by Wolfgang Unger

February 3, 2009 at 19:41

Additional functionality for custom components in XP Embedded Builder

leave a comment »

In the version 2.1 of XP Embedded Builder new functions were included which can be used in the custom components.

For creating customer components in XP Embedded Builder please have a look here.

Create batch commands that will run in FBA at RunOnce

You can create commands that will be executed in the RunOnce phase of FBA. To do this set the action parameter in the Step section of the component configuration file to finalize:

Sample

[Step_xx]
Action=finalize
Arg0=regedit.exe /s myregfile.reg
Arg1=del myregfile.reg

Create components for XP Professional like images only

In the new version of XP Embedded Builder it is possible to create XP Professional like images with all Embedded Features included by just selecting one option during the setup process.

If you want to create a component that will be also available for the XP Professional like installation or a component which should only be available in the XP Professional like setup mode you can use the following parameters in the component configuration.

[Component]
isXPPro=TRUE
forXPProOnly=TRUE

isXPPro –> this parameter will tell XP Embedded Builder that the component can be used in the XP Professional like setup mode too.

forXPProOnly –> this parameters tells XP Embedded Builder that the component can only be used in the XP Professional setup mode.

Additional Parameter for all XPPro options:

XPProStartStep –> this parameter will tell XP Embedded Builder where it should start with the installation.

Sample:

[Component]
Name=Network
Version=1.0
Group=Network
Order=550
isXPPro=TRUE
XPProStartStep=3

[Step_0]
Action=copy
Arg0=DataWindows
Arg1=[InstallWinDir]

[Step_1]
Action=reg
Arg0=Import
Arg1=[InstallWinDir]System32configSYSTEM
Arg2=reg.reg

[Step_2]
Action=reg
Arg0=Import
Arg1=[InstallWinDir]System32configSYSTEM.SAV
Arg2=reg.reg

[Step_3]
Action=Network

If you select to install the Network component in XP Professional like setup mode, XP Embedded Builder will start the component installation at Step_3. In this case it means that it will only display the preconfigured Computername setup dialog which ships with the Network component. The rest of the installation specified in Step 0-2 will be skipped because the networking components are included in the XP Professional like version by default.

Written by Wolfgang Unger

February 3, 2009 at 19:30

Creating and deploying images using WAIK and imagex

with 2 comments

Before beginning with the image creation or deployment – please download the WAIK tools from Microsoft (http://www.microsoft.com/downloads/details.aspx?FamilyID=C7D4BC6D-15F3-4284-9123-679830D629F2&displaylang=en) and create either a bootable DVD or bootable USB stick which contains imagex. For this please follow the documentation that comes with the WAIK tools.

Preparation

Please follow the preparation steps for both – image creation and image deployment as you’ll need to have a working network connection.

Setting up a DHCP server

You can skip this step if you have a DHCP server running in your network.

  1. Create a new dialup connection – the settings like number, etc. are not important.
  2. Open the settings of the created dialup connection and enable internet sharing for the local network adapter which will be connected with your target device.
  3. Check the IP-address of the local network adapter – it should be 192.168.0.1

Create a network share

On your development machine set up a network share where the image will be located. Please make sure you can access the network share from another pc and that you have write access to this share.

Mapping a network drive in Windows PE

  1. Boot the target machine from the previous created media.
  2. In the command prompt type ipconfig to check if the pc has a valid ip address. You can use ping (e.g. ping 192.168.0.1) to test if the connection to the development pc works.
  3. Map a network drive to your development pc.
    net use N: \<IP-Address><Sharename> [/User:<pcname><username> <Password>]

    Sample
    net use N: \192.168.0.1images /User:devmachineadministrator admin

    Create an image

    To create an image we will use the imagex tool which comes with the WAIK tools. For more information on imagex please have a look on Microsoft Technet http://technet.microsoft.com/en-us/library/cc722145.aspx

    1. Type the following command
      imagex /capture C: N:image.wmi “Master image”

      You can also use additional paramters such as /compress to compress the image. For additional arguments please type imagex /?

    Deploy an image

    Before we will deploy the image we will prepare the target disk to make sure that the image can boot after the deployment.

    Preparing the target disk

    1. Run diskpart and type the following commands
      LIST DISK

      DISKPART> list disk

        Disk ###  Status      Size     Free     Dyn  Gpt
        ——–  ———-  ——-  ——-  —  —
        Disk 0    Online       149 GB      0 B
        Disk 1    Online       149 GB      0 B

    Use this command to find out the disk id of the disk that should be used as target.

    SELECT DISK 0  (instead of 0 use the appropriate disk id of your target disk)
    CLEAN   (this will remove all partitions on the target disk)
    CREATE PARTITION PRIMARY  (this creates a primary partition on the target disk)
    ACTIVE (set the previous created partition active)
    ASSIGN LETTER = C (assign the drive letter C)
    FORMAT FS=NTFS QUICK (do a quick ntfs format)
    EXIT (quick diskpart)

    Deploy the image

    1. Run the following command to deploy the image from the network share
      imagex /apply n:image.wim 1 c:
    2. Reboot your machine – it should now boot from the image properly.

    Written by Wolfgang Unger

    January 29, 2009 at 16:15

    How to integrate/remove EWF in a running XPe image

    with 3 comments

    Installation

    1. Copy the following files from your Repository to your target device.

    Filename Targetdirectory + filename
    ewfdll.dll Windowssystem32ewfdll.dll
    ewfinit.dll Windowssystem32ewfinit.dll
    ewfmgr.exe Windowssystem32ewfmgr.exe
    ewf.sys Windowssystem32driverewf.sys
    ewf.inf Windowsinfewf.inf
    ewfntldr ntldr

    2. Run regedit.exe

    Right click on the key HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumRoot and select permissions.

    Change the permissions for your user to full and click apply.

    3. Copy the following and change %ProtectedVolume% to the ARC path of the Volume you want to protect. You can find the ARC path for the boot volume in the boot.ini – it will look like this ”multi(0)disk(0)rdisk(0)partition(1)”

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESYSTEM]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSet]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
    "UpperFilters"=hex(7):45,00,57,00,46,00,00,00,00,00

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWF]
    "ErrorControl"=dword:00000001
    "Group"="System Bus Extender"
    "Start"=dword:00000000
    "Type"=dword:00000001

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWFFBA]
    "OVSize"=dword:00000000
    "OVLevel"=dword:00000001
    "PVConfigs"=dword:00000001
    "EwfEnable"=hex(7):31,00,00,00,00,00
    "EnableLazyWrite"=hex(7):30,00,00,00,00,00
    "PVDisk"=hex(7):30,00,00,00,00,00
    "PVPart"=hex(7):31,00,00,00,00,00
    "PVOptimize"=hex(7):30,00,00,00,00,00
    "PVType"=hex(7):31,00,00,00,00,00

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWFParameters]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWFParametersProtected]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWFParametersProtectedVolume0]
    "Type"=dword:00000001
    "ArcName"="%ProtectedVolume%"
    "Enabled"=dword:00000000

    4. Import the saved registry file.

    5. Reboot

    The EWF should be integrated now into you image but it is disabled by default. You can enable it by running ewfmgr c: /enable

     

    Removal

    1. Locate the following files on your target device and delete them

    Filename
    Windowssystem32ewfdll.dll
    Windowssystem32ewfinit.dll
    Windowssystem32ewfmgr.exe
    Windowssystem32driverewf.sys
    Windowsinfewf.inf
    ntldr

    2. Copy the ntldr from your Repository to the target devices root directory.

    3. Run regedit.exe

    4. Remove EWF from the following key

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
    "UpperFilters"

    5. Delete the following key in the registry

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEWF]

    6. Reboot

    The EWF should be completely removed from your system now. Please do not forget to copy over the ntldr before rebooting!

    Written by Wolfgang Unger

    December 22, 2008 at 19:25

    Cannot access CD/DVD drive with Windows Explorer

    leave a comment »

    When you try to explore the content of a DVD or CD drive in XP Embedded with your Windows explorer nothing happens or the explorer will automatically jumps to the next item in the folder list. By using the command line you can access the CD/DVD drive without problem and you are able to run applications too.

    This behavior is can be caused if you have a CD/R(W) drive and you added the IMAPI – CD Burning component and use Minlogon. In this case Windows tries to access the temporary write cache which is normally located in the documents and settings folder for the user but with Minlogon this folder does not exist.

    To resolve this error just open the properties of the CD/R(W) drive and go to the Recording tab. In this tab disable the “Enable CD recording on this device” checkbox and click ok. Now you can access the CD/DVD drive again.

    Written by Wolfgang Unger

    December 2, 2008 at 18:27

    Driverinstallation in XP Embedded fails with message “problem installing error occurred. A service installation section in this INF is invalid”

    with 2 comments

    If you install a driver in XP Embedded you get the following error and the device driver installation fails.

    “A problem installing <devicename> error occurred.  A service installation section in this INF is invalid”

    This will happen when the driver inf file contains a file which is not available in the driver folder and not available on the Windows system. Some drivers assume that the files already exist because they are there on a full XP Pro installation.

    To solve this and be able to install the driver open the inf file in notepad and have a look into the the CopyFiles section.
    Check if all files are either in the windows folders (system32, system32drivers,..) or in the driver folder.
    If a file is missing copy it over from a XP Professional system and retry the installation –> if all files are there the installation should succeed.

    Written by Wolfgang Unger

    November 4, 2008 at 18:04

    Driverinstallation cannot find files

    leave a comment »

    When you install drivers under XP Embedded you get the error message that the system cannot find a specific needed file.

    This is a normal behavior in XP Embedded and can happen even if the files are already located in the correct folders.

    Just click browse and search for the following filetypes in the following folders.

    .sys Windowssystem32drivers
    .dll Windowssystem32
    .drv Windowssystem32

    If a file is not there just copy it over from an XP Professional system or extract it from the Repository folder.

    You should also setup a filter in Target Designer to search for the missing file and include the component for the next build.

    Written by Wolfgang Unger

    November 4, 2008 at 17:50

    EWF error: failed getting protected volume configuration with error 1.

    leave a comment »

    When you created an image with EWF and run ewfmgr you get the following error message: “Failed getting protected volume configuration with error 1.  incorrect function.”

    One reason for this can be that you specified the ARC path for the volume wrong.

    You can change the ARC path in the running image in the following registry key:

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesewfParametersProtectedVolume0]
    ArcName=multi(0)disk(0)rdisk(0)partition(1)

    You can find the naming convention for the ARC Path here: http://support.microsoft.com/kb/102873

     

    If it is still not working check the following registry entry:

    The UpperFilters key must contain the value Ewf
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
    UpperFilters=”Ewf”

    After each change make a reboot and try running ewfmgr c: again.

    Written by Wolfgang Unger

    November 4, 2008 at 17:41

    Deploying images

    leave a comment »

    The easiest way to deploy an image (if you are not using a CF card which can be easily removed from the target device) is to use the Windows PE environment from Target Designer CD1. Using Windows PE you can deploy the image via a network share very easy.

    Prequisits

    Target Designer CD1
    Network Share which contains your XP Embedded image
    DHCP Server to assign an IP to WinPE

    Deployment

    Connect the target device to the same network as the development machine.

    Boot Windows PE from Target Designer CD1.

    Use ipconfig to check if you have received a valid IP address.

    Map a network drive to the development machines share using the following command

    net use N: \<IP of development machine> /User:domainusername

    Enter the password if required.

    Run diskpart to prepare the target disk.

    To create a single primary partition on the first disk in the target disk use the following commands

    SELECT DISK 0
    CLEAN
    CREATE PARTITION PRIMARY
    ACTIVE
    ASSIGN LETTER=C
    EXIT

    Format the previous created partition

    format c: /fs:ntfs /q /y

    Copy the image from the network share to the target device

    xcopy N:*.* C: /H /E /Y /V /C

    Reboot

    Now you have successfully transfered the image from the development machine to the target device and it should boot correctly.

    You can of course automate the commands from above by using a batchfile and a diskpart file. You can run diskpart with the /S parameter to specify a scriptfile.

    Written by Wolfgang Unger

    October 3, 2008 at 17:08