- Needed tools
- Integrating the language packs
- Integrating the updates and creating the ISO
- Creating a GPT formated USB stick
- Windows 7 ISO with SP1 integrated: You can get the English ISO here: Windows 7 SP1 ISO
- 7-ZIP: Tool to extract files from downloaded ISO
- Language pack you want to install: Language packs (make sure you download the correct version: X86, X64)
- exe2cab: Tool needed to convert language pack executables to cab files
- DISM: I think this tool is included in Windows starting with Windows 7. If you don't have this tool installed you can try GetWaikTools to download it. This tool is needed to integrate the language packs.
- There are two options you can use to download the Windows Updates: You can either use a tool which uses updates list or use a tool which uses Windows Updates to check for the available updates. Each option does have it's own strength:
- Tools which use updates list don't need a running version of your target Windows. Examples are:
- Tools which use Windows Updates have the advantage that they use the same mechanism which Windows uses to determine the needed updates which means they will always list all updates which are currently available. The disadvantage is that you need to have a running version of your target Windows installation:
- Portable Update: This tool will download the Windows updates as .cab files which seems to be faster to integrate then the .msu files downloaded by Windows Updates Downloader
- optional: VMware Player: If you want to use Portable Update you can use this to install Windows inside a virtual machine to download the needed updates
- NTLite: Integrates updates and creates ISO
- Rufus: This tool will be used to create the bootable USB stick
Folder StructureThe folder structure should look like this:
- IE11x64: If you want to integrate Internet Explorer 11 into your image the needed files will be put into this folder
- Langpacks: Folder where you put your converted language packs .cab files
- Langpacks_exe: Folder where you put your downloaded language packs .exe files
- Updates: Folder where you put your update files
- win7_pro_sp1_x64_en: Folder where you've unpacked your Windows 7 SP ISO
- exe2cab.cmd: Small script which converts language pack exe files to cab files
- exe2cab.exe: Tool to convert language pack exe files to cab files
- langadd64-w7.cmd: Script which integrates language packs into your installer
- win7_pro_sp1_x64_en.iso: The Windows 7 SP1 you've downloaded
Extract Windows ISOUse 7-ZIP to extract the Windows ISO file into a subfolder (e.g. win7_pro_sp1_x64_en). If you want to be able to select the version (Starter, Home Basic, Home Premium, Professional, Ultimate) you have to delete the ei.cfg file which is located in the sources folder.
Integrating Language PacksIn the first step you have to download all the language packs you want to integrate into your Windows 7 installation. Put the downloaded language pack executables into the Langpacks_exe folder and then execute the following script (exe2cab.cmd) to convert the .exe to .cab files (unfortunately exe2cab.exe doesn't have a silent switch so you have to confirm each converted package:
@echo off & setlocal enableextensions enabledelayedexpansion set BASEDIR=%~dp0 set LANGPACKS=%BASEDIR%Langpacks set LANGPACKS_EXE=%BASEDIR%Langpacks_exe FOR /R %LANGPACKS_EXE% %%i IN (*.exe) DO ( %~dp0\exe2cab.exe %%i ) move /Y %LANGPACKS_EXE%\*.cab %LANGPACKS%
Caveat!: If you want to integrate a language which needs additional font packages then please read the note on the following page: Add a Language to Windows Setup
Create the following langadd64-w7.cmd in your base directory (make sure to adjust the SRC path to the path where you've extracted the Windows 7 SP1 installation files):
Open a command prompt with administrative rights and cd into the directory where you've place the langadd64-w7.cmd script and the simply run the script which will take a while to complete (make sure dism can be found in the path or place dism.exe into the same folder where you've put langadd64-w7.cmd).
@echo off & setlocal enableextensions enabledelayedexpansion set BASEDIR=%~dp0 rem set paths to windows sources and language packs set SRC=%BASEDIR%win7_pro_sp1_x64_en set LANGPACKS=%BASEDIR%Langpacks set MOUNT=%BASEDIR%Mount set EXT=%BASEDIR%Extract if exist "%MOUNT%" rd /s /q "%MOUNT%" mkdir "%MOUNT%" echo "Integrate language packs to all editions" for /l %%e in (1, 1, 4) do ( echo "Mounting install.wim(%%e)" "dism.exe" /mount-wim /wimfile:"%SRC%\sources\install.wim" /index:%%e /mountdir:"%MOUNT%" FOR /F "usebackq" %%i IN (`dir /b "%LANGPACKS%"`) DO ( "dism.exe" /Image:"%MOUNT%" /Add-Package /PackagePath:"%LANGPACKS%\%%i" "dism.exe" /Image:"%MOUNT%" /Gen-LangIni /Distribution:"%SRC%" ) "dism.exe" /Image:"%MOUNT%" /Get-Packages /Format:Table "dism.exe" /Image:"%MOUNT%" /Get-Intl echo "Unmounting install.wim(%%e)" "dism.exe" /unmount-wim /mountdir:"%MOUNT%" /commit ) echo "Mounting boot.wim" "dism.exe" /mount-wim /wimfile:"%SRC%\sources\boot.wim" /index:2 /mountdir:"%MOUNT%" FOR /F "usebackq" %%i IN (`dir /b "%LANGPACKS%"`) DO ( if exist "%EXT%" rd /s /q "%EXT%" mkdir "%EXT%" echo "Extract %%i language pack" expand "%LANGPACKS%\%%i" -f:* "%EXT%" > NUL call :getlocale echo "Copy language pack files to boot.wim and windows sources" xcopy "%EXT%\setup\sources\*" "%SRC%\sources\" /cherkyi > NUL xcopy "%EXT%\sources\license\*" "%SRC%\sources\license\" /cherkyi > NUL xcopy "%EXT%\setup\sources\*" "%MOUNT%\sources" /cherkyi > NUL xcopy "%EXT%\sources\license\*" "%MOUNT%\sources" /cherkyi > NUL ) copy "%SRC%\sources\lang.ini" "%MOUNT%\sources\lang.ini" > NUL echo "Unmounting boot.wim" "dism.exe" /unmount-wim /mountdir:"%MOUNT%" /commit rd /s /q "%MOUNT%" rd /s /q "%EXT%" echo End of language pack integration pause exit /b :getlocale set currarea= for /f "usebackq delims=" %%a in ("%EXT%\langcfg.ini") do ( set ln=%%a if "x!ln:~0,1!"=="x[" ( set currarea=!ln! ) else ( for /f "tokens=1,2 delims==" %%b in ("!ln!") do ( set currkey=%%b set currval=%%c if "x[LangInfo]"=="x!currarea!" if "xLanguage"=="x!currkey!" ( set LANG=!currval! ) ) ) ) exit /b
Downloading Windows UpdatesHere two options are described for downloading the Windows updates. The advantages and disadvantages of each options is described in the Needed Tools section.
Windows Updates DownloaderDownload the Windows Updates Downloader and the updates file for your Windows version and select the updates which you want to integrate and download the updates.
Portable UpdateWhen you want to use the portable udpate tool you first have to install Windows inside a virtual machine. You can either use the original Windows 7 ISO if you don't want to integrate any language packs or use NTlite to create an ISO file:
- Open NTLite and select Add and select the folder where you've extracted your installation files
- Select Create ISO to create a new ISO file
After you have finished installing it into the virtual machine you can enable shared folders to easily move files between the virtual machine and the host. Make sure you select the option Map as a network driver in Windows guests as this will make it easier for you to transfer the files.
Now download, extract and run Portable Update inside your virtual machine and download the available updates. When you look at the downloaded files you can see that there are .cab and .exe files in your folder:
- Put all the files into the Updates folder
- When you go to the Updates folder you will see that some are additional language pack files. In File Explorer select to show File Description and then move all language pack files into the Langpacks_exe folder
Integrate Internet Explorer 11Extract the Internet Explorer installation file like this:
ie11-windows6.1-x64-en-us_ddec9ddc256ffa7d97831af148f6cc45130c6857.exe /x:<project root>\IE11x64
Unfortunately not all updates can be integrated using NTLite. You can try to convert the executables using the exe2cab tool which will work for a few selected packages and some of those can than be integrated into the installer.
Integrate Updates And Drivers
For the next steps you need NTLite:
- Add the folder where you've extracted your Windows installation files
- Load the edition you want to modify: In the source list you will see the editions listed in the install.wim. Select the edition you want to modify and Load the image.
- Go to the Updates tab and add the Updates folder (this is there folder where you have copied your update files) and then the IE11x64 (this is the folder where you have extracted the Internet Explorer 11 installation files) folder. NTLite will show you a warning that some updates can not be integrated. This is ok because not all updates can be slipstreamed.
- Go to the Drivers tab and add the drivers you want to include
- Go to the Apply tab and start the integration process. You can select to either keep only the selected edition (Export image selected) or keep all editions (Export image deselected)
- If you want to keep the other editions then you have to repeat these steps for the other editions also
Create ISOUse NTLite to create the ISO file. You can either select the image in the Image history in the Source tab and then select Create ISO or you can select Create ISO image on the Apply tab when you have loaded a .wim file.
Creating GPT Formated USB StickYou can create a bootable USB very easlily using the Rufus tool. Plug an USB stick into your computer and start Rufus. Make sure to select the USB stick as Device. If you want to install Windows 7 on an UEFI computer with a GPT formatted or empty disk select the GPT partition scheme for UEFI computer. If you're booting using the old BIOS method or use a MBR formated disk chose MBR partition scheme for BIOS or UEFI computers.
Additional InformationsUnfortunately this is far from perfect. On my test installation there were still 61 Windows updates available after a fresh install. This is because it's not possible to automatically integrate the .exe files updates (e.g. .NET update) and some of the updates simply can't be integrated for whatever reason.
I have gathered the informations here from various places:
- Raymond: Instructions on how to integrate Windows updates into installation sources
- nextofwindows: Instructions on how to create UEFI bootable USB stick
- Vistalizer: Instructions on how to convert the language EXE files to CAB files; script for integrating language pack
- Good to Know Database: Script which integrates language packs into install sources
- Technet: Instructions on how to integrate language pack into installations sources
- Slipstream Internet Explorer 11: Tutorial for integrating Internet Explorer 11