From ffac4218c81eca1f6b22f2e4cf63e0ae776d308b Mon Sep 17 00:00:00 2001 From: jaimeo Date: Fri, 17 Jan 2020 13:47:34 -0800 Subject: [PATCH 1/9] completion of initial incorp --- .../deployment/update/media-dynamic-update.md | 453 ++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 windows/deployment/update/media-dynamic-update.md diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md new file mode 100644 index 0000000000..bbfce9826f --- /dev/null +++ b/windows/deployment/update/media-dynamic-update.md @@ -0,0 +1,453 @@ +--- +title: Update Windows 10 media with Dynamic Update +description: Learn how to deploy feature updates to your mission critical devices +ms.prod: w10 +ms.mktglfcycl: manage +audience: itpro +itproauthor: jaimeo +author: jaimeo +ms.localizationpriority: medium +ms.author: jaimeo +ms.reviewer: +manager: laurawi +ms.collection: M365-modern-desktop +ms.topic: article +--- + +# Update Windows 10 media with Dynamic Update + +**Applies to**: Windows 10 + +This topic explains how to acquire and apply Dyanmic Update packages to existing Windows 10 images and includes Windows Powershell scripts you can use to automate this. + +Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that their Windows 10 devices have the latest feature update content as part of an in-place upgrade while preserving language pack and features on demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. + +## Dynamic Update + +Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *dynamic update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch dynamic update contant, and then applies those updates to your operating system installation media. The update content includes the following: + +- Updates to Setup.exe binaries or other files that Setup uses for feature updates +- Updates for the "safe operating system" that is used for the Windows recovery environment +- Updates to the servicing stack +- The latest cumulative (quality) update +- Updates to applicable drivers already published by manufacturers + +Dynamic Update preserves language pack and features on demand content by reacquiring them. + +Devices must be able to connect to the internet to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update content and applying it to the image prior to starting Setup on the device. + +## Acquire Dynamic Update content + +You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update options for a particular release. For example, you could enter *1809 Dynamic Update*, which would return results like this: + + + +The various Dynamic Update components should all be present in the search results, but you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant Dynamic Update for Setup, you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. + + +|To find this Dynamic Update content, check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | +|---------|---------|---------|---------| +|Safe operating system Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: | +|Setup Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update | **SetupUpdate** | +|Latest cumulative update | 2019-08 **Cumulative Update for Windows 10** | Windows 10 | Install this update to resolve issues in Windows... | +|Servicing stack update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to resolve issues in Windows... | + +If you want to customize the image with additional languages {"additional" meaning vs. languages in the existing image?} or features, you'll need download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and should users require specific FODs, these can be preinstalled into the image. {???}{also, doesn't this duplicate the "customizing...additional language" section below?} + +## Update Windows 10 installation media + +Properly updating the installation media involves a large number of actions operating on several different targets (image files). Some actions are repeated on different targets. The target images files include: + +- Windows Preinstallation Environment (WinPE): a small operating system used to install, deploy, and repair Windows operating systems +- Windows Recovery Environment: repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools. +- Windows operating system: one or more editions of Widnows 10 stored in \sources\install.wim +- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, setup.exe, etc. + +This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (27). + +|Task |WinRE (winre.wim) |WinPE (boot.wim) |Operating system (install.wim) | New media | +|---------|---------|---------|---------|------| +|Add servicing stack Dynamic Update | 1 | 9 | 18 | +|Add language pack | 2 | 10 | 19 | +|Add localized optional packages | 3 | 11 | | +|Add font support | 4 | 12 | | +|Add TTS support {what's this?} | 5 | 13 | | +|Update Lang.ini | | 14 | | +|Add features on demand | | | 20 | +|Add "safe operating system" Dynamic Update | 6 | | {21??} | +|Add Setup Dynamic Update | | | | 27 +|Add latest cumulative update | | 15 | 22 | +|Clean image {a verb?} | 7 | 16 | 23 | +|Add optional components | | | 24 | +|Add .Net and cumulative updates | | | 25 | +|Export image | 8 | 17 | 26 | + +### Multiple Windows editions + +The main operating system file (install.wim) contains multiple editions of Windows 10. It’s possible that only an update for a given edition is required to deploy it, based on the index. Or, it might be that all editions need an update. Further, ensure that languages are installed before FODs, and the latest cumulative update is always applied last. + +### Additional languages and features + +You don't have to add more languages and features to the image to accomplish the udpates, but it is an opportunity to customize the image with more languages, optional components, and features beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by featre additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. + +Optional components, along with the .Net feature can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and optional components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month). + +## Windows PowerShell scripts to apply Dynamic Updates to an existing image + +These examples are for illustration only, and therefore lacks error handling. The script assumes that the following content is stored locally in this folder structure: + + +|Folder |Description | +|---------|---------| +|C:\mediaRefresh | Parent folder that contains the PowerShell script | +|C:\mediaRefresh\oldMedia | Folder that contains the original media that will be refreshed. For example, contains setup.exe, and \sources folder. | +|C:\mediaRefresh\newMedia | Folder that will contain the updated media. It is copied from \oldMedia, then used as the target for all update and cleanup operations. | + +### Get started + +The script starts by declaring global variables and creating folders to use for mounting images. Then, make a copy of the original media, from \oldMedia to \newMedia, keeping the original media in case there is a script error and it's necessary to start over from a known state. Also, it will provide a comparison of old versus new media to evaluate changes. To ensure that the new media updates, make sure they are not read-only. + +```powershell +function Get-TS { return "{0:HH:mm:ss}" -f (Get-Date) } + +Write-Host "$(Get-TS): Starting media refresh" + +# Declare media for FOD and LPs +$FOD_ISO_PATH = "C:\mediaRefresh\packages\FOD-PACKAGES_OEM_PT1_amd64fre_MULTI.iso" +$LP_ISO_PATH = "C:\mediaRefresh\packages\CLIENTLANGPACKDVD_OEM_MULTI.iso" + +# Declare language for showcasing adding optional localized components +$LANG = "ja-jp" +$LANG_FONT_CAPABILITY = "jpan" + +# Declare Dynamic Update packages +$LCU_PATH = “C:\mediaRefresh\packages\LCU.msu” +$SSU_PATH = “C:\mediaRefresh\packages\SSU_DU.msu” +$SETUP_DU_PATH = "C:\mediaRefresh\packages\Setup_DU.cab" +$SAFE_OS_DU_PATH = “C:\mediaRefresh\packages\SafeOS_DU.cab” +$DOTNET_CU_PATH = "C:\mediaRefresh\packages\DotNet_CU.msu” + +# Declare folders for mounted images and temp files +$WORKING_PATH = "C:\mediaRefresh\temp" +$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia" +$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia" +$MAIN_OS_MOUNT = $WORKING_PATH + "\MainOSMount” +$WINRE_MOUNT = $WORKING_PATH + "\WinREMount” +$WINPE_MOUNT = $WORKING_PATH + "\WinPEMount” + +# Mount the LP ISO +Write-Host "$(Get-TS): Mounting LP ISO" +$LP_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter + +# Declare language related cabs +$WINPE_OC_PATH = Join-Path $LP_ISO_DRIVE_LETTER":" -ChildPath "Windows Preinstallation Environment" | Join-Path -ChildPath "x64" | Join-Path -ChildPath "WinPE_OCs" +$WINPE_OC_LANG_PATH = Join-Path $WINPE_OC_PATH $LANG +$WINPE_OC_LANG_CABS = Get-ChildItem $WINPE_OC_LANG_PATH -name +$WINPE_OC_LP_PATH = Join-Path $WINPE_OC_LANG_PATH "lp.cab" +$WINPE_FONT_SUPPORT_PATH = Join-Path $WINPE_OC_PATH "WinPE-FontSupport-$LANG.cab" +$WINPE_SPEECH_TTS_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS.cab" +$WINPE_SPEECH_TTS_LANG_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS-$LANG.cab" +$OS_LP_PATH = $LP_ISO_DRIVE_LETTER + ":\x64\langpacks\" + "Microsoft-Windows-Client-Language-Pack_x64_" + $LANG + ".cab" + +# Mount the FOD ISO +Write-Host "$(Get-TS): Mounting FOD ISO" +$FOD_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter +$FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\" + +# Create folders for mounting images and storing temporary files +New-Item -ItemType directory -Path $WORKING_PATH -ErrorAction Stop | Out-Null +New-Item -ItemType directory -Path $MAIN_OS_MOUNT -ErrorAction stop | Out-Null +New-Item -ItemType directory -Path $WINRE_MOUNT -ErrorAction stop | Out-Null +New-Item -ItemType directory -Path $WINPE_MOUNT -ErrorAction stop | Out-Null + +# Keep the original media, make a copy of it for the new, updateed media. +Write-Host "$(Get-TS): Copying original media to new media path" +Copy-Item -Path $MEDIA_OLD_PATH“\*” -Destination $MEDIA_NEW_PATH -Force -Recurse -ErrorAction stop | Out-Null +Get-ChildItem -Path $MEDIA_NEW_PATH -Recurse | Where-Object { -not $_.PSIsContainer -and $_.IsReadOnly } | ForEach-Object { $_.IsReadOnly = $false } +``` +### Update WinRE + +The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its components are used for updating other components. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the safe operating system Dynamic Update package. + +It finishes by cleaning and exporting the image to reduce the image size. + +> [!NOTE] +> Skip adding the latest cumulative update to Winre.wim because it contains unnecessary components in the recovery environment. The components that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small. + +```powershell +# Mount the main OS, I'll use this throughout the script +Write-Host "$(Get-TS): Mounting main OS" +Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim” -Index 1 -Path $MAIN_OS_MOUNT -ErrorAction stop| Out-Null + +# +# update Windows Recovery Environment (WinRE) +# +Copy-Item -Path $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim” -Destination $WORKING_PATH"\winre.wim” -Force -Recurse -ErrorAction stop | Out-Null +Write-Host "$(Get-TS): Mounting WinRE" +Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim” -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-Null + +# Add SSU +Write-Host "$(Get-TS): Adding package $SSU_PATH" +Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null + +# +# Optional: Add the language to recovery environment +# +# Install lp.cab cab +Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH" +Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null + +# Install language cabs for each optional package installed +$WINRE_INSTALLED_OC = Get-WindowsPackage -Path $WINRE_MOUNT +Foreach ($PACKAGE in $WINRE_INSTALLED_OC) { + + if ( ($PACKAGE.PackageState -eq "Installed") ` + -and ($PACKAGE.PackageName.startsWith("WinPE-")) ` + -and ($PACKAGE.ReleaseType -eq "FeaturePack") ) { + + $INDEX = $PACKAGE.PackageName.IndexOf("-Package") + if ($INDEX -ge 0) { + $OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab" + if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) { + $OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB + Write-Host "$(Get-TS): Adding package $OC_CAB_PATH" + Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null + } + } + } +} + +# Add font support for the new language +if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) { + Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" + Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null +} + +# Add TTS support for the new language +if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) { + if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) { + + Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" + Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null + + Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" + Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null + } +} + +# Add Safe OS +Write-Host "$(Get-TS): Adding package $SAFE_OS_DU_PATH" +Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SAFE_OS_DU_PATH -ErrorAction stop | Out-Null + +# Perform image cleanup +Write-Host "$(Get-TS): Performing image cleanup on WinRE" +DISM /image:$WINRE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null + +# Dismount +Dismount-WindowsImage -Path $WINRE_MOUNT -Save -ErrorAction stop | Out-Null + +# Export +Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\winre2.wim” +Export-WindowsImage -SourceImagePath $WORKING_PATH"\winre.wim” -SourceIndex 1 -DestinationImagePath $WORKING_PATH"\winre2.wim” -ErrorAction stop | Out-Null +Move-Item -Path $WORKING_PATH"\winre2.wim” -Destination $WORKING_PATH"\winre.wim” -Force -ErrorAction stop | Out-Null +``` +### Update WinPE + +This script is similar to the one that updates WinRE, but instead it mounts Boot.wim, applies the packages with the latest cumulative update last, and saves. It repeats this for all images inside of Boot.wim, typically two images. It starts by applying the servicing stack Dynamic Update. Since the script is customizing this media with Japanese, it installs the language pack from the WinPE folder on the language pack ISO. Additionally, add font support and text to speak (TTS) support. Since the script is adding a new language, it rebuilds lang.ini, used to identify languages installed in the image. Finally, it cleans and exports Boot.wim, and copies it back to the new media. + +```powershell +# +# update Windows Preinstallation Environment (WinPE) +# + +# Get the list of images contained within WinPE +$WINPE_IMAGES = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH“\sources\boot.wim” + +Foreach ($IMAGE in $WINPE_IMAGES) { + + # update WinPE + Write-Host "$(Get-TS): Mounting WinPE" + Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH“\sources\boot.wim” -Index $IMAGE.ImageIndex -Path $WINPE_MOUNT -ErrorAction stop | Out-Null + + # Add SSU + Write-Host "$(Get-TS): Adding package $SSU_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null + + # Install lp.cab cab + Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null + + # Install language cabs for each optional package installed + $WINPE_INSTALLED_OC = Get-WindowsPackage -Path $WINPE_MOUNT + Foreach ($PACKAGE in $WINPE_INSTALLED_OC) { + + if ( ($PACKAGE.PackageState -eq "Installed") ` + -and ($PACKAGE.PackageName.startsWith("WinPE-")) ` + -and ($PACKAGE.ReleaseType -eq "FeaturePack") ) { + + $INDEX = $PACKAGE.PackageName.IndexOf("-Package") + if ($INDEX -ge 0) { + + $OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab" + if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) { + $OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB + Write-Host "$(Get-TS): Adding package $OC_CAB_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null + } + } + } + } + + # Add font support for the new language + if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) { + Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null + } + + # Add TTS support for the new language + if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) { + if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) { + + Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null + + Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null + } + } + + # Generates a new Lang.ini file which is used to define the language packs inside the image + if ( (Test-Path -Path $WINPE_MOUNT"\sources\lang.ini") ) { + Write-Host "$(Get-TS): Updating lang.ini" + DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null + } + + # Add LCU + Write-Host "$(Get-TS): Adding package $LCU_PATH" + Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null + + # Perform image cleanup + Write-Host "$(Get-TS): Performing image cleanup on WinPE" + DISM /image:$WINPE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null + + # Dismount + Dismount-WindowsImage -Path $WINPE_MOUNT -Save -ErrorAction stop | Out-Null + + #Export WinPE + Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\boot2.wim” + Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH“\sources\boot.wim” -SourceIndex $IMAGE.ImageIndex -DestinationImagePath $WORKING_PATH"\boot2.wim" -ErrorAction stop | Out-Null + +} + +Move-Item -Path $WORKING_PATH"\boot2.wim" -Destination $MEDIA_NEW_PATH“\sources\boot.wim” -Force -ErrorAction stop | Out-Null +``` +### Update the main operating system + +For this next phase, there is no need to mount the main operating system, since it was already mounted in the previous scripts. This script starts by applying the servicing stack Dynamic Update. Then, it adds Japanese language support and then the Japanese language features. Unlike the Dynamic Update packages, it leverages `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](https://docs.microsoft.com/windows-hardware/manufacture/desktop/features-on-demand-non-language-fod). + +Now is the time to enable other optional components or add other features on demand. If such a feature has an associated cumulative update (for example, .Net), this is the time to apply those. The script then proceeds with applying the latest cumulative update. Finally, the script cleans and exports the image. + +You can install optional components, along with the .Net feature, offline, but that will require the device to be restarted This is why the script installs .Net and optional components after cleanup and before export. + +```powershell +# +# update Main OS +# + +# Add SSU +Write-Host "$(Get-TS): Adding package $SSU_PATH" +Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null + +# Optional: Add language to main OS +Write-Host "$(Get-TS): Adding package $OS_LP_PATH" +Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $OS_LP_PATH -ErrorAction stop | Out-Null + +# Optional: Add a FODs to the image +Write-Host "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0" +Add-WindowsCapability -Name "Language.Fonts.$LANG_FONT_CAPABILITY~~~und-$LANG_FONT_CAPABILITY~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Adding language FOD: Language.Basic~~~$LANG~0.0.1.0" +Add-WindowsCapability -Name "Language.Basic~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Adding language FOD: Language.OCR~~~$LANG~0.0.1.0" +Add-WindowsCapability -Name "Language.OCR~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Adding language FOD: Language.Handwriting~~~$LANG~0.0.1.0" +Add-WindowsCapability -Name "Language.Handwriting~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Adding language FOD: Language.TextToSpeech~~~$LANG~0.0.1.0" +Add-WindowsCapability -Name "Language.TextToSpeech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Adding language FOD:Language.Speech~~~$LANG~0.0.1.0" +Add-WindowsCapability -Name "Language.Speech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +# Note: If I wanted to enable additional features on demand (FOD), I'd add these here. + +# Add LCU +Write-Host "$(Get-TS): Adding package $LCU_PATH" +Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null + +# Copy our updated recovery image from earlier into the main OS +# Note: If I were updating more than 1 edition, I'd want to copy the same recovery image file +# into each edition to enable single instancing +Copy-Item -Path $WORKING_PATH"\winre.wim” -Destination $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim” -Force -Recurse -ErrorAction stop | Out-Null + +# Perform image cleanup +Write-Host "$(Get-TS): Performing image cleanup on main OS" +DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | Out-Null + +# +# Note: If I wanted to enable additional Optional Components, I'd add these here. +# In addition, we'll add .Net 3.5 here as well. Both .Net and Optional Components may require +# the image to be booted, and thus if we tried to cleanup after installation, it would fail. +# + +Write-Host "$(Get-TS): Adding NetFX3~~~~" +Add-WindowsCapability -Name "NetFX3~~~~" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null + +# Add .Net Cumulative Update +Write-Host "$(Get-TS): Adding package $DOTNET_CU_PATH" +Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $DOTNET_CU_PATH -ErrorAction stop | Out-Null + +# Dismount +Dismount-WindowsImage -Path $MAIN_OS_MOUNT -Save -ErrorAction stop | Out-Null + +# Export +Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\install2.wim” +Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH“\sources\install.wim” -SourceIndex 1 -DestinationImagePath $WORKING_PATH"\install2.wim” -ErrorAction stop | Out-Null +Move-Item -Path $WORKING_PATH"\install2.wim” -Destination $MEDIA_NEW_PATH“\sources\install.wim” -Force -ErrorAction stop | Out-Null +``` + +### Update remaining media files + +This part of the script updates the setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests. + +```powershell +# +# update remaining files on media +# + +# Add Setup DU by copy the files from the package into the newMedia +Write-Host "$(Get-TS): Adding package $SETUP_DU_PATH" +cmd.exe /c $env:SystemRoot\System32\expand.exe $SETUP_DU_PATH -F:* $MEDIA_NEW_PATH"\sources" | Out-Null +``` +### Finish up + +As a last step, the script removes the working folder of temporary files, and unmounts our language pack and features on demand ISOs. + +```powershell +# +# Perform final cleanup +# + +# Remove our working folder +Remove-Item -Path $WORKING_PATH -Recurse -Force -ErrorAction stop | Out-Null + +# Dismount ISO images +Write-Host "$(Get-TS): Dismounting ISO images" +Dismount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Out-Null +Dismount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Out-Null + +Write-Host "$(Get-TS): Media refresh completed!" +``` + From 68bb716f1d7f0fe133a2050248ad2bf183726914 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Wed, 5 Feb 2020 10:31:11 -0800 Subject: [PATCH 2/9] incorp feedback --- .../deployment/update/media-dynamic-update.md | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index bbfce9826f..dad34d0b70 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -18,52 +18,52 @@ ms.topic: article **Applies to**: Windows 10 -This topic explains how to acquire and apply Dyanmic Update packages to existing Windows 10 images and includes Windows Powershell scripts you can use to automate this. +This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images prior to deployment and includes Windows PowerShell scripts you can use to automate this. -Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that their Windows 10 devices have the latest feature update content as part of an in-place upgrade while preserving language pack and features on demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. +Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update content as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. ## Dynamic Update -Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *dynamic update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch dynamic update contant, and then applies those updates to your operating system installation media. The update content includes the following: +Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *Dynamic Update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch Dynamic Update contant, and then applies those updates to your operating system installation media. The update content includes the following: - Updates to Setup.exe binaries or other files that Setup uses for feature updates -- Updates for the "safe operating system" that is used for the Windows recovery environment -- Updates to the servicing stack +- Updates for the "safe operating system" (SafeOS) that is used for the Windows recovery environment +- Updates to the servicing stack necessary to complete the feature update - The latest cumulative (quality) update -- Updates to applicable drivers already published by manufacturers +- Updates to applicable drivers already published by manufacturers specifically intended for Dynamic Update -Dynamic Update preserves language pack and features on demand content by reacquiring them. +Dynamic Update preserves language pack and Features on Demand content by reacquiring them. -Devices must be able to connect to the internet to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update content and applying it to the image prior to starting Setup on the device. +Devices must be able to connect to the internet to obtain Dynamic Updates. In some environments, it's not an option to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update content and applying it to the image prior to starting Setup on the device. ## Acquire Dynamic Update content -You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update options for a particular release. For example, you could enter *1809 Dynamic Update*, which would return results like this: +You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update content for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this: + - -The various Dynamic Update components should all be present in the search results, but you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant Dynamic Update for Setup, you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. +The various Dynamic Update components might not all be present in the search results, so you might have to search with different keywords to find all of the componente. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. |To find this Dynamic Update content, check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | |---------|---------|---------|---------| -|Safe operating system Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: | +|Safe OS Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: | |Setup Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update | **SetupUpdate** | |Latest cumulative update | 2019-08 **Cumulative Update for Windows 10** | Windows 10 | Install this update to resolve issues in Windows... | -|Servicing stack update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to resolve issues in Windows... | +|Servicing stack Dynamic Update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to resolve issues in Windows... | -If you want to customize the image with additional languages {"additional" meaning vs. languages in the existing image?} or features, you'll need download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and should users require specific FODs, these can be preinstalled into the image. {???}{also, doesn't this duplicate the "customizing...additional language" section below?} +If you want to customize the image with additional languages Features on Demand, you'll need download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and if users require specific Features on Demand, you can preinstall these into the image. ## Update Windows 10 installation media Properly updating the installation media involves a large number of actions operating on several different targets (image files). Some actions are repeated on different targets. The target images files include: - Windows Preinstallation Environment (WinPE): a small operating system used to install, deploy, and repair Windows operating systems -- Windows Recovery Environment: repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools. -- Windows operating system: one or more editions of Widnows 10 stored in \sources\install.wim +- Windows Recovery Environment (WinRE): repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools. +- Windows operating system: one or more editions of Windows 10 stored in \sources\install.wim - Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, setup.exe, etc. -This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (27). +This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (26). |Task |WinRE (winre.wim) |WinPE (boot.wim) |Operating system (install.wim) | New media | |---------|---------|---------|---------|------| @@ -71,16 +71,16 @@ This table shows the correct sequence for applying the various tasks to the file |Add language pack | 2 | 10 | 19 | |Add localized optional packages | 3 | 11 | | |Add font support | 4 | 12 | | -|Add TTS support {what's this?} | 5 | 13 | | +|Add text-to-speech | 5 | 13 | | |Update Lang.ini | | 14 | | -|Add features on demand | | | 20 | -|Add "safe operating system" Dynamic Update | 6 | | {21??} | -|Add Setup Dynamic Update | | | | 27 -|Add latest cumulative update | | 15 | 22 | -|Clean image {a verb?} | 7 | 16 | 23 | -|Add optional components | | | 24 | -|Add .Net and cumulative updates | | | 25 | -|Export image | 8 | 17 | 26 | +|Add Features on Demand | | | 20 | +|Add Safe OS Dynamic Update | 6 | | | +|Add Setup Dynamic Update | | | | 26 +|Add latest cumulative update | | 15 | 21 | +|Clean up the image | 7 | 16 | 22 | +|Add Optional Components | | | 23 | +|Add .Net and .Net cumulative updates | | | 24 | +|Export image | 8 | 17 | 25 | ### Multiple Windows editions @@ -88,9 +88,9 @@ The main operating system file (install.wim) contains multiple editions of Windo ### Additional languages and features -You don't have to add more languages and features to the image to accomplish the udpates, but it is an opportunity to customize the image with more languages, optional components, and features beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by featre additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. +You don't have to add more languages and features to the image to accomplish the udpates, but it is an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by featre additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. -Optional components, along with the .Net feature can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and optional components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month). +Optional Components, along with the .Net feature, can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and Optional Components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month). ## Windows PowerShell scripts to apply Dynamic Updates to an existing image @@ -107,7 +107,7 @@ These examples are for illustration only, and therefore lacks error handling. Th The script starts by declaring global variables and creating folders to use for mounting images. Then, make a copy of the original media, from \oldMedia to \newMedia, keeping the original media in case there is a script error and it's necessary to start over from a known state. Also, it will provide a comparison of old versus new media to evaluate changes. To ensure that the new media updates, make sure they are not read-only. -```powershell +``` function Get-TS { return "{0:HH:mm:ss}" -f (Get-Date) } Write-Host "$(Get-TS): Starting media refresh" @@ -135,7 +135,7 @@ $MAIN_OS_MOUNT = $WORKING_PATH + "\MainOSMount” $WINRE_MOUNT = $WORKING_PATH + "\WinREMount” $WINPE_MOUNT = $WORKING_PATH + "\WinPEMount” -# Mount the LP ISO +# Mount the language pack ISO Write-Host "$(Get-TS): Mounting LP ISO" $LP_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter @@ -149,7 +149,7 @@ $WINPE_SPEECH_TTS_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS.cab" $WINPE_SPEECH_TTS_LANG_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS-$LANG.cab" $OS_LP_PATH = $LP_ISO_DRIVE_LETTER + ":\x64\langpacks\" + "Microsoft-Windows-Client-Language-Pack_x64_" + $LANG + ".cab" -# Mount the FOD ISO +# Mount the Features on Demand ISO Write-Host "$(Get-TS): Mounting FOD ISO" $FOD_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter $FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\" @@ -167,15 +167,15 @@ Get-ChildItem -Path $MEDIA_NEW_PATH -Recurse | Where-Object { -not $_.PSIsContai ``` ### Update WinRE -The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its components are used for updating other components. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the safe operating system Dynamic Update package. +The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its components are used for updating other components. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the Safe OS Dynamic Update package. It finishes by cleaning and exporting the image to reduce the image size. > [!NOTE] > Skip adding the latest cumulative update to Winre.wim because it contains unnecessary components in the recovery environment. The components that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small. -```powershell -# Mount the main OS, I'll use this throughout the script +``` +# Mount the main operating system, used throughout the script Write-Host "$(Get-TS): Mounting main OS" Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim” -Index 1 -Path $MAIN_OS_MOUNT -ErrorAction stop| Out-Null @@ -186,7 +186,7 @@ Copy-Item -Path $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim” -Destinat Write-Host "$(Get-TS): Mounting WinRE" Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim” -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-Null -# Add SSU +# Add servicing stack update Write-Host "$(Get-TS): Adding package $SSU_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null @@ -253,9 +253,9 @@ Move-Item -Path $WORKING_PATH"\winre2.wim” -Destination $WORKING_PATH"\winre.w ``` ### Update WinPE -This script is similar to the one that updates WinRE, but instead it mounts Boot.wim, applies the packages with the latest cumulative update last, and saves. It repeats this for all images inside of Boot.wim, typically two images. It starts by applying the servicing stack Dynamic Update. Since the script is customizing this media with Japanese, it installs the language pack from the WinPE folder on the language pack ISO. Additionally, add font support and text to speak (TTS) support. Since the script is adding a new language, it rebuilds lang.ini, used to identify languages installed in the image. Finally, it cleans and exports Boot.wim, and copies it back to the new media. +This script is similar to the one that updates WinRE, but instead it mounts Boot.wim, applies the packages with the latest cumulative update last, and saves. It repeats this for all images inside of Boot.wim, typically two images. It starts by applying the servicing stack Dynamic Update. Since the script is customizing this media with Japanese, it installs the language pack from the WinPE folder on the language pack ISO. Additionally, add font support and text to speech (TTS) support. Since the script is adding a new language, it rebuilds lang.ini, used to identify languages installed in the image. Finally, it cleans and exports Boot.wim, and copies it back to the new media. -```powershell +``` # # update Windows Preinstallation Environment (WinPE) # @@ -322,7 +322,7 @@ Foreach ($IMAGE in $WINPE_IMAGES) { DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null } - # Add LCU + # Add latest cumulative update Write-Host "$(Get-TS): Adding package $LCU_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null @@ -345,16 +345,16 @@ Move-Item -Path $WORKING_PATH"\boot2.wim" -Destination $MEDIA_NEW_PATH“\source For this next phase, there is no need to mount the main operating system, since it was already mounted in the previous scripts. This script starts by applying the servicing stack Dynamic Update. Then, it adds Japanese language support and then the Japanese language features. Unlike the Dynamic Update packages, it leverages `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](https://docs.microsoft.com/windows-hardware/manufacture/desktop/features-on-demand-non-language-fod). -Now is the time to enable other optional components or add other features on demand. If such a feature has an associated cumulative update (for example, .Net), this is the time to apply those. The script then proceeds with applying the latest cumulative update. Finally, the script cleans and exports the image. +Now is the time to enable other Optional Components or add other Features on Demand. If such a feature has an associated cumulative update (for example, .Net), this is the time to apply those. The script then proceeds with applying the latest cumulative update. Finally, the script cleans and exports the image. -You can install optional components, along with the .Net feature, offline, but that will require the device to be restarted This is why the script installs .Net and optional components after cleanup and before export. +You can install Optional Components, along with the .Net feature, offline, but that will require the device to be restarted This is why the script installs .Net and Optional Components after cleanup and before export. -```powershell +``` # # update Main OS # -# Add SSU +# Add servicing stack update Write-Host "$(Get-TS): Adding package $SSU_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null @@ -362,7 +362,7 @@ Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH -ErrorAction stop Write-Host "$(Get-TS): Adding package $OS_LP_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $OS_LP_PATH -ErrorAction stop | Out-Null -# Optional: Add a FODs to the image +# Optional: Add a Features on Demand to the image Write-Host "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0" Add-WindowsCapability -Name "Language.Fonts.$LANG_FONT_CAPABILITY~~~und-$LANG_FONT_CAPABILITY~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null @@ -381,9 +381,9 @@ Add-WindowsCapability -Name "Language.TextToSpeech~~~$LANG~0.0.1.0" -Path $MAIN_ Write-Host "$(Get-TS): Adding language FOD:Language.Speech~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.Speech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -# Note: If I wanted to enable additional features on demand (FOD), I'd add these here. +# Note: If I wanted to enable additional Features on Demand, I'd add these here. -# Add LCU +# Add latest cumulative update Write-Host "$(Get-TS): Adding package $LCU_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null @@ -422,7 +422,7 @@ Move-Item -Path $WORKING_PATH"\install2.wim” -Destination $MEDIA_NEW_PATH“\s This part of the script updates the setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests. -```powershell +``` # # update remaining files on media # @@ -433,7 +433,7 @@ cmd.exe /c $env:SystemRoot\System32\expand.exe $SETUP_DU_PATH -F:* $MEDIA_NEW_PA ``` ### Finish up -As a last step, the script removes the working folder of temporary files, and unmounts our language pack and features on demand ISOs. +As a last step, the script removes the working folder of temporary files, and unmounts our language pack and Features on Demand ISOs. ```powershell # From 1fe7e8f86438855a765ffd24c2720a714fc3ff01 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Wed, 5 Feb 2020 10:34:37 -0800 Subject: [PATCH 3/9] connecting to TOC --- windows/deployment/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/windows/deployment/TOC.md b/windows/deployment/TOC.md index ef3757e12b..84bd681996 100644 --- a/windows/deployment/TOC.md +++ b/windows/deployment/TOC.md @@ -253,6 +253,7 @@ ##### [Update Compliance Perspectives](update/update-compliance-perspectives.md) ### Best practices #### [Best practices for feature updates on mission-critical devices](update/feature-update-mission-critical.md) +#### [Update Windows 10 media with Dynamic Update](update/media-dynamic-update.md) #### [Deploy feature updates during maintenance windows](update/feature-update-maintenance-window.md) #### [Deploy feature updates for user-initiated installations](update/feature-update-user-install.md) #### [Conclusion](update/feature-update-conclusion.md) From 0d708d483ce7d32a60e0963eae36af7d0669abbf Mon Sep 17 00:00:00 2001 From: jaimeo Date: Thu, 6 Feb 2020 09:22:19 -0800 Subject: [PATCH 4/9] added update catalog search results image --- .../update/images/update-catalog.png | Bin 0 -> 154719 bytes .../deployment/update/media-dynamic-update.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 windows/deployment/update/images/update-catalog.png diff --git a/windows/deployment/update/images/update-catalog.png b/windows/deployment/update/images/update-catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..e199b3a23a2ce5e0b07478f0e2da166d40c71834 GIT binary patch literal 154719 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

