Automated Windows installation and Telemetry removal.
Go to file
Michael H.G. Schmidt c24e98d189 block update KB5040427 2024-07-19 13:23:56 +02:00
apps bugfix 2024-02-23 14:06:39 +01:00
drivers removed cyberjack junk drivers 2023-12-29 16:01:55 +01:00
image little reorg 2024-02-23 14:03:56 +01:00
optional NEW openvpn version 2024-07-17 23:47:51 +02:00
presets . 2024-02-19 15:14:40 +01:00
scripts replaced NSudo by superuser.exe 2024-07-18 14:18:49 +02:00
software replaced NSudo by superuser.exe 2024-07-18 14:18:49 +02:00
source thinclient fix 2024-03-26 16:28:12 +01:00
tools block update KB5040427 2024-07-19 13:23:56 +02:00
.gitignore . 2024-02-23 19:20:44 +01:00
01_DownloadAll.cmd reorg 2023-01-02 17:15:02 +01:00
02_ExtractIso.cmd added 4GB check for FAT32 filesystem! 2023-02-08 22:48:50 +01:00
03_PrepareBoot.cmd reorg: UEFI/BIOS selection is now in installer! 2023-02-20 15:11:28 +01:00
04_PrepareImage.cmd bugfixes 2023-12-25 22:05:37 +01:00
05_FormatMedia.cmd bugfix and change to BIOS only installation 2024-01-03 21:12:11 +01:00
06_Copy2Media.cmd bugfix 2024-02-24 16:55:19 +01:00
07_MakeISO.cmd added date to ISO file and to disk label 2023-12-28 15:20:40 +01:00
LICENSE.txt lic 2021-05-02 19:45:40 +02:00
README.md bugfix 2024-02-23 14:29:31 +01:00
command_shell_boot.jpg docs 2023-02-14 13:47:05 +01:00
firmware_boot_config.jpg docs! 2023-01-23 10:40:10 +01:00
firmware_boot_menu.jpg docs! 2023-01-23 10:40:10 +01:00
firmware_boot_menu2.jpg docs! 2023-01-23 10:40:10 +01:00
install_error.jpg docs! 2023-01-23 10:40:10 +01:00
setup_boot_menu.jpg bios and uefi re-engineering finished. 2023-02-20 16:32:39 +01:00
setup_drivesnapshot.jpg docs 2023-02-14 13:47:05 +01:00

README.md

Windows 10 automated install

What is all this about?

The installation of systems (professional or private) is a tedious job. In general nobody enjoys this. Nowadays most private individuals also have at least 2 computers. In my case there are 3 PC's in my private office and 3 in my companie's office (I am the company owner). There are also 2 laptops. Mind you: I use these 8 PC's solely for my work and my hobby as a Linux developer.

It doesn't matter whether it's Linux, Windows or Mac OS: You need an automated installation if you want to avoid this waste of time. The installation of the system itself is usually not that much work - but installing and configuring the other applications (e.g. browser, email program, office package, etc.) is often very time-consuming.

Since I am forced to work with Windows on the desktop - for professional reasons - this collection of scripts / this HowTo is exclusively geared towards Windows - and that will not change either.

First I looked for a "professional" solution. Unfortunately I didn't find anything suitable. Sure - there is commercial software (so-called "enterprise" programs) but mostly these are bad or expensive or both or simply not available for normal users or small companies. I'm following the KISS principle privately and professionally - this is why complicated software (aka. bloatware) with agents, whistles and bells etc. pp. was out of the question.

Another major problem is the spying frenzy of software manufacturers. Yes - i mean you Microsoft! So this means primarily the removing of Windows 10 telemetry. But unsolicited updates, by third-party manufacturers, are just as plague. This project takes care of that problem - as far as possible - without impairing the functionality of the system in an intolerable manner. But what is still tolerable? This lies mostly in the eye of the beholder ...

