Add Multilingual Support to Windows 10 Distribution - automated batch script

Discussion in 'Windows 10' started by abbodi1406, Mar 30, 2016.

  1. Bira

    Bira MDL Junior Member

    Oct 4, 2017
    54
    15
    0
    #101 Bira, Jun 25, 2018
    Last edited by a moderator: Oct 31, 2018
    Code:
    @echo off
    if not exist c: \ win81x64 exit
    if not exist d: \ mount mkdir d: \ mount - quro know how to make all folders with a variable so that they mount 10 images inside it
    
    for / l %% x in (1, 1, 7) of (
    - mountdir: d: \ mount - "here is the variable to recognize all images" / mountdir: d: \ mount - images to be mounted ". 
    
    Are you from the community understanding what I mean? or am I not able to explain? and as the friend said about msmg, and just like
     
  2. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    It's not advisable to mount multiple images together from same wim

    and DISM doesn't allow multiple instances anyway, so there is no real point
    well, except maybe on RAM drive
     
  3. Bira

    Bira MDL Junior Member

    Oct 4, 2017
    54
    15
    0
    #103 Bira, Jul 8, 2018
    Last edited by a moderator: Oct 31, 2018
    Code:
    %windir%\system32\reg.exe query "HKU\S-1-5-19" 1>nul 2>nul || goto :E_ADMIN
    cd /d "%~dp0"
    set "WORKDIR=%cd%"
    set "TEMPDIR=%WORKDIR%\TEMP"
    if "%INSTALLWIMDIR%"=="" set "INSTALLWIMDIR=install.wim"
    if "%MOUNTDIR%"=="" set "MOUNTDIR=%~dp0\MOUNT"
    set "DISMTEMPDIR=%TEMPDIR%\scratch"
    set "EXTRACTDIR=%TEMPDIR%\extract"
    set "INSTALLMOUNTDIR=%MOUNTDIR%\install"
    ====================================================
    ====================================================
    if exist "%TEMPDIR%" (rmdir /s /q "%TEMPDIR%" 1>nul 2>nul || goto :E_DELDIR)
    if exist "%MOUNTDIR%" (rmdir /s /q "%MOUNTDIR%" 1>nul 2>nul || goto :E_DELDIR)
    mkdir "%TEMPDIR%" || goto :E_MKDIR
    mkdir "%DISMTEMPDIR%" || goto :E_MKDIR
    mkdir "%EXTRACTDIR%" || goto :E_MKDIR
    mkdir "%MOUNTDIR%" || goto :E_MKDIR
    mkdir "%INSTALLMOUNTDIR%" || goto :E_MKDIR
    goto :start
    ==========================================================================
    
    =================================
      Detect details Image (s)
    =================================
    
    
        Version: 7601
        Quantity: 4 Image (s)
        Language: pt-BR
        Architecture: 64-bit
    
    
    ===============================
      Mounting Image (s) - index 1/4
    ===============================
    
     
  4. Bira

    Bira MDL Junior Member

    Oct 4, 2017
    54
    15
    0
    #104 Bira, Jul 8, 2018
    Last edited by a moderator: Oct 31, 2018

    This script and its abbodi, however I just removed the part of adding languages, but I wanted this loop, where they would mount those images, mount a folder of each one giving the loop using ")" by the count of 1/4 first , then another part to put updates and then close all at once with the loop, "% DISMRoot%" / ScratchDir: "% DISMTEMPDIR%" / dismount-Wim / MountDir: "% INSTALLMOUNTDIR%" / commit
    if errorlevel 1 goto: E_UNMOUNT, but first mount all images, for example 1,2,3,4, how do I do this in your scripts, what do I put in front of this "installation"? Just this, thank you from now on, And I understood what you meant above.
     
  5. z110110

    z110110 MDL Junior Member

    Apr 15, 2017
    54
    11
    0
    Hello, I look forward to your joining the new version of W10 1809. Thank you
     
  6. DioNZB

    DioNZB MDL Member

    Jun 23, 2013
    238
    416
    10
    Created en-US/nl-NL 17763.1 iso with this script
    In setup when i select english, setup language is not english but still nl-nl
    any help?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  7. z110110

    z110110 MDL Junior Member

    Apr 15, 2017
    54
    11
    0
    Hey, buddy, look forward to your update.
     
  8. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    They didn't publish any LPs or FODs to WSUS yet
     
  9. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    There is an issue (or restriction) with adding 17763 FOD packages

    since the start of W10MUI, FODs .cab files directly had been added directly (point DISM to cab path)

    but they changed this in 17763, now the files names must follow capability naming scheme
    e.g.
    Code:
    microsoft-windows-languagefeatures-basic-en-us-package~31bf3856ad364e35~x86~~.cab
    
    microsoft-windows-languagefeatures-texttospeech-en-us-package~31bf3856ad364e35~amd64~~.cab
    since i cannot tell the users to strictly rename FOD files to match above scheme, there is only one solution for this new MS mess
    i will have to modify the script to extract FOD files and point DISM to update.mum path for each (the same thing i do for main LangPack)
    this bypass the name restriction, and it also works for previous builds

    thanks to @Enthousiast for reporting
     
  10. z110110

    z110110 MDL Junior Member

    Apr 15, 2017
    54
    11
    0
    Heh heh, I thought that the language package resources will be released after the official push.
    Thank you for your explanation.
     
  11. BAU

    BAU MDL Senior Member

    Feb 10, 2009
    350
    552
    10
    #112 BAU, Nov 14, 2018
    Last edited: Nov 14, 2018
    Can't you just grab the Package Identity via dism /Online /Get-PackageInfo /PackagePath:%file% then rename if not matching? Seems less complicated:

    for /f "tokens=2* delims=:" %%s in ('dism /Online /Get-PackageInfo /PackagePath:"%file%" ^| findstr /c:"Package Identity"') do rename "%file%" %%s.cab
     
  12. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    Nah, dism is slow, likewise powershell (if i wanted to parse update.mum XPath)
    traditional extract is less complicated :D
     
  13. malakoulis

    malakoulis MDL Novice

    Feb 3, 2012
    42
    13
    0
    I used the packages from the en_windows_10_features_on_demand_part_1_version_1809_updated_sept_2018_x64_dvd_a68fa301.iso or the en_windows_10_features_on_demand_part_2_version_1809_updated_sept_2018_x64_dvd_6b49dcfa.iso with your script and worked fine.
     
  14. BAU

    BAU MDL Senior Member

    Feb 10, 2009
    350
    552
    10
    Are you nitpicking or is that a challenge? :D

    setlocal enabledelayedexpansion
    for %%W in (*.cab) do (
    set "name=" & expand -F:update.mum "%%~fW" "%TEMP%" >nul
    for /f "tokens=2-7" %%A in ('findstr /c:"assemblyIdentity" "%TEMP%\update.mum"') do if not defined name (
    set "%%A"&set "%%B"&set "%%C"&set "%%D"&set "%%E"&set "%%F" &set "NAMED=!name!~!publicKeyToken!~!processorArchitecture!~~.cab"
    ren "%%~fW" "!NAMED:"=!"
    ))
    endlocal



    Only extracting update.mum, composing name on the fly, then renaming :D
     
  15. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    That's elegant, i really appreciate your effort :)

    but i decided to go with the extraction way
    trying to keep the code simple and consistent (since i use the exact same procedure for main LangPack files)

    attached updated scripts for testing
    merely this
    Code:
    if %_oa% neq 0 for /L %%j in (1, 1, %_oa%) do (
    "%_7z%" e ".\ondemand\x86\!OAFILE%%j!" -o"%EXTRACTDIR%" update.mum 1>nul 2>nul
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Basic" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODbasic86=!_ODbasic86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Fonts" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODfont86=!_ODfont86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Handwriting" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODhand86=!_ODhand86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-OCR" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODocr86=!_ODocr86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Speech" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODspeech86=!_ODspeech86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-TextToSpeech" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODtts86=!_ODtts86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    findstr /i /m "Microsoft-Windows-InternationalFeatures" "%EXTRACTDIR%\update.mum" 1>nul 2>nul && call set _ODintl86=!_ODintl86! /PackagePath:".\ondemand\x86\!OAFILE%%j!"
    del /f /q "%EXTRACTDIR%\*.mum" 1>nul 2>nul
    )
    become this
    Code:
    if %_oa% neq 0 for /L %%j in (1, 1, %_oa%) do (
    "%_7z%" x ".\ondemand\x86\!OAFILE%%j!" -o"%TEMPDIR%\FOD86\OAFILE%%j" * -r >nul
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Basic" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODbasic86=!_ODbasic86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Fonts" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODfont86=!_ODfont86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Handwriting" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODhand86=!_ODhand86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-OCR" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODocr86=!_ODocr86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-Speech" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODspeech86=!_ODspeech86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-LanguageFeatures-TextToSpeech" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODtts86=!_ODtts86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    findstr /i /m "Microsoft-Windows-InternationalFeatures" "%TEMPDIR%\FOD86\OAFILE%%j\update.mum" 1>nul 2>nul && call set _ODintl86=!_ODintl86! /PackagePath:"%TEMPDIR%\FOD86\OAFILE%%j\update.mum"
    )
    same for x64 files

    thanks again
     

    Attached Files:

  16. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    21,797
    29,989
    390
    #117 Enthousiast, Nov 15, 2018
    Last edited: Nov 15, 2018
    :good3:
    Used LP files (from UUPDL):
    Code:
    LP:
    884582dd0688877436f0fa34a29861de85945844 *microsoft-windows-client-languagepack-package_en-us-x86-en-us.esd
    
    OnDemand:
    8af75da7ddb5bf231d6e1e09ef0ad57a23a597c5 *microsoft-windows-languagefeatures-handwriting-en-us-package-x86.cab
    2117551bd8fcc2dd5d9f32b4bdf1388d5e3efc28 *microsoft-windows-languagefeatures-speech-en-us-package-x86.cab
    84759f953ce23b728d8b63c388a1e2fc6309a2e8 *microsoft-windows-languagefeatures-texttospeech-en-us-package-x86.cab
    6c31644cd26c20bc88033869c4f746ccf1752801 *microsoft-windows-languagefeatures-basic-en-us-package-x86.cab
    cf96ec5f1305cad92749aa3cccd8c37062f2b0a2 *microsoft-windows-languagefeatures-ocr-en-us-package-x86.cab
    
    Settings:
    Code:
    @echo off
    
    set DVDPATH=
    set ISO=1
    set WINPE=1
    set SLIM=1
    set NET35=0
    
    set WINPEPATH=
    
    set DEFAULTLANGUAGE=en-US
    set MOUNTDIR=c:\mount
    
    Code:
    ============================================================
    Prepare work directories
    ============================================================
    
    
    ============================================================
    Detect language packs details
    ============================================================
    
    en-US: 32-bit {x86} - 17763
    
    ============================================================
    Copy Distribution contents to work directory
    ============================================================
    
    Source Path:
    "Win10_17763.107_x86_NL.iso"
    
    ============================================================
    Detect install.wim details
    ============================================================
    
    Build: 17763
    Count: 4 Image(s)
    Arch : 32-bit
    
    ============================================================
    Set WinPE language packs paths
    ============================================================
    
    en-US / 32-bit
    
    ============================================================
    Extract language packs
    ============================================================
    
    en-US / 32-bit
    
    ============================================================
    Mount install.wim - index 1/4
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Mounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Add LPs to install.wim - index 1/4
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image Version: 10.0.17763.1
    
    Processing 1 of 1 - Adding package Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    The operation completed successfully.
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image Version: 10.0.17763.1
    
    Processing 1 of 5 - Adding package Microsoft-Windows-LanguageFeatures-Basic-en-us-Package~31bf3856ad364e35~x86~~10.0.17763.1
    [==========================100.0%==========================]
    Processing 2 of 5 - Adding package Microsoft-Windows-LanguageFeatures-TextToSpeech-en-us-Package~31bf3856ad364e35~x86~~10.0.17763.1
    [==========================100.0%==========================]
    Processing 3 of 5 - Adding package Microsoft-Windows-LanguageFeatures-Handwriting-en-us-Package~31bf3856ad364e35~x86~~10.0.17763.1
    [==========================100.0%==========================]
    Processing 4 of 5 - Adding package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package~31bf3856ad364e35~x86~~10.0.17763.1
    [==========================100.0%==========================]
    Processing 5 of 5 - Adding package Microsoft-Windows-LanguageFeatures-Speech-en-us-Package~31bf3856ad364e35~x86~~10.0.17763.1
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Update language settings
    ============================================================
    
    
    ============================================================
    Update winre.wim / x86
    ============================================================
    
            1 file(s) copied.
    
    ============================================================
    Mount winre.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Mounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Add LPs to winre.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image Version: 10.0.17763.1
    
    Processing 1 of 5 - Adding package Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 2 of 5 - Adding package WinPE-SRT-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 3 of 5 - Adding package WinPE-HTA-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 4 of 5 - Adding package WinPE-Rejuv-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 5 of 5 - Adding package WinPE-StorageWMI-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Update language settings
    ============================================================
    
    
    ============================================================
    Unmount winre.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image File : G:\W10MUI_17763.Test\TEMP\WR\x86\winre.wim
    Image Index : 1
    Saving image
    [==========================100.0%==========================]
    Unmounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Rebuild winre.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Exporting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Add updated winre.wim to install.wim - index 1/4
    ============================================================
    
            1 file(s) copied.
    
    ============================================================
    Unmount install.wim - index 1/4
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image File : G:\W10MUI_17763.Test\_DVD\sources\install.wim
    Image Index : 1
    Saving image
    [==========================100.0%==========================]
    Unmounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Mount boot.wim - index 1/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Mounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Add LPs to boot.wim - index 1/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image Version: 10.0.17763.1
    
    Processing 1 of 2 - Adding package Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 2 of 2 - Adding package WinPE-SRT-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Update language settings
    ============================================================
    
    
    ============================================================
    Unmount boot.wim - index 1/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image File : G:\W10MUI_17763.Test\_DVD\sources\boot.wim
    Image Index : 1
    Saving image
    [==========================100.0%==========================]
    Unmounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Mount boot.wim - index 2/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Mounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Add LPs to boot.wim - index 2/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image Version: 10.0.17763.1
    
    Processing 1 of 4 - Adding package Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 2 of 4 - Adding package WinPE-SRT-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 3 of 4 - Adding package WinPE-Setup-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    Processing 4 of 4 - Adding package WinPE-Setup-Client-Package~31bf3856ad364e35~x86~en-US~10.0.17763.1
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Update language settings
    ============================================================
    
    
    ============================================================
    Unmount boot.wim - index 2/2
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Image File : G:\W10MUI_17763.Test\_DVD\sources\boot.wim
    Image Index : 2
    Saving image
    [==========================100.0%==========================]
    Unmounting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Rebuild boot.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Exporting image
    [==========================100.0%==========================]
    Exporting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Rebuild install.wim
    ============================================================
    
    Deployment Image Servicing and Management tool
    Version: 10.0.17763.1
    
    Exporting image
    [==========================100.0%==========================]
    Exporting image
    [==========================100.0%==========================]
    Exporting image
    [==========================100.0%==========================]
    Exporting image
    [==========================100.0%==========================]
    The operation completed successfully.
    
    ============================================================
    Cleanup ISO payload
    ============================================================
    
    
    ============================================================
    Create ISO file
    ============================================================
    
    CDIMAGE 2.53m CD-ROM and DVD-ROM Premastering Utility
    Copyright (C) Microsoft, 1993-2007. All rights reserved.
    For Microsoft internal use only.
    
    
    Scanning source tree
    Scanning source tree complete (30 files in 12 directories)
    
    Computing directory information complete
    
    Image file is 3163095040 bytes (before optimization)
    
    Writing 30 files in 12 directories to mu_windows_10_17763_x86_en_nl.iso
    
    100% complete
    
    Working for all 1809 sku's:)
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  17. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    9,346
    34,758
    300
    Updated, v10 is up

    thanks to mkuba50 for the UUP links
     
  18. z110110

    z110110 MDL Junior Member

    Apr 15, 2017
    54
    11
    0
    Thank you so much. I couldn't find the 17763 Component Function Pack the other day.
     
  19. AnarethoS

    AnarethoS MDL Expert

    Jul 31, 2009
    1,150
    1,242
    60
    Thanks for the update (1809) of your script!

    I can start creation my en-us/fr-fr/fr-ca media.

    It is me or Language Pack for Windows 10 cannot be downloaded from VLSC?

    I wanted to use a previous version of your script that I had and downloaded the ISO from VLSC and it was for 1607....