New
#41
That's ok, I had to take a break too! I'll post some more findings tomorrow.
So after starting from the beginning again I have come to the following conclusion(s):
- My answer file works when I reboot the VM after running /generalize/ oobe /reboot and the unattended install works 100%
- If I take the customised install.wim file and use dism /apply-image after booting off the original Windows 10 ISO, the answer file works and the unattended install (again) works 100%
- This is where it goes wrong: If I open the original Win10 ISO in UltraISO and then replace the original install.wim with my own custom install.wim and create a new (customised) ISO with my own install.wim file then when I boot off this new ISO it prompts me at the language screen for user input. So I'm guessing that either I am doing something wrong in UltraISO or this program doesn't work properly with updating Windows 10 ISOs.
I'm going to try seeing if there are any other options to update an original Windows 10 ISO with a customised install.wim tomorrow.
I've got an update :)
I did some experimenting this morning and the only way I have been able to automate the language screens, disk configuration etc when installing Windows 10 is to add the AutoUnattend.xml to the root of the ISO/bootable USB drive. If I do this then Windows will install itself automatically and all I have to do is press any key to boot off the ISO/USB and a few minutes later I will be presented with a Windows desktop. The AutoUnattend.xml looks as follows so far:
NB: This is for a UEFI installCode:<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="windowsPE"> <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SetupUILanguage> <UILanguage>en-GB</UILanguage> </SetupUILanguage> <InputLocale>0809:00000809</InputLocale> <SystemLocale>en-GB</SystemLocale> <UILanguage>en-GB</UILanguage> <UserLocale>en-GB</UserLocale> <UILanguageFallback>en-GB</UILanguageFallback> </component> <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserData> <AcceptEula>true</AcceptEula> </UserData> <ImageInstall> <OSImage> <InstallFrom> <MetaData wcm:action="add"> <Key>/image/index</Key> <Value>1</Value> </MetaData> </InstallFrom> <InstallTo> <DiskID>0</DiskID> <PartitionID>4</PartitionID> </InstallTo> </OSImage> </ImageInstall> <DiskConfiguration> <Disk wcm:action="add"> <CreatePartitions> <CreatePartition wcm:action="add"> <Order>1</Order> <Size>1024</Size> <Type>Primary</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>2</Order> <Size>100</Size> <Type>EFI</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>3</Order> <Size>128</Size> <Type>MSR</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>4</Order> <Extend>true</Extend> <Type>Primary</Type> </CreatePartition> </CreatePartitions> <DiskID>0</DiskID> <WillWipeDisk>true</WillWipeDisk> <ModifyPartitions> <ModifyPartition wcm:action="add"> <Order>1</Order> <PartitionID>1</PartitionID> <Format>NTFS</Format> <Label>WinRE</Label> <TypeID>DE94BBA4-06D1-4D40-A16A-BFD50179D6AC</TypeID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>2</Order> <PartitionID>2</PartitionID> <Label>System</Label> <Format>FAT32</Format> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>3</Order> <PartitionID>3</PartitionID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>4</Order> <PartitionID>4</PartitionID> <Letter>C</Letter> <Label>Windows</Label> <Format>NTFS</Format> </ModifyPartition> </ModifyPartitions> </Disk> </DiskConfiguration> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideEULAPage>true</HideEULAPage> <ProtectYourPC>1</ProtectYourPC> </OOBE> </component> </settings> </unattend>
So what I did was try this out on an original Windows 10 ISO. I basically just updated the original ISO to have the
AutoUnattend.xml in the root. This worked 100% using the original install.wim.
After getting the AutoUnattend.xml to work, I then updated the original Windows 10 ISO with AutoUnattend.xml and my customised install.wim. This failed miserably. It basically automated the install of Windows 10 (well mostly) but I was then presented with a default Windows 10 desktop (ie: ALL my customisation was gone! Even the programs I installed like Office 2016 wasn't there).
So I'm confused, why is it when I use AutoUnattend.xml with my customised install.wim file it (mostly) automated the install but then does a default install of Windows and ignores my customisations in the install.wim file?
Really confused! Is it because I have AutoUnattend.xml in the root of the ISO/USB and have unattend.xml in c:\windows\system32\sysprep in my customised install.wim?
I'm guessing that my approach to this may be wrong but basically I am trying to do an unattended install of Windows 10 from ISO/USB and to have a customised version of Windows installed with all my changes/applications etc.
@xy677
OK, mystery solved. Got it right this time.
My issue was false approach; I am so used to boot from PE and use DISM to apply a sysprepped / generalized image from a network share (which works perfectly) that I didn't even think the key differences in applying an image with DISM compared to installing from ISO (Flash drive / DVD).
Will do two more test installs, both on Hyper-V vm and physical machine, posting about how I did it in an hour or two.
Well I think it's finally working for me!! I don't know how or why but somehow having I must have mixed up installing my custom ISO with the original ISO.
Long story short, I have created a custom ISO with my customised install.wim AND put the Autounattend.xml in the root of the ISO and am now able to do a fully unattended install (with the exception of entering my username which I want) and have a fully customised desktop with Office 2016 installed and fully patched.
I tried using my custom ISO by booting off it in VMware Workstation and I also created a bootabled USB using the original ISO and then overwriting the origianal install.wim with my own and copying the Autounattend.xml to the root of the USB and both methods worked great! Since my install.wim is about 8GB in size I had to use Rufus to create a bootable USB key using NTFS so that I could use large files in the file system but it worked (FAT32 is a no no for files larger than 4GB in size).
The one annoying thing I found when customising a Windows 10 desktop is that you can't use Settings to customise certain settings when Windows isn't activated? Is there a way around this? For now I have been editing the registry but it's a pain. Can you activate Windows before you sysprep so you can customise all the settings you want using Settings?
I also used DISM to compress my wim file and used DISM to do a cleanup of all the Windows Updated which saved a couple gigabytes in space.
Look forward to your findings and thanks so much for all your help!
Method I use to customize desktop in Audit Mode when Settings > Personalise is not working due Windows being not activated is I create a theme file on another machine (theme, background, colours, sounds, screensaver), copy that file to VM in Audit Mode and apply it.
Could you please post the final answer file you used?
That's a good idea, I'll have to look into that.
unattend.xml:
AutoUnattend.xml: (NB: this does UEFI partitioning!)Code:<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="specialize"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <CopyProfile>true</CopyProfile> <TimeZone>GMT Standard Time</TimeZone> <ComputerName>RENAME</ComputerName> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <InputLocale>0809:00000809</InputLocale> <SystemLocale>en-GB</SystemLocale> <UILanguage>en-GB</UILanguage> <UserLocale>en-GB</UserLocale> <UILanguageFallback>en-GB</UILanguageFallback> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideEULAPage>true</HideEULAPage> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <ProtectYourPC>1</ProtectYourPC> <UnattendEnableRetailDemo>false</UnattendEnableRetailDemo> </OOBE> <TimeZone>GMT Standard Time</TimeZone> </component> </settings> </unattend>
Just for fun I timed installing Windows using my customised ISO and it took just under 8min which is pretty impressive considering it has Windows 10 install FULLY patched, Office/Visio 2016 FULLY patched and has all my customisation! Just installing Windows Updates took me about an hour to do on it's ownCode:<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="windowsPE"> <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SetupUILanguage> <UILanguage>en-GB</UILanguage> </SetupUILanguage> <InputLocale>0809:00000809</InputLocale> <SystemLocale>en-GB</SystemLocale> <UILanguage>en-GB</UILanguage> <UserLocale>en-GB</UserLocale> <UILanguageFallback>en-GB</UILanguageFallback> </component> <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserData> <AcceptEula>true</AcceptEula> </UserData> <ImageInstall> <OSImage> <InstallFrom> <MetaData wcm:action="add"> <Key>/image/index</Key> <Value>1</Value> </MetaData> </InstallFrom> <InstallTo> <DiskID>0</DiskID> <PartitionID>4</PartitionID> </InstallTo> </OSImage> </ImageInstall> <DiskConfiguration> <Disk wcm:action="add"> <CreatePartitions> <CreatePartition wcm:action="add"> <Order>1</Order> <Size>1024</Size> <Type>Primary</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>2</Order> <Size>100</Size> <Type>EFI</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>3</Order> <Size>128</Size> <Type>MSR</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>4</Order> <Extend>true</Extend> <Type>Primary</Type> </CreatePartition> </CreatePartitions> <DiskID>0</DiskID> <WillWipeDisk>true</WillWipeDisk> <ModifyPartitions> <ModifyPartition wcm:action="add"> <Order>1</Order> <PartitionID>1</PartitionID> <Format>NTFS</Format> <Label>WinRE</Label> <TypeID>DE94BBA4-06D1-4D40-A16A-BFD50179D6AC</TypeID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>2</Order> <PartitionID>2</PartitionID> <Label>System</Label> <Format>FAT32</Format> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>3</Order> <PartitionID>3</PartitionID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>4</Order> <PartitionID>4</PartitionID> <Letter>C</Letter> <Label>Windows</Label> <Format>NTFS</Format> </ModifyPartition> </ModifyPartitions> </Disk> </DiskConfiguration> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideEULAPage>true</HideEULAPage> <ProtectYourPC>1</ProtectYourPC> </OOBE> </component> </settings> </unattend>
OK, no bigger difference in our autounattend file except I've been testing today in Hyper-V Generation 1 VM which means it's BIOS / MBR whereas your file is for UEFi / GPT.
BTW, the MSR partition only needs to be 16 MB. I also noticed you have set one gig for RE partition, half of that is enough. Of course there's no harm done with bigger partitions.