Author: Kam Hussain

How to DISM Language Packs into Windows 10 1809 1803 1709

How to DISM Language Packs into Windows 10 1809 1803 1709

How to DISM Language Packs into Windows 10

In order to inject language packs into Windows 10, we first need to mount our Windows 10 ISO and then inject our .cab language pack file. The Language packs are available from Microsoft’s Volume licensing portal or alternatively you can download it using the following website, you must convert the language file from this website, all of which is stated step by step:

Mount your Windows 10 Image

  • Create a WIM file directory
Md C:\wim
  • Copy your original WIM to c:\wim
  • Create a Mount directory
md C:\mount
  • Create a temp directory
md C:\temp
  •     Create a directory to temporary store your cab files
md C:\languages
  • Find what index the Windows 10 Enterprise SKU is within the WIM File:
Dism /Get-ImageInfo /imagefile:C:\wim\install.wim
  • Mount the WIM file using the required Index number, I am using Index 3 Windows 10 Enterprise:
Dism /Mount-Image /ImageFile:"C:\wim\install.wim" /Index:3 /MountDir:C:\mount

To find out what the current language is set to on your Windows 10 image type the following command:

Dism /image:C:\Mount /Get-Intl

Inject your Language Pack:

There are multiple language files for Windows so you may repeat this step for each language file.

dism /image:C:\Mount /add-package /packagepath:"C:\languages\YOUR LANGUAGE"

Now we need to set the language to en-GB as default. To do this we will run the below commands.

Dism /image:C:\Mount /Set-UILang:en-GB
Dism /image:C:\Mount /Set-SysLocale:en-GB
Dism /image:C:\Mount /Set-UserLocale:en-GB
Dism /image:C:\Mount /Set-InputLocale:en-GB
Dism /image:C:\Mount /Set-AllIntl:en-GB

And Finally I always like setting the time to your locale, mine is GMT Standard Time for the UK.

Dism /image:C:\Mount /Set-TimeZone:"GMT Standard Time"

Lastly we need to update the lang.ini file which tells Windows what languages are available when doing installations such as upgrades. Run the below command to generate a new lang.ini file.

Dism /image:c:\Mount /gen-langini /distribution:"Root Path of Source Media"

That’s all for now folks, let me know how you get on in the comments below.


Windows 10 1809 In-Place Upgrade SCCM

Windows 10 1809 In-Place Upgrade SCCM

Windows 10 1809 In-Place Upgrade using SCCM

I recently configured a Windows 10 1809 upgrade at a time when Microsoft had placed a block on the upgrade release due to driver issues among other issues. Whilst on my endeavour to get an upgrade working from 1803 to 1809 I came across issues which could possible save you time.

The upgrade process is fairly simple.

  1. Extract your Windows 10 ISO
  2. IMPORTANT, you must have at least the November 2018 CU for Windows 10 1809 KB4467708. Without this CU your in-place upgrade will fail. DISM the latest cumulative updates into the image, see my post on how to do this, click HERE.
  3. DISM any other settings you require such as language packs or removal of APPX packages. Note that if you already removed appx packages they will not re-install when you upgrade, however there are two new appx packages in 1809 that will install.
  4. Places the extracted files into a folder which SCCM can access.
  5. Add your 1809 OS to SCCM. Click Software Updates > Operating Systems > Operating System Upgrade Package
  6. Distribute the OS Upgrade package.
  7. Create a new Upgrade task sequence and keep the options as default.


Issues encountered

0x80004005 – this is an generic error code and does not tell us much. You have to check the following log files:

  1. SMSTS log file located in C:\Windows\CCM\Logs\SMSTS.log
  2. C:\$Windows.~BT\Sources\Panther\CompatData_…xml
  3. C:\$Windows.~BT\Sources\Panther\setupact.log

When investigating the log files I found the below error. It states that their is a mismatch in the language packs. In essence the Windows 10 ISO comes with English US language. However on my device I had only English UK. The device and OS media must match with the language. I therefore had to dism my language pack into the Windows 10 media. Ensure you generate a lang.ini file when you dism the language packs. I will write a post on how to correctly dism language packs.

<HardwareItem HardwareType=”Setup_MismatchedLanguage”><CompatibilityInfo BlockingType=”Hard”/><Action Name=”Setup_MismatchedLanguage” ResolveState=”Hard”/></HardwareItem>

That’s all for now folks. Let me know how you get on in the comments below.


Adding VMs to an Availability Set after they are created

Adding VMs to an Availability Set after they are created

Availability Set Tips and Tricks

An Availability set in Azure is a way of logically grouping virtual machines in order to protect them from a Unplanned Hardware Maintenance Event, An Unexpected Downtime, Planned Maintenance events When virtual machines are part of an availability set they are separated across multiple update and fault domains.

Fault domains define the group of virtual machines that share a common power source and network switch.

Update domains indicate groups of virtual machines and underlying physical hardware that can be rebooted at the same time. Microsoft will reboot one update domain at a time with a wait time of 30 minutes before the next update domain is restarted.

However in order to add a machine to an an availability set it must be added at the time of creation. Now this is easily overseen and you could end up in a position where you have installed your required applications and configurations and not added your new VM to an availability set. So does this mean you have to start from scratch?

Well…No is the answer, remember the configurations you made are applied to the OS/DATA disks and not he VM itself. What we can do in this scenario is redeploy the VM using the same OS/DATA disks and add it to the required Availability Set.

In order to do this we will need to install the Availability Set PowerShell Module from GitHub. Run the below command to complete this:

Install-Module AzureRm.AvailabilitySetManagement

Once you have installed the module we will now run the below command changing the parameters to your required environment:

Add-AzureRmAvSetVmToAvailabilitySet -ResourceGroupName "MyResourceGroup" -VMName "KAM-VM1" -OsType windows -AvailabilitySet "myAvailabilitySet"

This will now delete your VM (your VM OS/data disks will remain intact). Your VM will be re-created with the original OS/DATA disks attached. This is accomplished by creating an ARM template with the current configurations and redeploying your VM via a new ARM template, this time with the availability set.

Important to note:

  1. Any VM extensions will not be re-created and will therefore need to be added on manually.
  2. Accelerated Networking must be in a disabled state

That’s all for now folks, let me know how you get on in the comments below!

Learn more about Availability Sets here