Windows setup as it should be!
Winstall is a simple collection of docker, python and bash scripts for making custom Windows 11 ISO files for the purpose of automated unattended Windows 11 installations. Currently winstall is confirmed to work on apt-based Linux distros such as Ubuntu and Debian.
Winstall is especially useful for hobbyists and other similar non-enterprise users who need to manage multiple Windows installations with various tweaks.
Download Windows 11 ISO file manually from https://www.microsoft.com/en-us/software-download/windows11 and save it so that you can find it during the next steps.
Autounattend.xml is the configuration file that makes Windows 11 installation fully automatic.
You can generate your own custom configuration easily at https://schneegans.de/windows/unattend-generator/ or use the default one provided by this repository in config directory.
IMPORTANT: Note that the default autounattend.xml provided by this repo chooses the target disk for installation automatically. If you have multiple disks and want to choose a specific disk, you should use a custom autounattend.xml.
To use your own autounattend.xml, replace the one provided by this repository with yours in the config directory. Alternatively you can collect multiple config files to config/custom.
Docker: https://docs.docker.com/get-started/get-docker/
Python3: https://www.python.org/downloads/
Run by executing the following command:
python3 winstall.py -i <path-to-windows11-iso>By default created iso files will be placed in the output directory. You can use the created winstall.iso as such for virtual machine installations. If you don't know how to do that, learn to use the original Windows 11 ISO first.
Optional: If you want to install baremetal devices such as laptops, you have to plug in your installation media such as an USB stick before you continue further.
Winstall python script will prompt you with a question "Do you want to burn the output ISO to a USB drive? [y/N]:"
After answering y, Winstall will ask you to choose a burning method. In the current state of Winstall, selecting WoeUSB is recommended for optimal speed and reliability.
After burning method selection you have to select a target device for the ISO burning operation. A confirmation prompt will be asked after the device selection to be safe. After this the actual writing of the ISO starts to the selected device.
WARNING: Always have backups of your data! Even though the ISO burning logic of Winstall is made with safety in mind, mistakes can happen!
Now you are ready to use your new automated Windows 11 install media.
Make sure that the USB is booted in UEFI mode on the target device. The rest will be handled by the automatic windows installation if all steps were done correctly and the target device is supported and correctly configured from the BIOS.
Usage: winstall.py [-h] [-c CONFIG] [-d DEBUG] -i ISO [-o OUTPUT]
With custom iso path and custom autounattend.xml path:
python3 winstall.py -i <original-windows-iso-file-path> -c <path-to-custom-xml-config>With custom iso path and custom output path:
python3 winstall.py -i <original-windows-iso-file-path> -o <path-to-output-iso>The default autounattend.xml has a source url to the config on line 3 of the xml config. Using it saves a lot of time for creating customizations based on the defaults chosen by this repository.
Unordered list of planned future features:
- Unattended original Windows 11 iso download
- Implementing & testing support for using this tool on Windows 11
- CLI version for https://schneegans.de/windows/unattend-generator/ website to avoid depending on the website in case it gets taken down
- Ansible integration
- BIOS / UEFI options
- Additional drivers support
- Support for only burning to device without the included ISO build step
- Easier accessibility of Winstall (e.g. binary format version releases)
- Setup improvement (requirements.txt, etc.)
See CONTRIBUTING.md.
Thanks to https://blog.linux-ng.de/author/marcel/ for creating their great blog post about Windows 11 ISO creation: https://blog.linux-ng.de/2025/01/02/build-unattended-windows-iso/
