Hi,
I'm following the IMXWQSG.pdf i.MX Windows IoT Quick Start Guide Rev. 1.5.1 — 24 May 2024 to the letter.
Step 5 results in an error:
C:\W21H2-1-5-1-imx-windows-bsp-binaries\IoTEntOnNXP>.\make-winpe-enterprise.cmd /disable_updates /test_signing /no_patch
Selected: "install.wim"
OPTIONS SUMMARY:
Source image: install.wim
Test signing: yes
Windows debug over ethernet: no, IP:
Windows PE debug over ethernet: no, IP:
KD_NET file (for debug over net): no
Windows debug over serial: no
Windows PE debug over serial: no
Unattended install answer file: no
Disable updates: yes
Disable transparency: yes
Split wim: no
Cumulative update: no, path:
Skip updates to Windows Enterprise: yes
Skip updates to Windows PE: yes
*********************************************************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Step 1 Creating i.MX Windows IoT Enterprise image: out\imx_win_iot_install.wim
*********************************************************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------------------------------------------------------------------------------------------------------------------------------------------
*** Step 1.1 Copying Windows Enterprise image install.wim to out\imx_win_iot_install.wim
---------------------------------------------------------------------------------------------------------------------------------------------------------
A subdirectory or file out already exists.
copy "install.wim" "out\imx_win_iot_install.wim"
1 file(s) copied.
"Cannot identify Windows image version"
This comes from the command "dism /Get-WimInfo /WimFile:!IMX_WIN_ENTERPRISE_IMAGE! /index:2" in the make-winpe-enterprise.cmd batch file (which results in the command "dism /Get-WimInfo /WimFile:out\imx_win_iot_install.wim /index:2" being executed).
The dism.log file shows:
2024-11-27 15:23:09, Info DISM PID=2060 TID=13108 Scratch directory set to 'C:\Users\vboxuser\AppData\Local\Temp\'. - CDISMManager::put_ScratchDir
2024-11-27 15:23:09, Info DISM PID=2060 TID=13108 DismCore.dll version: 10.0.22621.1 - CDISMManager::FinalConstruct
2024-11-27 15:23:09, Info DISM Initialized Panther logging at C:\Windows\Logs\DISM\dism.log
2024-11-27 15:23:09, Info DISM PID=2060 TID=13108 Successfully loaded the ImageSession at "C:\Windows\system32\Dism" - CDISMManager::LoadLocalImageSession
2024-11-27 15:23:09, Info DISM Initialized Panther logging at C:\Windows\Logs\DISM\dism.log
2024-11-27 15:23:09, Info DISM DISM Provider Store: PID=2060 TID=13108 Found and Initialized the DISM Logger. - CDISMProviderStore::Internal_InitializeLogger
2024-11-27 15:23:09, Info DISM Initialized Panther logging at C:\Windows\Logs\DISM\dism.log
2024-11-27 15:23:09, Info DISM DISM Manager: PID=2060 TID=13108 Successfully created the local image session and provider store. - CDISMManager::CreateLocalImageSession
2024-11-27 15:23:09, Info DISM DISM.EXE:
2024-11-27 15:23:09, Info DISM DISM.EXE: <----- Starting Dism.exe session ----->
2024-11-27 15:23:09, Info DISM DISM.EXE:
2024-11-27 15:23:09, Info DISM DISM.EXE: Host machine information: OS Version=10.0.22621, Running architecture=amd64, Number of processors=4
2024-11-27 15:23:09, Info DISM DISM.EXE: Dism.exe version: 10.0.22621.2792
2024-11-27 15:23:09, Info DISM DISM.EXE: Executing command line: dism /Get-WimInfo /WimFile:out\imx_win_iot_install.wim /index:2
2024-11-27 15:23:09, Error DISM DISM WIM Provider: PID=2060 TID=13108 onecore\base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:3487 - CWimManager::InternalOpGetImages(hr:0x80070057)
2024-11-27 15:23:09, Error DISM DISM WIM Provider: PID=2060 TID=13108 onecore\base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:4274 - CWimManager::InternalCmdGetImages(hr:0x80070057)
2024-11-27 15:23:09, Error DISM DISM WIM Provider: PID=2060 TID=13108 "Error executing command" - CWimManager::InternalExecuteCmd(hr:0x80070057)
2024-11-27 15:23:09, Error DISM DISM WIM Provider: PID=2060 TID=13108 onecore\base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:2128 - CWimManager::ExecuteCmdLine(hr:0x80070057)
2024-11-27 15:23:09, Error DISM DISM.EXE: WimManager processed the command line but failed. HRESULT=80070057
2024-11-27 15:23:09, Info DISM DISM.EXE: Image session has been closed. Reboot required=no.
2024-11-27 15:23:09, Info DISM DISM.EXE:
2024-11-27 15:23:09, Info DISM DISM.EXE: <----- Ending Dism.exe session ----->
2024-11-27 15:23:09, Info DISM DISM.EXE:
The install.wim file is copied from the ISO "26100.1.240331-1435.ge_release_CLIENT_IOT_LTSC_EVAL_A64FRE_en-us.iso".
I've also tried the /iso option (and copying the iso file in IoTEntOnNXP, and the result is always the same.
What could be the problem?
Solved! Go to Solution.
The previous reply was missing one more required change in the make-winpe-enterprise.cmd file (of release W21H2-1-5-1), so here is the complete solution:
The Windows 11 IoT Enterprise evaluation ISO WIM file is using index 1, not 2. So, you need to change the batch commands in make-winpe-enterprise.cmd from line 425 as follows (this will then work for Windows 10 and Windows 11, no matter which ISO you use):
@REM Identify Windows version from .wim image
set wimindex=2
:TryWimIndexAgain
for /f "tokens=1,* delims=: " %%a in ('dism /Get-WimInfo /WimFile:!IMX_WIN_ENTERPRISE_IMAGE! /index:%wimindex% ^| findstr /i "name"') do (
set WINNAME=%%b
for /f "tokens=1,2 delims= " %%c in ("!WINNAME!") do (
set WINVER=%%d
)
)
if not "!WINVER!" == "10" (
if not "!WINVER!" == "11" (
if "%wimindex%" == "2" (
echo "Cannot identify Windows image version using index 2, trying index 1"
set wimindex=1
goto TryWimIndexAgain
)
else (
echo "Cannot identify Windows image version!"
goto ErrExit
)
)
)
echo "Identified Windows !WINVER! from .wim file"
echo:
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
echo *** Step 1.2 Mounting i.MX Windows IoT Enterprise image at %IMX_WIN_ENTRPRISE_MOUNT_DIR%
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
mkdir "%IMX_WIN_ENTRPRISE_MOUNT_DIR%"
echo dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex%
dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex% || goto ErrExit
And from line 713 (after changing the batch file at line 425 as per above):
if "!SPLIT_WIM!" == "yes" (
echo dism /Apply-Image /ImageFile:"%WINPE_DRIVE_LETTER%:\install.swm" /SWMFile:"%WINPE_DRIVE_LETTER%:\install*.swm" /index:%wimindex% /ApplyDir:W:\ /Compact >> "%WIN_ENTERPRISE_INSTALL_CMD%"
) else (
echo dism /Apply-Image /ImageFile:"%WINPE_DRIVE_LETTER%:\%IMX_WIN_ENTERPRISE_IMAGE_FILE_NAME%" /index:%wimindex% /ApplyDir:W:\ /Compact >> "%WIN_ENTERPRISE_INSTALL_CMD%"
)
Now Windows 11 will install successfully on the iMX93 EVK.
Hopefully these fixes make it into the next release so others don't have to waste time trying to find out why it all doesn't work...
Ok, so the problem is with the batch file itself. The Windows 11 WIM file is using index 1, not 2. So, for anybody running into this same issue, change the batch commands from line 425 as follows (this will then work for Windows 10 and Windows 11):
@REM Identify Windows version from .wim image
set wimindex=2
:TryWimIndexAgain
for /f "tokens=1,* delims=: " %%a in ('dism /Get-WimInfo /WimFile:!IMX_WIN_ENTERPRISE_IMAGE! /index:%wimindex% ^| findstr /i "name"') do (
set WINNAME=%%b
for /f "tokens=1,2 delims= " %%c in ("!WINNAME!") do (
set WINVER=%%d
)
)
if not "!WINVER!" == "10" (
if not "!WINVER!" == "11" (
if "%wimindex%" == "2" (
echo "Cannot identify Windows image version using index 2, trying index 1"
set wimindex=1
goto TryWimIndexAgain
)
else (
echo "Cannot identify Windows image version!"
goto ErrExit
)
)
)
echo "Identified Windows !WINVER! from .wim file"
echo:
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
echo *** Step 1.2 Mounting i.MX Windows IoT Enterprise image at %IMX_WIN_ENTRPRISE_MOUNT_DIR%
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
mkdir "%IMX_WIN_ENTRPRISE_MOUNT_DIR%"
echo dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex%
dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex% || goto ErrExit
The previous reply was missing one more required change in the make-winpe-enterprise.cmd file (of release W21H2-1-5-1), so here is the complete solution:
The Windows 11 IoT Enterprise evaluation ISO WIM file is using index 1, not 2. So, you need to change the batch commands in make-winpe-enterprise.cmd from line 425 as follows (this will then work for Windows 10 and Windows 11, no matter which ISO you use):
@REM Identify Windows version from .wim image
set wimindex=2
:TryWimIndexAgain
for /f "tokens=1,* delims=: " %%a in ('dism /Get-WimInfo /WimFile:!IMX_WIN_ENTERPRISE_IMAGE! /index:%wimindex% ^| findstr /i "name"') do (
set WINNAME=%%b
for /f "tokens=1,2 delims= " %%c in ("!WINNAME!") do (
set WINVER=%%d
)
)
if not "!WINVER!" == "10" (
if not "!WINVER!" == "11" (
if "%wimindex%" == "2" (
echo "Cannot identify Windows image version using index 2, trying index 1"
set wimindex=1
goto TryWimIndexAgain
)
else (
echo "Cannot identify Windows image version!"
goto ErrExit
)
)
)
echo "Identified Windows !WINVER! from .wim file"
echo:
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
echo *** Step 1.2 Mounting i.MX Windows IoT Enterprise image at %IMX_WIN_ENTRPRISE_MOUNT_DIR%
echo ---------------------------------------------------------------------------------------------------------------------------------------------------------
mkdir "%IMX_WIN_ENTRPRISE_MOUNT_DIR%"
echo dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex%
dism /mount-wim /wimfile:"%IMX_WIN_ENTERPRISE_IMAGE%" /mountdir:"%IMX_WIN_ENTRPRISE_MOUNT_DIR%" /index:%wimindex% || goto ErrExit
And from line 713 (after changing the batch file at line 425 as per above):
if "!SPLIT_WIM!" == "yes" (
echo dism /Apply-Image /ImageFile:"%WINPE_DRIVE_LETTER%:\install.swm" /SWMFile:"%WINPE_DRIVE_LETTER%:\install*.swm" /index:%wimindex% /ApplyDir:W:\ /Compact >> "%WIN_ENTERPRISE_INSTALL_CMD%"
) else (
echo dism /Apply-Image /ImageFile:"%WINPE_DRIVE_LETTER%:\%IMX_WIN_ENTERPRISE_IMAGE_FILE_NAME%" /index:%wimindex% /ApplyDir:W:\ /Compact >> "%WIN_ENTERPRISE_INSTALL_CMD%"
)
Now Windows 11 will install successfully on the iMX93 EVK.
Hopefully these fixes make it into the next release so others don't have to waste time trying to find out why it all doesn't work...
Glad you were able to figure this out yourself.
Additional tip:
The Windows 11 IoT Enterprise LTSC Evaluation .ISO only has a single index... which contains Windows 11 IoT Enterprise LTSC
The OEM .ISO files have two indices. Index 1 contains Windows Enterprise LTSC and Index 2 contains Windows IoT Enterprise LTSC.