Finally, there is the problem of obesity. Modern systems are getting fatter, slower, more complex and therefore uglier. The whole thing has now reached a level that is no longer acceptable for many users. That is why one of the core tasks of this project is to strip down Windows 10 as much as possible (without loosing to much functionality - see above). This also automatically results in a reduction of the attack surface (programs that do not exist cannot be attacked).

Project goals

  • Provide an automated and unattended Windows 10 installation
  • Remove Microsoft's Windows 10 telemetry (as far as possible)
  • Remove other annoying Microsoft "gimmicks" (for e.g.: "Hello" screen)
  • Keep the installation stable and reproducable
    (save all files to your local disk or upload the to a private ftp server)
  • Install the system in OFFLINE mode (aka "airgapped" install)
  • Download and install 3rd party software automatically
  • Configure the system automatically
    (and remove Microsoft crap as far as possible without breaking important functionalies)
  • And finally obey the KISS principle: Keep It Simple Stupid!

Please read this to get started!

IMPORTANT: This whole thing was crafted and tested with Windows 10 version 20H2 v1 english, 64-bit.

This is actually the only supported version!

What will you need to run this?

  • a working Windows 10 installation with ADMIN(!) rights
  • a working commandline GIT client
  • a windows ISO image or Windows media creator
  • some tools from Microsoft
  • some other tools (like curl, 7zip etc. pp.)
  • Optionally: a licensed copy of "NTLite"
    (this is only needed in case you want to modify the windows image)

1. Setup your workspace

Note: This was tested with a standard Windows 10 installation (20H2 v1).

Login with ADMIN rights!

1.1 Create some directories

open cmd.exe and execute:

mkdir c:\tools
mkdir c:\temp

1.2 Set needed environment variables

set TOOLS=c:\tools
set T=c:\TEMP

Make them permanent (... in case you open a new cmd window):

setx TOOLS c:\tools
setx T c:\TEMP

2. Get/Install basic tools and software

2.1 Get 7-zip

7-ZIP Website

Download latest 64bit MSI file from: https://7-zip.org/download.html and save it in your "Downloads" folder.

Unpack the MSI with:

cd /D %USERPROFILE%\Downloads
move /Y 7z*-x64.msi 7z-setup.msi
msiexec /a 7z-setup.msi TARGETDIR=%T%
cd ..

After extracting execute:

move /Y %T%\Files\7-Zip\7z.exe %TOOLS%
move /Y %T%\Files\7-zip\7z.dll %TOOLS%
del /S /Q /A %T%\7z-setup.msi 1>nul 2>nul
rd /S /Q %T%\Files

2.2 Get curl

CURL Website

Download latest 64bit zip file from: https://curl.se/download.html and save it in your "Downloads" folder.

Deploy curl.exe and libcurl.dll into the tools folder:

cd /D %USERPROFILE%\Downloads
move /Y curl*.zip curl.zip
%TOOLS%\7z -y -o%T%\curl e curl.zip
move /Y %T%\curl\curl.exe %TOOLS%
move /Y %T%\curl\libcurl*.dll %TOOLS%
move /Y %T%\curl\curl-ca-bundle.crt %TOOLS%
rd /S /Q %T%\curl
cd ..

2.3 Install GIT

GIT for windows website

Download latest 64bit exe file from: https://git.com/git-for-windows/git/releases and save it in your "Downloads" folder.

Create the GIT configfile for the setup program (use notepad):

[Setup]
Lang=default
Dir=c:\tools\git
Group=Git
NoIcons=1
SetupType=default
Components=gitlfs
Tasks=
EditorOption=CustomEditor
CustomEditorPath=notepad.exe
DefaultBranchOption= 
PathOption=CmdTools
SSHOption=OpenSSH
TortoiseOption=false
CURLOption=OpenSSL
CRLFOption=CRLFCommitAsIs
BashTerminalOption=ConHost
GitPullBehaviorOption=Merge
UseCredentialManager=Disabled
PerformanceTweaksFSCache=Disabled
EnableSymlinks=Disabled
EnablePseudoConsoleSupport=Disabled

Save it as c:\temp\install-git.txt