9FSe6$)w7|=L2j;p7 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℘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 literal 0 HcmV?d00001 diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index dad34d0b70..24131e5fc2 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -40,9 +40,9 @@ Devices must be able to connect to the internet to obtain Dynamic Updates. In so You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update content for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this: - +![Table with columns labeled Title, Producst, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) -The various Dynamic Update components might not all be present in the search results, so you might have to search with different keywords to find all of the componente. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. +The various Dynamic Update components might not all be present in the search results, so you might have to search with different keywords to find all of the components. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. |To find this Dynamic Update content, check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | From 4437e98a8578e433c77ad0dc69ca914357e5bacf Mon Sep 17 00:00:00 2001 From: jaimeo Date: Thu, 6 Feb 2020 10:39:10 -0800 Subject: [PATCH 5/9] correcting spelling and some other Acrolinx items --- .../deployment/update/media-dynamic-update.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index 24131e5fc2..fd6ae70c12 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -18,13 +18,13 @@ ms.topic: article **Applies to**: Windows 10 -This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images prior to deployment and includes Windows PowerShell scripts you can use to automate this. +This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images prior to deployment and includes Windows PowerShell scripts you can use to automate this process. Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update content as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. ## Dynamic Update -Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *Dynamic Update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch Dynamic Update contant, and then applies those updates to your operating system installation media. The update content includes the following: +Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *Dynamic Update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch Dynamic Update content, and then applies those updates to your operating system installation media. The update content includes the following kinds of updates: - Updates to Setup.exe binaries or other files that Setup uses for feature updates - Updates for the "safe operating system" (SafeOS) that is used for the Windows recovery environment @@ -40,7 +40,7 @@ Devices must be able to connect to the internet to obtain Dynamic Updates. In so You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update content for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this: -![Table with columns labeled Title, Producst, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) +![Table with columns labeled Title, Products, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) The various Dynamic Update components might not all be present in the search results, so you might have to search with different keywords to find all of the components. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. @@ -52,7 +52,7 @@ The various Dynamic Update components might not all be present in the search res |Latest cumulative update | 2019-08 **Cumulative Update for Windows 10** | Windows 10 | Install this update to resolve issues in Windows... | |Servicing stack Dynamic Update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to resolve issues in Windows... | -If you want to customize the image with additional languages Features on Demand, you'll need download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and if users require specific Features on Demand, you can preinstall these into the image. +If you want to customize the image with additional languages Features on Demand, download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and if users require specific Features on Demand, you can preinstall these into the image. ## Update Windows 10 installation media @@ -61,7 +61,7 @@ Properly updating the installation media involves a large number of actions oper - Windows Preinstallation Environment (WinPE): a small operating system used to install, deploy, and repair Windows operating systems - Windows Recovery Environment (WinRE): repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools. - Windows operating system: one or more editions of Windows 10 stored in \sources\install.wim -- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, setup.exe, etc. +- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, setup.exe, and so on. This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (26). @@ -88,13 +88,13 @@ The main operating system file (install.wim) contains multiple editions of Windo ### Additional languages and features -You don't have to add more languages and features to the image to accomplish the udpates, but it is an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by featre additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. +You don't have to add more languages and features to the image to accomplish the updates, but it's an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by feature additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab, there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. Optional Components, along with the .Net feature, can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and Optional Components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month). ## Windows PowerShell scripts to apply Dynamic Updates to an existing image -These examples are for illustration only, and therefore lacks error handling. The script assumes that the following content is stored locally in this folder structure: +These examples are for illustration only, and therefore lack error handling. The script assumes that the following content is stored locally in this folder structure: |Folder |Description | @@ -347,7 +347,7 @@ For this next phase, there is no need to mount the main operating system, since Now is the time to enable other Optional Components or add other Features on Demand. If such a feature has an associated cumulative update (for example, .Net), this is the time to apply those. The script then proceeds with applying the latest cumulative update. Finally, the script cleans and exports the image. -You can install Optional Components, along with the .Net feature, offline, but that will require the device to be restarted This is why the script installs .Net and Optional Components after cleanup and before export. +You can install Optional Components, along with the .Net feature, offline, but that will require the device to be restarted. This is why the script installs .Net and Optional Components after cleanup and before export. ``` # From 398461b914f512174e7bf2aa07a16cde802c48b5 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Thu, 6 Feb 2020 13:07:04 -0800 Subject: [PATCH 6/9] small tweaks --- windows/deployment/update/media-dynamic-update.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index fd6ae70c12..b83e21f347 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -28,7 +28,7 @@ Whenever installation of a feature update starts (whether from media or an envir - Updates to Setup.exe binaries or other files that Setup uses for feature updates - Updates for the "safe operating system" (SafeOS) that is used for the Windows recovery environment -- Updates to the servicing stack necessary to complete the feature update +- Updates to the servicing stack necessary to complete the feature update (see [Servicing stack updates](servicing-stack-updates.md) for more information) - The latest cumulative (quality) update - Updates to applicable drivers already published by manufacturers specifically intended for Dynamic Update @@ -42,17 +42,17 @@ You can obtain Dynamic Update content from the [Microsoft Update Catalog](https: ![Table with columns labeled Title, Products, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) -The various Dynamic Update components might not all be present in the search results, so you might have to search with different keywords to find all of the components. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows the key items to check for each of the Dynamic Update components in **bold**. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. +The various Dynamic Update components might not all be present in the results from a single search, so you might have to search with different keywords to find all of the components. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in bold the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. -|To find this Dynamic Update content, check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | +|To find this Dynamic Update content, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | |---------|---------|---------|---------| |Safe OS Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: | |Setup Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update | **SetupUpdate** | |Latest cumulative update | 2019-08 **Cumulative Update for Windows 10** | Windows 10 | Install this update to resolve issues in Windows... | |Servicing stack Dynamic Update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to resolve issues in Windows... | -If you want to customize the image with additional languages Features on Demand, download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and if users require specific Features on Demand, you can preinstall these into the image. +If you want to customize the image with additional languages or Features on Demand, download supplemental media ISO files from the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). For example, since Dynamic Update will be disabled for your devices, and if users require specific Features on Demand, you can preinstall these into the image. ## Update Windows 10 installation media From 7e7d4934d9fe6d6d3f65bcb0755d0b03c95d0559 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Mon, 10 Feb 2020 11:23:31 -0800 Subject: [PATCH 7/9] more tweaks --- windows/deployment/update/media-dynamic-update.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index b83e21f347..b6bffcdde7 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -42,7 +42,7 @@ You can obtain Dynamic Update content from the [Microsoft Update Catalog](https: ![Table with columns labeled Title, Products, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) -The various Dynamic Update components might not all be present in the results from a single search, so you might have to search with different keywords to find all of the components. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in bold the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. +The various Dynamic Update packages might not all be present in the results from a single search, so you might have to search with different keywords to find all of the s. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in bold the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. |To find this Dynamic Update content, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | @@ -167,12 +167,12 @@ Get-ChildItem -Path $MEDIA_NEW_PATH -Recurse | Where-Object { -not $_.PSIsContai ``` ### Update WinRE -The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its components are used for updating other components. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the Safe OS Dynamic Update package. +The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its s are used for updating other s. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the Safe OS Dynamic Update package. It finishes by cleaning and exporting the image to reduce the image size. > [!NOTE] -> Skip adding the latest cumulative update to Winre.wim because it contains unnecessary components in the recovery environment. The components that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small. +> Skip adding the latest cumulative update to Winre.wim because it contains unnecessary s in the recovery environment. The s that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small. ``` # Mount the main operating system, used throughout the script @@ -398,7 +398,7 @@ DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | Out-Null # # Note: If I wanted to enable additional Optional Components, I'd add these here. -# In addition, we'll add .Net 3.5 here as well. Both .Net and Optional Components may require +# In addition, we'll add .Net 3.5 here as well. Both .Net and Optional Components might require # the image to be booted, and thus if we tried to cleanup after installation, it would fail. # @@ -435,7 +435,7 @@ cmd.exe /c $env:SystemRoot\System32\expand.exe $SETUP_DU_PATH -F:* $MEDIA_NEW_PA As a last step, the script removes the working folder of temporary files, and unmounts our language pack and Features on Demand ISOs. -```powershell +``` # # Perform final cleanup # From 2e8516f715e46736bd6470958f51d1b06adfc9b0 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Mon, 10 Feb 2020 14:39:01 -0800 Subject: [PATCH 8/9] still more tweaks --- .../deployment/update/media-dynamic-update.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index b6bffcdde7..998210763c 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -20,11 +20,11 @@ ms.topic: article This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images prior to deployment and includes Windows PowerShell scripts you can use to automate this process. -Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update content as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. +Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update packages as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. ## Dynamic Update -Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *Dynamic Update* is one of the first steps. Windows 10 setup contacts a Microsoft endpoint to fetch Dynamic Update content, and then applies those updates to your operating system installation media. The update content includes the following kinds of updates: +Whenever installation of a feature update starts (whether from media or an environment connected to Windows Update), *Dynamic Update* is one of the first steps. Windows 10 Setup contacts a Microsoft endpoint to fetch Dynamic Update packages, and then applies those updates to your operating system installation media. The update packages includes the following kinds of updates: - Updates to Setup.exe binaries or other files that Setup uses for feature updates - Updates for the "safe operating system" (SafeOS) that is used for the Windows recovery environment @@ -32,20 +32,20 @@ Whenever installation of a feature update starts (whether from media or an envir - The latest cumulative (quality) update - Updates to applicable drivers already published by manufacturers specifically intended for Dynamic Update -Dynamic Update preserves language pack and Features on Demand content by reacquiring them. +Dynamic Update preserves language pack and Features on Demand packages by reacquiring them. -Devices must be able to connect to the internet to obtain Dynamic Updates. In some environments, it's not an option to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update content and applying it to the image prior to starting Setup on the device. +Devices must be able to connect to the internet to obtain Dynamic Updates. In some environments, it's not an option to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update packages and applying it to the image prior to starting Setup on the device. -## Acquire Dynamic Update content +## Acquire Dynamic Update packages -You can obtain Dynamic Update content from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update content for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this: +You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update packages for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this: ![Table with columns labeled Title, Products, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) The various Dynamic Update packages might not all be present in the results from a single search, so you might have to search with different keywords to find all of the s. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in bold the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. -|To find this Dynamic Update content, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | +|To find this Dynamic Update packages, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | |---------|---------|---------|---------| |Safe OS Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: | |Setup Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update | **SetupUpdate** | @@ -61,7 +61,7 @@ Properly updating the installation media involves a large number of actions oper - Windows Preinstallation Environment (WinPE): a small operating system used to install, deploy, and repair Windows operating systems - Windows Recovery Environment (WinRE): repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools. - Windows operating system: one or more editions of Windows 10 stored in \sources\install.wim -- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, setup.exe, and so on. +- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, Setup.exe, and so on. This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (26). @@ -84,23 +84,23 @@ This table shows the correct sequence for applying the various tasks to the file ### Multiple Windows editions -The main operating system file (install.wim) contains multiple editions of Windows 10. It’s possible that only an update for a given edition is required to deploy it, based on the index. Or, it might be that all editions need an update. Further, ensure that languages are installed before FODs, and the latest cumulative update is always applied last. +The main operating system file (install.wim) contains multiple editions of Windows 10. It’s possible that only an update for a given edition is required to deploy it, based on the index. Or, it might be that all editions need an update. Further, ensure that languages are installed before Features on Demand, and the latest cumulative update is always applied last. ### Additional languages and features -You don't have to add more languages and features to the image to accomplish the updates, but it's an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply updates, followed by language additions, then by feature additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab, there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. +You don't have to add more languages and features to the image to accomplish the updates, but it's an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply servicing stack updates, followed by language additions, then by feature additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab, there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image. Optional Components, along with the .Net feature, can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and Optional Components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month). ## Windows PowerShell scripts to apply Dynamic Updates to an existing image -These examples are for illustration only, and therefore lack error handling. The script assumes that the following content is stored locally in this folder structure: +These examples are for illustration only, and therefore lack error handling. The script assumes that the following packages is stored locally in this folder structure: |Folder |Description | |---------|---------| |C:\mediaRefresh | Parent folder that contains the PowerShell script | -|C:\mediaRefresh\oldMedia | Folder that contains the original media that will be refreshed. For example, contains setup.exe, and \sources folder. | +|C:\mediaRefresh\oldMedia | Folder that contains the original media that will be refreshed. For example, contains Setup.exe, and \sources folder. | |C:\mediaRefresh\newMedia | Folder that will contain the updated media. It is copied from \oldMedia, then used as the target for all update and cleanup operations. | ### Get started @@ -420,7 +420,7 @@ Move-Item -Path $WORKING_PATH"\install2.wim” -Destination $MEDIA_NEW_PATH“\s ### Update remaining media files -This part of the script updates the setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests. +This part of the script updates the Setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests. ``` # From c434086cb9f4c109dfcfd13c5d0627d8cc1de75b Mon Sep 17 00:00:00 2001 From: jaimeo Date: Tue, 11 Feb 2020 08:37:14 -0800 Subject: [PATCH 9/9] adding co-author --- windows/deployment/update/media-dynamic-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index 998210763c..6f79f71c7e 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -5,7 +5,7 @@ ms.prod: w10 ms.mktglfcycl: manage audience: itpro itproauthor: jaimeo -author: jaimeo +author: SteveDiAcetis ms.localizationpriority: medium ms.author: jaimeo ms.reviewer: