Download office using the following configuration.xml file – make sure you include ALL languages you will want to use across devices in your environment – don’t worry though as we’ll use this to stage more streamlined versions as required – the idea here is that you create one source to rule them all – i.e. a single source with all language packs pre-downloaded. More info on how to download here: /microsoft-articles/34-configmgr/2118-configmgr-deploying-office-2016-click-to-run-during-osd
<Configuration>
<Add OfficeClientEdition="32" Branch="Current">
<Product ID="O365ProPlusRetail">
<Language ID="en-us" />
<Language ID="fr-fr" />
<Language ID="de-de" />
<Language ID="es-es" />
<Language ID="pt-pt" />
<Language ID="pl-pl" />
<Language ID="ro-ro" />
<Language ID="ru-ru" />
<Language ID="tr-tr" />
</Product>
</Add>
<!-- <Updates Enabled="TRUE" Branch="Current" /> -->
<!-- <Display Level="None" AcceptEULA="TRUE" /> -->
<!-- <Property Name="AUTOACTIVATE" Value="1" /> -->
</Configuration>
Now create this dynamic PowerShell script – we’ll call this during OSD or package deployment specifying a argument for the secondary language you need. This script should be named “_Install.ps1” and should be in the root of the package you create, along with the contents of the downloaded Office C2R.
Param(
[string]$language
)
# Build dynamic XML file text - needed as without specifying the SourcePath Office install hangs
$currentLocation = Split-Path -Parent $MyInvocation.MyCommand.Path;
If ($language) {
$text = @"
<Configuration>
<Add SourcePath=`"$currentLocation`" OfficeClientEdition=`"32`" Branch=`"Current`">
<Product ID=`"O365ProPlusRetail`">
<Language ID=`"en-us`" />
<Language ID=`"$language`" />
</Product>
</Add>
<Updates Enabled=`"TRUE`" Branch=`"Current`" />
<Display Level=`"None`" AcceptEULA=`"TRUE`" />
</Configuration>
"@
}
Else {
$text = @"
<Configuration>
<Add SourcePath=`"$currentLocation`" OfficeClientEdition=`"32`" Branch=`"Current`">
<Product ID=`"O365ProPlusRetail`">
<Language ID=`"en-us`" />
</Product>
</Add>
<Updates Enabled=`"TRUE`" Branch=`"Current`" />
<Display Level=`"None`" AcceptEULA=`"TRUE`" />
</Configuration>
"@
}
# Output XML file
$text | Out-File 'dynamic_configuration.xml'
# Execute setup, using dynamic XML file
start-process -wait -WindowStyle hidden setup.exe -argumentlist "/configure dynamic_configuration.xml"
You can call this from within a ConfigMgr 2012 R2 SP1 Task Sequence using the “Run PowerShell Script” step, configured as below – note I use a TS variable to pass “fr-fr” or “de-de” to the dynamic XML file creation. You could simply type the language needed and work out the logic to get the right package to the right machines a different way.
- Name: Run Script: Install Microsoft Office C2R (MUI)
- Script name: _Install.ps1
- Parameters: -language %OSDSecondaryUILanguage%
- Execution Policy: Bypass