Execute the Git setup:

cd /D %USERPROFILE%\Downloads
move /Y Git-*64-bit.exe git-setup.exe
git-setup.exe /LOADINF=c:\temp\install-git.txt /NORESTART /NOCANCEL /SILENT /SUPPRESSMSGBOXES /CLOSEAPPLICATIONS
cd ..

Cleanup:

del /S /Q /A c:\temp\install-git.txt 1>nul

2.4 Modify system PATH

You need to extend your PATH variable with the following directories:

%TOOLS%
%TOOLS%\git\bin
%TOOLS%\git\usr\bin

Or (in case you are fine with our path settings) execute:

set PATH=%SYSTEMROOT%;%SYSTEMROOT%\system32;%SYSTEMROOT%\system32\wbem;%SYSTEMROOT%\system32\WindowsPowerShell\v1.0;%LOCALAPPDATA%\Microsoft\WindowsApps;%TOOLS%;%TOOLS%\git\bin;%TOOLS%\git\usr\bin
setx PATH %SYSTEMROOT%;%SYSTEMROOT%\system32;%SYSTEMROOT%\system32\wbem;%SYSTEMROOT%\system32\WindowsPowerShell\v1.0;%LOCALAPPDATA%\Microsoft\WindowsApps;%TOOLS%;%TOOLS%\git\bin;%TOOLS%\git\usr\bin

2.5 Enable Powershell script execution

This is a very important step! (We need to allow the execution of any powershell script)

Start a Powershell window with ADMIN rights ("Run As Administrator")!

And Execute:

powershell -Command "Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope LocalMachine"

3. Clone this repository

cd /D %USERPROFILE%
mkdir workspace\git
cd workspace\git
git clone https://gitea.exabyte-systems.com/WINDOWS/w10install.git
cd w10install

4. Get essential building tools and software

You can download all the needed software packages with the script "01_DownloadAll.cmd".

To do this execute:

cd /D %USERPROFILE%\workspace\w10install
01_DownloadAll.cmd

Alternatively you can download everything seperately (see chapters below)

4.1 Basic software

The "basic" software is needed to make this work.

Execute:

cd /D %USERPROFILE%\workspace\w10install\software
download-from-source.cmd basic

Config file: basic.csv

4.2 Browser software

This contains firefox and some addons ...

To download it execute:

cd /D %USERPROFILE%\workspace\w10install\software
download-from-source.cmd browser

Config file: browser.csv

4.3 Optional software

This contains optional software. For e.g.: Purebasic, TotalCommander, em-Client, Steam, Softmaker, Purebasic, Teams, Visual Studio Code etc. pp. ...

To download it execute:

cd /D %USERPROFILE%\workspace\w10install\software
download-from-source.cmd optional

Config file: optional.csv

Notice: Purebasic is needed to compile the software in the folder "source". These tools are precompiled and i placed the compiled versions in the folder "tools" - but in case you want to make some changes you will have to install this. The free version is sufficient to compile these little machine programs. By the way: Purebasic is a really great Basic dialect. It is Ultrafast, produces really small executables, it's rock solid and you won't need such bullshit like "vbrun100.dll" (shame on you Microsoft) to execute these binaries. It was created by a french programmer (Frederic Laboureur). Please support them and buy a licence in case you like Purebasic!

4.4 Windows 10 ISO file

My actual work is based on the English version of Windows LTSC 21H2 64-bit. So we will need a Windows 10 LTSC ISO-file. Get it from here: https://www.microsoft.com/en-us/evalcenter/download-windows-10-enterprise.

I prefer to use the Windows ISO downloader ("Windows-ISO-Downloader.exe" in the folder "software").

Just start it (no installation needed) and select "Windows 10" on the right side.

Select edition (left side) and choose "Windows 10 Home/Pro" from "Windows 10 Version 20H2 - October 2020".

Please DO NOT USE the v2 version! This is not tested yet (you have been warned)!

Click "Confirm".

Select "English"

Please DO NOT USE "International English" or some other language!

Click "Confirm"

Click "64-bit download"

Save the ISO file to the folder "software" in the folder "w10install" and wait for the download to finish.

5. Extract the Windows 10 ISO file

The ISO file must be extacted to the disk now. The files will be place in c:\temp. The script "02_ExtractIso.cmd" does all the work.

Just execute:

cd /D %USERPROFILE%\workspace\w10install
02_ExtractIso.cmd software\19044.1288.211006-0501.21h2_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_en-us.iso

6. Upload software to private FTP server

The internet is changing constantly. Software is changing at all times. URI's (files) disappear! Especially Microsoft has the habit to remove old versions of operating systems from their download servers. But 3rd parties do this too.

In fact: This was one of the main reasons why i created this: I wanted to have a source i can trust - a source that will not change until i say so.

So my advice is: upload the software to your own ftp server or create a local copy on some USB drive and most important: KEEP this copy for yourself!

Uploading all the software to your own server is easy. Just create the folder "personal" (in w10install) and put a config file named "ftpsettings.cmd" in it:

Example for personal\ftpsettings.cmd:

FTP_SERVER=example.com
FTP_PATH=/path/to/directory/w10install
FTP_USER=myuser
FTP_PASS=mypass

The folder "personal" is also used by some other scripts in this project. You can place config files or license files in this folder (This will be described in detail in some other chapters). It may be a good idea to have this folder ("personal") as GIT repository on git or somewhere else - just my 50 cents.

There is also a folder "custom" which can be used for license files and special binaries. I'm also recommending to create a git repository that will be checked out by you just before creating the target media.

Both folders must be created before calling the script that copies all files to the media. They will then be copied to the target machine when installing it via the Media ...

Please notice: In the example i have chosen the path "... w10install/W1020H2v1". Best practice would be to have a folder for each Windows version (W1020H2v1). All files (including the iso file) should be put there - this makes sure that you have everything in one place for the case that you come back a year later or so and you want to create a new installation media with a older Windows version - for testing purposes.

6.1 Upload ALL files to a private ftp server

Lets say you want to upload all browser related software to your private ftp server.

Execute:

cd /D %USERPROFILE%\workspace\w10install
upload-to-ftp.cmd browser

The script reads the file "browser.csv" in folder "software" and uploads all files to your ftp server. The files will be uploaded in any case (the script is not checking the size of the file in the target or whether it's already present. This is a really dumb script - but IMHO there's no smarter way to do this in dos batch ...). This is the reason why i have created a script to upload single files (see next chapter).

6.2 Upload a SINGLE file to a private ftp server

Lets say you want to upload the driver software for the WFC5210 printer to your private ftp server.

Execute:

cd /D %USERPROFILE%\workspace\w10install
upload-to-ftp-singlefile.cmd WFC5210-setup.exe

HINT: You can use this also to upload the ISO file to the ftp server.

6.3 Download software from a private FTP server

When you have uploaded the entire software to your private ftp server you can download it again on another workstation with the script "download-from-ftp.cmd" and you are then not dependent on any of the original sources. This is useful when files "disappear" "accidentally" or "unintentionally" from some server. That is also a reason why I programmed all of this here.

Just execute:

cd /D %USERPROFILE%\workspace\w10install
download-from-ftp.cmd basic
download-from-ftp.cmd browser
download-from-ftp.cmd optional
download-from-ftp.cmd other

7. Install build tools

7.1 Windows ADK

This is needed to be able to edit the Microsoft XML files (needed for unattended installation) and for the creation of ISO files (last step in the build process - mainly needed for testing purposes).

To install it just execute:

cd /D %USERPROFILE%\workspace\w10install\scripts
install-adk.cmd

7.2 Other tools

Creating a new windows image and removing "builtin" packages needs a tool called "install_wim_tweak". To install this tool an some others just execute:

cd /D %USERPROFILE%\workspace\w10install\scripts
unpack-zipfiles.cmd

8. Build the Windows Images for unattended installations

Many things will be done here:

  • extract the boot image (WIM file) and add tools to provide a boot menu etc. pp.
  • extract Windows image (WIM file) and choose Windows 10 Pro version
  • remove all apps from the windows image (except the Store app!)

Please start your cmd.exe with "Run as Administrator"!

HINT: In case you need a "standard" windows media without modifications just skip the following 3 steps and proceed directly to the script "06_FormatStick.cmd" (chapter 9).

8.1 Create a boot image

Execute:

cd /D %USERPROFILE%\workspace\w10install
03_PrepareBoot.cmd

This will create the new "boot.wim" image. It will also:

  • set the correct locale in the boot image
  • install the custom boot menu for the setup
  • configure the xml files the unattended installation
  • copy snapshot64 to the boot image for bare metal recovery
  • copy the "netuse" script to attach a network drive

Example run:

=========================================
START of BOOT image creation process ...
=========================================

########## calling [ mount-boot.cmd ] ##########
creating wim mountpoint for BOOT ...
setting write access for boot.wim ...
mounting boot.wim to C:\TEMP\BOOT ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Mounting image
[==========================100.0%==========================]
The operation completed successfully.

########## calling [ finish-boot.cmd ] ##########
searching for SCRIPT settings ...
OK. Loading SCRIPT settings ...

searching for CUSTOM settings ...
INFO: config file ..\custom\settings.cmd NOT FOUND

renaming Windows setup.exe to boot image ...
        1 file(s) moved.

setting language in boot image ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image Version: 10.0.19041.508


Input locale has been set to: de-DE
The operation completed successfully.

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image Version: 10.0.19041.508


System locale has been set to: de-DE
The operation completed successfully.

replacing setup.exe with our installer utility ...
        1 file(s) copied.

copying config file for unattended install [ BIOS ]...
        1 file(s) copied.
working on [ C:\TEMP\BOOT\autounattend_BIOS.xml ] and replacing string [ ___MYUSER___ ] With [ localadmin ] ...
working on [ C:\TEMP\BOOT\autounattend_BIOS.xml ] and replacing string [ ___MYNAME___ ] With [ Local Administrator ] ...
working on [ C:\TEMP\BOOT\autounattend_BIOS.xml ] and replacing string [ ___MYPASS___ ] With [ ******** ] ...
working on [ C:\TEMP\BOOT\autounattend_BIOS.xml ] and replacing string [ ___MYLANG___ ] With [ de-DE ] ...

copying config file for unattended install [ UEFI ]...
        1 file(s) copied.
working on [ C:\TEMP\BOOT\autounattend_UEFI.xml ] and replacing string [ ___MYUSER___ ] With [ localadmin ] ...
working on [ C:\TEMP\BOOT\autounattend_UEFI.xml ] and replacing string [ ___MYNAME___ ] With [ Local Administrator ] ...
working on [ C:\TEMP\BOOT\autounattend_UEFI.xml ] and replacing string [ ___MYPASS___ ] With [ ******** ] ...
working on [ C:\TEMP\BOOT\autounattend_UEFI.xml ] and replacing string [ ___MYLANG___ ] With [ de-DE ] ...

copying STANDARD snapshot64.exe to boot image ...
        1 file(s) copied.
copy netuse helper script to boot image ...
        1 file(s) copied.
unmounting and committing changes to C:\TEMP\W10\sources\boot.wim ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image File : C:\TEMP\W10\sources\boot.wim
Image Index : 2
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.


======
READY.
======

8.2 Prepare the new windows image

Execute:

cd /D %USERPROFILE%\workspace\w10install
04_PrepareImage.cmd /R

This will create/prepare the new "install.wim" and it will remove all apps that are listed in the file "image\apps-to-remove.csv".

HINT: To leave the standard apps in the image just call the script without switch '/R'

Example run:

=========================================
START of MAIN image creation process ...
=========================================

########## calling [ export-image.cmd ] ##########

[export-image.cmd] INFO: found C:\TEMP\W10\sources\install.wim
[export-image.cmd] INFO: exporting image from C:\TEMP\W10\sources\install.wim ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Exporting image
[==========================100.0%==========================]
The operation completed successfully.
[export-image.cmd] WARNING: removing original C:\TEMP\W10\sources\install.wim ...
[export-image.cmd] INFO: renaming C:\TEMP\W10\sources\w10.wim ...
        1 file(s) moved.

READY.

########## calling [ mount-image.cmd ] ##########
creating image mountpoint ...
setting write access for install.wim ...
mounting install.wim to C:\TEMP\IMAGE ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Mounting image
[==========================100.0%==========================]
The operation completed successfully.

########## calling [ finish-image.cmd ] ##########
[finish-image.cmd] INFO: copying scripts to C:\TEMP\IMAGE\Windows\Setup\scripts ...
        1 file(s) copied.
        1 file(s) copied.
        1 file(s) copied.
[finish-image.cmd] INFO: doing cleanup on mountpoint C:\TEMP\IMAGE ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image Version: 10.0.19042.508

[===========                20.0%                          ]
The operation completed successfully.
[finish-image.cmd] INFO: unmounting and committing changes to C:\TEMP\W10\sources\install.wim ...

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image File : C:\TEMP\W10\sources\install.wim
Image Index : 1
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.

checking for NTLite ...
calling NTLite ...

======
READY.
======

8.3 Edit the Windows image with "NTLite"

In case you have installed "NTLite" the script "04_PrepareImage.cmd" will start it and you can modify your windows image now.

WARNING: Be careful what you remove - or you could end up with a non working windows installation.

SUGGESTION: Before modifying your windows image (and maybe screwing up everything) go through the whole process and test your boot media with a standard image.

Tip: In the folder "presets" you will find carefull tested xml config files. These presets remove only components. All tweaking etc.pp. is done with scripts that will be executed on the target machine. You should use the latest file which is: "ntlite-W10-20H2-StandardPC-V10-withXBOX.xml"

9. Finally create a new boot media

This has to be done in 3 steps:

  • format a media (mostly a USB stick)
  • create a standard Windows 10 boot media
  • copy everything (custom image, software, config) to the media

9.1 Format the media

Please use a fast USB 3 stick or a SSD disk connected via USB. The size should be 16 GB or more (you could use 8 GB but windows images are tending to get bigger and bigger. Additionally: We will copy lots of 3rd party software to the media).

To create it execute:

cd /D %USERPROFILE%\workspace\w10install
05_FormatMedia.cmd

Choose the correct drive (this should be drive 1 or 2)

WARNING: Please be careful and make absolutely sure NOT TO DELETE any important data!

Example run:

====================
Format Media ...
====================

Showing disk list ...

Microsoft DiskPart version 10.0.19041.1

Copyright (C) Microsoft Corporation.
On computer: FIREBIRD

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          232 GB      0 B
  Disk 1    Online          465 GB  1024 KB
  Disk 2    Online          119 GB    87 GB

Leaving DiskPart...
Please select a disk: 2
OK using disk 2

IMPORTANT: use "exfat" for BIOS boot only and "fat32" for UEFI boot/install!
   REASON: UEFI cannot read "exfat" filesystems and Windows setup will throw error code: 0x80042565

Please select filesystem (fat32 or exfat) [fat32]:
IMPORTANT: maximum partition size for FAT32 is 32768!
           maximum filesize for FAT32 is 4GB!
selected: fat32

Please enter size in MB [32768]:
selected size = 32768 [MB]

Please enter a label for the new disk [W10-20H2] :
WARNING ! This will DELETE ALL data on disk number [2]

REALLY delete disk 2 (Y/N)? y

Microsoft DiskPart version 10.0.19041.1

Copyright (C) Microsoft Corporation.
On computer: FIREBIRD

Disk 2 is now the selected disk.

DiskPart succeeded in cleaning the disk.

DiskPart successfully converted the selected disk to MBR format.

DiskPart succeeded in creating the specified partition.

Partition 1 is now the selected partition.

  100 percent completed

DiskPart successfully formatted the volume.

DiskPart marked the current partition as active.

DiskPart successfully assigned the drive letter or mount point.

Leaving DiskPart...
Media formatted.

======
READY.
======

9.2 Copy the everything to the media

Now it's time to copy the custom windows images, all scripts and additional 3rd party software to our boot media (USB stick or SSD drive).

Notice: In the example we use drive "E:". Please make sure to use the correct drive letter for your USB drive!

Execute:

cd /D %USERPROFILE%\workspace\w10install
06_Copy2Media.cmd E:

IMPORTANT HINT: the script will ask for UEFI or BIOS mode. This means: In case you have a target machine that cannot boot in UEFI mode choose "BIOS" (or "B"). In all other cases UEFI may be a better choice. You can boot most modern boards in "BIOS" mode. Just enable "legacy" boot mode in you PC's firmware.

Example run:

=================================
Copying all data to Media ...
=================================

using drive [ e: ] ...

DRIVETPYE = [ FAT32 ]
copying all files in [ c:\TEMP\W10 ] to drive e: ...

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------

  Started : Montag, 20. Februar 2023 15:59:31
   Source : c:\TEMP\W10\
     Dest = E:\

    Files : *.*

  Options : *.* /256 /NDL /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /J /XX /R:1 /W:30

------------------------------------------------------------------------------

100%        New File               31938        c:\TEMP\W10\Auto-saved 09100bfc.xml
100%        New File                 128        c:\TEMP\W10\autorun.inf
100%        New File              413738        c:\TEMP\W10\bootmgr
100%        New File               1.4 m        c:\TEMP\W10\bootmgr.efi
100%        New File               74305        c:\TEMP\W10\NTLite.log
100%        New File               74184        c:\TEMP\W10\setup.exe
[...]

------------------------------------------------------------------------------

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :        82        81         1         0         0         1
   Files :       866       866         0         0         0         0
   Bytes :   3.534 g   3.534 g         0         0         0         0
   Times :   0:00:22   0:00:21                       0:00:00   0:00:01


   Speed :           179432212 Bytes/sec.
   Speed :           10267.193 MegaBytes/min.
   Ended : Montag, 20. Februar 2023 15:59:53

copying folder [ tools ] to drive e: ...

100%        New File               22016        C:\Users\mschmidt\workspace\w10install\tools\allpull.exe
[...]

copying folder [ software ] to e:\tools ...

100%        New File               1.6 m        C:\Users\mschmidt\workspace\w10install\software\7z-setup.msi
[...]

copying folder [ drivers ] to e:\tools ...

100%        New File                 488        C:\Users\mschmidt\workspace\w10install\drivers\install-archerT5E-bluetooth.cmd
[...]

copying folder [ scripts ] to e:\tools ...

100%        New File                5834        C:\Users\mschmidt\workspace\w10install\scripts\autoconfig.cmd
[...]

copying folder [ source ] to e:\tools ...

100%        New File                2123        C:\Users\mschmidt\workspace\w10install\source\allpull.pb
[...]

copying folder [ optional ] to e:\tools ...

100%        New File                 955        C:\Users\mschmidt\workspace\w10install\optional\block-updates.cmd
[...]

copying folder [ apps ] to e:\tools ...

100%        New File                 147        C:\Users\mschmidt\workspace\w10install\apps\apps.txt
[...]

copying autoconfig starter script to e: ...
        1 file(s) copied.

putting copytools script to e: ...
        1 file(s) copied.

IMPORTANT HINT:
  How is your target media formatted?
    - use "exfat" for BIOS based installations only!
    - use "fat32" for UEFI based installations only!
  REASON: UEFI cannot read "exfat" filesystems and Windows setup will throw error code: 0x80042565

======
READY.
======

Congratulations!

Your customized windows image for UNATTENDED installation is READY now. Remove the media and plug it into a PC you want to install.

9.3 Create an ISO image

In case you need an ISO image you can create it with the following command:

cd /D %USERPROFILE%\workspace\w10install
07_MakeISO.cmd E:

Example run:

================================
Make ISO file from Media ...
================================

using drive [ E: ] ...

OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
Copyright (C) Microsoft, 1993-2012. All rights reserved.
Licensed only for producing Microsoft authorized content.


Scanning source tree (1000 files in 93 directories)
Scanning source tree complete (1209 files in 106 directories)

Computing directory information complete

Image file is 11892326400 bytes

Writing 1209 files in 106 directories to c:\temp\WIN10-AUTO.iso

100% complete

Final image file is 11895015424 bytes

Done.

======
READY.
======

Having an ISO image is useful for testing purposes or it maybe needed for a special use case - for e.g.: you want to install the system on some machine in the datacenter and the remote console needs an ISO image as boot media.

Notice: This step is one of the reasons why we need the Windows ADK. The binary "oscdimg" is included in this Microsoft package. "oscdimg" is used by "08_MakeISOfromStick.cm" for creating the ISO image.

10 Installation

(Using your stick/your disk to install a new machine.)

10.1 Firmware settings

Enter your firmware (typically by pressing "ESC", "F1" or "ENTF" while the machine is starting). DISABLE secure boot and all the other rubbish. Goto menu "Startup".

10.1.1 Boot order

Set your boot order in the machines "Startup" menu to:

  • 1st Device: Hard Disk
  • 2nd Device: USB Disk

Remove all other boot devices from the list.

10.1.2 Boot method

In case you want to install via BIOS method set the firmware to:

  • Legacy only

In case you want to install via UEFI method set the firmware to:

  • UEFI only

DO NOT USE "both" - in most cases this WILL cause trouble!

10.2 Booting

Power off your machine completely and boot it. Hit the "F12" key (or the key needed to select the boot device - in some cases this could also be "F11" or some other key) so that the machine starts from your newly generated USB drive.

In the next screen select your USB disk:

10.3 Installing

After booting from the USB media you will see a menu. Select "INSTALL" and click on "Yes" two times. IMPORTANT! This will DELETE ALL DATA from your machine! Answering "No" will reboot the machine without touching your data.

Clicking on the button "COMMAND shell" will start the rescue system.

Clicking on "Snapshot 64" will start the Bsckup/Restore program and you can restore your machine (from bare metal) over the network or with the attached USB drive using an image that was previously saved with "Snapshot 64").

IMPORTANT HINT: According to the settings of your firmware select "BIOS" or "UEFI" mode!

10.4 FINISH

The installation is finished when you see the following message:

+++ INSTALLATION FINISHED. +++ Please REMOVE the installation MEDIA (USB Stick) NOW!
IMPORTANT HINT: Disable the update blocker to make the Microsoft Store work!"

11 Troubleshooting

11.1 Installation

IMPORTANT!

The windows setup program is not able to use "exfat" when starting in UEFI mode!

This means you can use 2 types of media to install a windows system:

1.) UEFI boot

  • media must be formatted with fat32 ONLY
  • max. media size is 32768 MBytes
  • max. WIM file size must be smaller than 4 GBytes
    (because fat32 does not support files larger than 4 GBytes)

2.) BIOS boot

  • media can be formatted with fat32 or exfat
  • max. media size is limited by disk format (exfat can be larger)
  • max. WIM file size can be larger than 4 GBytes

Do NOT try to use exfat with UEFI boot! This will result in the following error:

Windows could not create a partition on disk 0. The error occured while applying the unattended
answer file's <DiskConfiguration> setting. Error code: 0x80042565

11.2 Rescue System

Boot your system with your installation media. In the boot menu click on "COMMAND shell":

The system opens a shell and you can do repairs or rescue actions. The network will be started automatically. Start the script "netuse.cmd" to attach network drives as needed.

11.3 Backup/Recovery

Boot your system with your installation media. In the boot menu click on "Snapshot 64". The system starts the Drivesnapshot tool (www.drivesnapshot.de).

Tip: To access the network start a command shell and attach your server with the netuse script!