mirror of
https://github.com/MicrosoftDocs/windows-itpro-docs.git
synced 2025-07-07 21:23:38 +00:00
Merge branch 'main' into ADO-9517656-Update-for-Business
This commit is contained in:
@ -294,6 +294,8 @@ items:
|
||||
href: update/windows-update-logs.md
|
||||
- name: Servicing stack updates
|
||||
href: update/servicing-stack-updates.md
|
||||
- name: Checkpoint cumulative updates and Microsoft Update Catalog usage
|
||||
href: update/catalog-checkpoint-cumulative-updates.md
|
||||
- name: Update CSP policies
|
||||
href: /windows/client-management/mdm/policy-csp-update?context=/windows/deployment/context/context
|
||||
- name: Update other Microsoft products
|
||||
|
@ -29,9 +29,9 @@ Microsoft Connected Cache deployed directly to Windows relies on [Windows Subsys
|
||||
|
||||
## Supported scenarios and configurations
|
||||
|
||||
Microsoft Connected Cache for Enterprise and Education (preview) is intended to support the following content delivery scenarios:
|
||||
Microsoft Connected Cache for Enterprise and Education (preview) is intended to support all Windows cloud downloads that use Delivery Optimization including, but not limited to, the following content delivery scenarios:
|
||||
|
||||
- Pre-provisioning of devices using Windows Autopilot
|
||||
- Windows Autopilot deployment scenarios
|
||||
- Co-managed clients that get monthly updates and Win32 apps from Microsoft Intune
|
||||
- Cloud-only managed devices, such as Intune-enrolled devices without the Configuration Manager client, that get monthly updates and Win32 apps from Microsoft Intune
|
||||
|
||||
|
@ -11,7 +11,7 @@ appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ Supported Linux distributions
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/deployment/do/waas-microsoft-connected-cache target=_blank>Microsoft Connected Cache for Enterprise</a>
|
||||
ms.date: 10/30/2024
|
||||
ms.date: 01/15/2025
|
||||
---
|
||||
|
||||
|
||||
@ -118,7 +118,7 @@ You can use Task Scheduler on the host machine to check the status of this sched
|
||||
|
||||
### Cache node successfully deployed but not serving requests
|
||||
|
||||
If your cache node isn't responding to requests outside of localhost, it may be because the host machine's port forwarding rules weren't correctly set during Connected Cache installation.
|
||||
If your cache node isn't responding to requests outside of localhost, it may be because the host machine's port forwarding rules weren't correctly set during Connected Cache installation. Since WSL 2 uses a virtualized ethernet adapter by default, port forwarding rules are needed to allow traffic to reach the WSL 2 instance from your LAN. For more information, see [Accessing network applications with WSL](/windows/wsl/networking#accessing-a-wsl-2-distribution-from-your-local-area-network-lan).
|
||||
|
||||
To check your host machine's port forwarding rules, use the following PowerShell command.
|
||||
|
||||
|
@ -15,7 +15,7 @@ metadata:
|
||||
appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
ms.date: 05/23/2024
|
||||
ms.date: 01/14/2025
|
||||
title: Microsoft Connected Cache Frequently Asked Questions
|
||||
summary: |
|
||||
Frequently asked questions about Microsoft Connected Cache
|
||||
@ -35,10 +35,10 @@ sections:
|
||||
answer: |
|
||||
- Azure subscription
|
||||
- Hardware to host Microsoft Connected Cache
|
||||
- Ubuntu 20.04 LTS on a physical server or VM of your choice.
|
||||
- Ubuntu 22.04 LTS on a physical server or VM of your choice.
|
||||
|
||||
> [!NOTE]
|
||||
> The Microsoft Connected Cache is deployed and managed using Azure IoT Edge and Ubuntu 20.04 is an [Azure IoT Edge Tier 1 operating system](/azure/iot-edge/support?view=iotedge-2020-11#tier-1). Additionally, the Microsoft Connected Cache module is optimized for Ubuntu 20.04 LTS.
|
||||
> The Microsoft Connected Cache is deployed and managed using Azure IoT Edge and Ubuntu 22.04 is an [Azure IoT Edge Tier 1 operating system](/azure/iot-edge/support#tier-1). Additionally, the Microsoft Connected Cache module is optimized for Ubuntu 22.04 LTS.
|
||||
|
||||
The following are recommended hardware configurations:
|
||||
|
||||
|
@ -13,7 +13,7 @@ appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/deployment/do/waas-microsoft-connected-cache target=_blank>Microsoft Connected Cache for ISPs</a>
|
||||
ms.date: 05/23/2024
|
||||
ms.date: 01/14/2024
|
||||
---
|
||||
|
||||
# Operator sign up and service onboarding for Microsoft Connected Cache
|
||||
@ -36,7 +36,7 @@ Before you begin sign up, ensure you have the following components:
|
||||
|
||||
1. **Peering DB**: Ensure your organization's [Peering DB](https://www.peeringdb.com/) page is up-to-date and active. Check that the NOC email listed is accurate, and that you have access to this email.
|
||||
|
||||
1. **Server**: Ensure the server you wish to install Microsoft Connected Cache on is ready, and that the server is installed on Ubuntu 20.04 LTS.
|
||||
1. **Server**: Ensure the server you wish to install Microsoft Connected Cache on is ready, and that the server is installed on Ubuntu 22.04 LTS.
|
||||
1. **Configure cache drive**: Make sure that you have a data drive configured with full permissions on your server. You'll need to specify the location for this cache drive during the cache node configuration process. The minimum size for the data drive is 100 GB. For instructions to mount a disk on a Linux VM, see [Attach a data disk to a Linux VM](/azure/virtual-machines/linux/attach-disk-portal#find-the-disk).
|
||||
|
||||
## Resource creation and sign up process
|
||||
|
@ -13,7 +13,7 @@ appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/deployment/do/waas-microsoft-connected-cache target=_blank>Microsoft Connected Cache for ISPs</a>
|
||||
ms.date: 05/23/2024
|
||||
ms.date: 01/14/2025
|
||||
---
|
||||
|
||||
# Support and troubleshooting
|
||||
@ -97,6 +97,15 @@ Rerun the IoT Edge Check command to validate proper connectivity:
|
||||
```bash
|
||||
iotedge check -verbose
|
||||
```
|
||||
<br>
|
||||
|
||||
## Updating from Ubuntu 20.04 to 22.04
|
||||
You can now provision Microsoft Connected Cache for ISP on Ubuntu 22.04.
|
||||
If you have a cache node provisioned on Ubuntu 20.04, you will need to uninstall it first before updating to Ubuntu 22.04.
|
||||
Once you have updated the system, download the provisioning package from Azure portal and run the provisioning script on the portal.
|
||||
For more information on provisioning cache node, visit, [Create, provision and deploy cache node](mcc-isp-create-provision-deploy.md#provision-your-server).
|
||||
|
||||
<br>
|
||||
|
||||
## Diagnose and Solve Problems
|
||||
|
||||
@ -110,6 +119,7 @@ Within **Diagnose and solve problems**, select **Troubleshoot** under the type o
|
||||
|
||||
:::image type="content" source="images/mcc-isp-diagnose-solve-troubleshoot.png" alt-text="A screenshot of Azure portal showing the option to select Troubleshoot to continue troubleshooting common issues related to the installation of Microsoft Connected Cache." lightbox="images/mcc-isp-diagnose-solve-troubleshoot.png":::
|
||||
|
||||
|
||||
## Steps to obtain an Azure subscription ID
|
||||
|
||||
To onboard onto Microsoft Connected Cache, you'll need an Azure subscription ID. Use the following steps to obtain your subscription ID:
|
||||
|
@ -12,7 +12,7 @@ ms.reviewer: mstewart
|
||||
ms.collection: tier3
|
||||
appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/deployment/do/mcc-isp target=_blank>Microsoft Connected Cache for ISPs</a>
|
||||
ms.date: 05/23/2024
|
||||
ms.date: 01/14/2025
|
||||
---
|
||||
|
||||
# Enhancing cache performance
|
||||
@ -21,7 +21,7 @@ To make sure you're maximizing the performance of your cache node, review the fo
|
||||
|
||||
#### OS requirements
|
||||
|
||||
The Microsoft Connected Cache module is optimized for Ubuntu 20.04 LTS. Install Ubuntu 20.04 LTS on a physical server or VM of your choice.
|
||||
The Microsoft Connected Cache module is optimized for Ubuntu 22.04 LTS. Install Ubuntu 22.04 LTS on a physical server or VM of your choice.
|
||||
|
||||
#### NIC requirements
|
||||
|
||||
|
@ -0,0 +1,93 @@
|
||||
---
|
||||
title: Checkpoint cumulative updates and the Microsoft Update Catalog
|
||||
description: This article describes how to handle checkpoint cumulative updates when you use the Microsoft Update Catalog to update devices and images.
|
||||
ms.service: windows-client
|
||||
ms.subservice: itpro-updates
|
||||
ms.topic: conceptual
|
||||
ms.author: mstewart
|
||||
author: mestew
|
||||
manager: aaroncz
|
||||
ms.collection:
|
||||
- tier2
|
||||
ms.localizationpriority: medium
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11, version 24H2 and later</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/windows-server-release-info" target="_blank">Windows Server 2025 and later</a>
|
||||
ms.date: 01/31/2025
|
||||
---
|
||||
|
||||
# Checkpoint cumulative updates and Microsoft Update Catalog usage
|
||||
<!--9693727-->
|
||||
Starting Windows 11, version 24H2, monthly security updates and optional nonsecurity preview release updates might be preceded by a checkpoint cumulative update. Devices updating from Windows Update (WU) and Windows Server Update Services (WSUS) release channels can continue to seamlessly install the latest monthly security update or the optional nonsecurity preview release regardless of whether there are any preceding checkpoint cumulative updates, so **update processes involving WU and WSUS remain unchanged**. This article covers how Microsoft Update Catalog users can easily update their devices (or images) through checkpoint cumulative updates.
|
||||
|
||||
## Checkpoint cumulative updates
|
||||
|
||||
Windows 11 quality updates use servicing technology and are built cumulatively from the time when a new Windows OS was released to manufacturing (RTM). These monthly updates include all the changes since RTM in the form of binary differentials computed from the initial version of those binaries.
|
||||
|
||||
With Windows 11, version 24H2, Microsoft introduced a new concept of checkpoint cumulative updates. This change allows you to get features and security enhancements via the latest cumulative update through smaller, incremental differentials containing only the changes since the previous checkpoint cumulative update. This change means that you can save time, bandwidth, and hard drive space.
|
||||
|
||||
Going forward, Microsoft might periodically release cumulative updates as checkpoints. The subsequent updates will then consist of:
|
||||
- The update package files associated with the checkpoints, and
|
||||
- New update package files that contain incremental binary differentials against the version of binaries in the last checkpoint.
|
||||
|
||||
This process might be repeated multiple times, thereby generating multiple checkpoints during the lifecycle of a given Windows release. The Windows 11, version 24H2 servicing stack can merge all the checkpoints and only download and install content that's missing on the device.
|
||||
|
||||
If any checkpoint cumulative updates precede a target update, a device or image needs to take all prior checkpoint cumulative updates before it can take the target update. In other words, a post-checkpoint latest cumulative update can be applied to images/devices that are on that checkpoint or on a subsequent latest cumulative update. For updates sourced from WU and WSUS this process happens seamlessly. You can continue to use the same tools and processes that you currently use for approving and deploying updates. We expect that your experience updating through a checkpoint cumulative update will position you to efficiently take future checkpoint cumulative updates.
|
||||
|
||||
### Applicability
|
||||
|
||||
A checkpoint cumulative update is just another monthly security update that informs how subsequent updates are built. There's no policy change or new requirement around when users must take these updates, though it's best practice to take monthly security updates at the earliest opportunity to keep your devices protected and productive.
|
||||
|
||||
### Update Windows installation media
|
||||
|
||||
This feature doesn't introduce any change to the applicability of monthly security updates. As before, these updates apply to the main OS (install.wim) and to WinPE (boot.wim) but not to WinRE (winre.wim).
|
||||
|
||||
WinRE is serviced by applying the servicing stack update from a cumulative update (latest cumulative update doesn't apply) and SafeOS Dynamic Update. This is how it has been for a while now, and there's no recent change to WinRE servicing and certainly no change due to the checkpoint cumulative updates feature. We understand that not everybody may have had a shared understanding about this, but applying servicing stack update then SafeOS Dynamic Update is the only way to ensure WinRE is serviced. For more information, see [Update Windows installation media with Dynamic Update](media-dynamic-update.md).
|
||||
|
||||
|
||||
## Updating from the Microsoft Update Catalog
|
||||
|
||||
When installing a given monthly security or optional nonsecurity preview update, [Microsoft Update Catalog](https://www.catalog.update.microsoft.com) users can determine and download the prior checkpoint cumulative updates and apply them sequentially under certain situations, or in one go using Deployment Image Servicing and Management (DISM).
|
||||
|
||||
### Finding prior checkpoint cumulative updates
|
||||
|
||||
For a given update, users can look up the KB article and find all preceding checkpoints, if any, listed under the **Catalog** release channel. For instance, the 2024-12 monthly security update (KB5048667) has one preceding checkpoint cumulative update per [December 10, 2024-KB5048667 (OS Build 26100.2605)](https://support.microsoft.com/topic/708755a6-d809-4a8a-8d20-53c4108590e6#ID0ELBD=Catalog):
|
||||
|
||||
> <b>Install each MSU file individually, in order</b> <p>Download and install each MSU file individually either using DISM or [Windows Update Standalone Installer](https://support.microsoft.com/topic/799ba3df-ec7e-b05e-ee13-1cdae8f23b19) in the following order: <ul><li> windows11.0-kb5043080-x64_953449672073f8fb99badb4cc6d5d7849b9c83e8.msu </li> <li>windows11.0-kb5048667-x64_d4ad0ca69de9a02bc356757581e0e0d6960c9f93.msu </li></ul>
|
||||
|
||||
Alternately, users can search the KB number in the [Microsoft Update Catalog](https://catalog.update.microsoft.com/) and select the **Download** button for the selected architecture. The download pop-up shows all prior checkpoints for the update so that users can conveniently download all `.msu` files and apply them to their image or device. For instance, Microsoft Update Catalog shows the [2024-12 cumulative update (KB5048667)](https://support.microsoft.com/help/5048667) has one preceding checkpoint cumulative update, [KB5043080](https://support.microsoft.com/help/5043080).
|
||||
|
||||
### Updating through checkpoint cumulative updates
|
||||
|
||||
**Device has the latest checkpoint cumulative update and doesn't need customization:**
|
||||
|
||||
Devices or images that have the latest checkpoint cumulative update installed and don't need Features on Demand (FoD) or language pack customization can be updated to the latest target cumulative update with no change to your existing process. You can copy the target `.msu` file from Microsoft Update Catalog and install it, for instance using [Add-WindowsPackage (DISM)](/powershell/module/dism/add-windowspackage) or [DISM operating system package (`.cab` or `.msu`) servicing command-line options](/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options).
|
||||
|
||||
Examples of eligible devices:
|
||||
|
||||
| Device is on | Needs to install|
|
||||
|---|---|
|
||||
|<ul><li>The checkpoint cumulative update, 2024-09 (KB5043080)</li></ul>|<ul><li>A subsequent monthly security update like 2024-11 (KB5046617), or</li> <li>A subsequent optional nonsecurity release like 2024-11 (KB5046740) </li></ul>|
|
||||
|<ul><li>A subsequent optional nonsecurity preview release like 2024-09 (KB5043178), or</li> <li> A subsequent monthly security update like 2024-10 (KB5044284)</li></ul>|<ul><li>A subsequent monthly security update like 2025-01 (KB5050009), or</li> <li> A subsequent optional nonsecurity release like 2024-11 (KB5046740) </li></ul>|
|
||||
|
||||
**Device needs FoD or language pack customization:**
|
||||
|
||||
Installing FoDs or language packs requires the full latest cumulative update payload, which now can be split across files associated with each preceding checkpoint cumulative update. So, when customizing FoDs or language packs for offline media, all prior checkpoint cumulative updates and the target cumulative update need to be installed regardless of whether the device already had any of the prior checkpoints cumulative update installed. This needs to be done using DISM.
|
||||
|
||||
1. Copy the .msu files of the latest cumulative update (the target) and all prior checkpoint cumulative updates to a local folder. Make sure there are no other .msu files present.
|
||||
1. Mount the install.wim file.
|
||||
1. Run `DISM /add-package` with the latest `.msu` file as the sole target.
|
||||
1. Run `/Cleanup-Image /StartComponentCleanup`.
|
||||
1. Unmount.
|
||||
1. Run `DISM /export-image` to optimize the image size, if that's important to you.
|
||||
|
||||
**Device doesn't have the latest checkpoint cumulative update and doesn't need customization:**
|
||||
|
||||
Devices that aren't on the latest checkpoint cumulative update and don't need FoD/language pack customization can either install all needed cumulative updates one by one in the right sequence. Alternately they can be updated using DISM to install all cumulative updates in one go. For more information, see the [Updating through checkpoint cumulative updates](#updating-through-checkpoint-cumulative-updates) section. If there are total four checkpoint cumulative updates available and device already has the first one installed, DISM applies the remaining three checkpoint cumulative updates in the right order followed by the target cumulative update, all in one go.
|
||||
|
||||
## Related articles
|
||||
|
||||
- [Servicing stack updates](/windows/deployment/update/servicing-stack-updates)
|
||||
- [Features on Demand](/windows-hardware/manufacture/desktop/features-on-demand-v2--capabilities)
|
||||
- [How to download updates that include drivers and hotfixes from the Microsoft Update Catalog](/troubleshoot/windows-client/installing-updates-features-roles/download-updates-drivers-hotfixes-windows-update-catalog)
|
||||
- [Update Windows installation media with Dynamic Update](media-dynamic-update.md)
|
@ -0,0 +1,17 @@
|
||||
---
|
||||
author: mestew
|
||||
ms.author: mstewart
|
||||
manager: aaroncz
|
||||
ms.subservice: itpro-updates
|
||||
ms.service: windows-client
|
||||
ms.topic: include
|
||||
ms.date: 01/31/2025
|
||||
ms.localizationpriority: medium
|
||||
---
|
||||
<!-- This file is used multiple times in release-cycle.md. Headings are driven by article context. 9693727-->
|
||||
|
||||
Starting Windows 11, version 24H2, Microsoft may periodically release cumulative updates as checkpoints. The subsequent updates will consist of:
|
||||
- The update package files associated with the checkpoints, and
|
||||
- New update package files that contain incremental binary differentials against the version of binaries in the last checkpoint.
|
||||
|
||||
Multiple checkpoints may be shipped during the lifecycle of a given Windows release. Devices updating from Windows Update and WSUS can continue to seamlessly install the latest monthly security update regardless of whether there are any preceding checkpoint cumulative updates, **no change is needed to their update process**. Catalog users can review [Checkpoint cumulative updates and Microsoft Update Catalog usage](../catalog-checkpoint-cumulative-updates.md) for reference.
|
@ -13,7 +13,7 @@ appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/windows-server-release-info target=_blank>Windows Server</a>
|
||||
ms.date: 11/11/2024
|
||||
ms.date: 1/31/2024
|
||||
---
|
||||
|
||||
# Update Windows installation media with Dynamic Update
|
||||
@ -62,7 +62,7 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https
|
||||
|Servicing stack Dynamic Update | YYYY-MM Servicing Stack Update for Microsoft server operating system version 23H2 |
|
||||
|
||||
### Azure Stack HCI, version 22H2 Dynamic Update packages
|
||||
**Title**, **Product** and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
**Title**, **Product**, and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
|
||||
| Update packages |Title |Product |Description |
|
||||
|-----------------------------------|----------------------------------------------------------------------------------------|----------------------------------------------|------------------|
|
||||
@ -72,7 +72,7 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https
|
||||
|Servicing stack Dynamic Update | YYYY-MM Servicing Stack Update for Microsoft server operating system, version 22H2 | | |
|
||||
|
||||
### Windows Server 2022 later Dynamic Update packages
|
||||
**Title**, **Product** and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
**Title**, **Product**, and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
|
||||
| Update packages |Title |Product |Description |
|
||||
|-----------------------------------|----------------------------------------------------------------------------------------|----------------------------------------------|------------------|
|
||||
@ -81,8 +81,8 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https
|
||||
|Latest cumulative update | YYYY-MM Cumulative Update for Microsoft server operating system, version 21H2 | | |
|
||||
|Servicing stack Dynamic Update | YYYY-MM Servicing Stack Update for Microsoft server operating system, version 21H2 | | |
|
||||
|
||||
### Windows 11, version 22H2 and later Dynamic Update packages
|
||||
**Title** can distinguish each Dynamic Package. Latest cumulative updates have the servicing stack embedded. The servicing stack is published only if necessary for a given cumulative update. Titles below are for Windows 11, version 22H2. Windows 11, version 23H2 and 24H2 have a similar format.
|
||||
### Windows 11, version 22H2, and later Dynamic Update packages
|
||||
**Title** can distinguish each Dynamic Package. Latest cumulative updates have the servicing stack embedded. The servicing stack is published only if necessary for a given cumulative update. The following titles are for Windows 11, version 22H2. Windows 11, version 23H2, and version 24H2 have a similar format:
|
||||
|
||||
| Update packages |Title |
|
||||
|-----------------------------------|---------------------------------------------------------------|
|
||||
@ -92,7 +92,7 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https
|
||||
|Servicing stack Dynamic Update | YYYY-MM Servicing Stack Update for Windows 11 Version 22H2 |
|
||||
|
||||
### Windows 11, version 21H2 Dynamic Update packages
|
||||
**Title**, **Product** and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
**Title**, **Product**, and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
|
||||
| Update packages |Title |Product |Description |
|
||||
|-----------------------------------|---------------------------------------------------------------|----------------------------------------------|------------------|
|
||||
@ -102,7 +102,7 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https
|
||||
|Servicing stack Dynamic Update | YYYY-MM Servicing Stack Update for Windows 11 Version 21H2 | | |
|
||||
|
||||
### Windows 10, version 22H2 Dynamic Update packages
|
||||
**Title**, **Product** and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
**Title**, **Product**, and **Description** are required to distinguish each Dynamic Package. Latest cumulative update has the servicing stack embedded. Servicing stack published separately only if necessary as a prerequisite for a given cumulative update.
|
||||
|
||||
| Update packages |Title |Product |Description |
|
||||
|-----------------------------------|---------------------------------------------------------------|----------------------------------------------|------------------|
|
||||
@ -124,30 +124,30 @@ Properly updating the installation media involves many actions operating on seve
|
||||
|
||||
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 boot manager from WinPE to the new media (28).
|
||||
|
||||
|Task |WinRE (winre.wim) |Operating system (install.wim) | WinPE (boot.wim) | New media |
|
||||
|-------------------------------------------|-------------------|--------------------------------|------------------|-----------|
|
||||
|Add servicing stack Dynamic Update | 1 | 9 | 17 | |
|
||||
|Add language pack | 2 | 10 | 18 | |
|
||||
|Add localized optional packages | 3 | | 19 | |
|
||||
|Add font support | 4 | | 20 | |
|
||||
|Add text-to-speech | 5 | | 21 | |
|
||||
|Update Lang.ini | | | 22 | |
|
||||
|Add Features on Demand | | 11 | | |
|
||||
|Add Safe OS Dynamic Update | 6 | | | |
|
||||
|Add Setup Dynamic Update | | | | 26 |
|
||||
|Add setup.exe and setuphost.exe from WinPE | | | | 27 |
|
||||
|Add boot manager from WinPE | | | | 28 |
|
||||
|Add latest cumulative update | | 12 | 23 | |
|
||||
|Clean up the image | 7 | 13 | 24 | |
|
||||
|Add Optional Components | | 14 | | |
|
||||
|Add .NET and .NET cumulative updates | | 15 | | |
|
||||
|Export image | 8 | 16 | 25 | |
|
||||
|Task |WinRE (winre.wim) |Operating system (install.wim) | WinPE (boot.wim) | New media |
|
||||
|--------------------------------------------------------|-------------------|--------------------------------|------------------|-----------|
|
||||
|Add servicing stack update via latest cumulative update | 1 | 9 | 17 | |
|
||||
|Add language pack | 2 | 10 | 18 | |
|
||||
|Add localized optional packages | 3 | | 19 | |
|
||||
|Add font support | 4 | | 20 | |
|
||||
|Add text-to-speech | 5 | | 21 | |
|
||||
|Update Lang.ini | | | 22 | |
|
||||
|Add Features on Demand | | 11 | | |
|
||||
|Add Optional Components | | 12 | | |
|
||||
|Add Safe OS Dynamic Update | 6 | | | |
|
||||
|Add Setup Dynamic Update | | | | 26 |
|
||||
|Add Setup.exe and setuphost.exe from WinPE | | | | 27 |
|
||||
|Add boot manager from WinPE | | | | 28 |
|
||||
|Add latest cumulative update | | 13 | 23 | |
|
||||
|Clean up the image | 7 | 14 | 24 | |
|
||||
|Add .NET and .NET cumulative updates | | 15 | | |
|
||||
|Export image | 8 | 16 | 25 | |
|
||||
|
||||
> [!NOTE]
|
||||
> Starting in February 2021, the latest cumulative update and servicing stack update will be combined and distributed in the Microsoft Update Catalog as a new combined cumulative update. For Steps 1, 9, and 18 that require the servicing stack update for updating the installation media, you should use the combined cumulative update. For more information on the combined cumulative update, see [Servicing stack updates](./servicing-stack-updates.md).
|
||||
> Starting in February 2021, the latest cumulative update and servicing stack update is combined and distributed in the Microsoft Update Catalog as a new combined cumulative update. For Steps 1, 9, and 17 that require the servicing stack update for updating the installation media, you should use the combined cumulative update. For more information on the combined cumulative update, see [Servicing stack updates](./servicing-stack-updates.md).
|
||||
|
||||
> [!NOTE]
|
||||
> Microsoft will remove the Flash component from Windows through KB4577586, "Update for Removal of Adobe Flash Player". You can also remove Flash anytime by deploying the update in KB4577586 (available on the Catalog) between steps 20 and 21. As of July 2021, KB4577586, "Update for Removal of Adobe Flash Player" will be included in the latest cumulative update for Windows 10, versions 1607 and 1507. The update will also be included in the Monthly Rollup and the Security Only Update for Windows 8.1, Windows Server 2012, and Windows Embedded 8 Standard. For more information, see [Update on Adobe Flash Player End of Support](https://blogs.windows.com/msedgedev/2020/09/04/update-adobe-flash-end-support/).
|
||||
> Microsoft removes the Flash component from Windows through [KB4577586: Update for Removal of Adobe Flash Player](https://support.microsoft.com/kb/4577586). You can also remove Flash anytime by deploying the update in KB4577586 (available on the Catalog) between steps 20 and 21. As of July 2021, KB4577586, "Update for Removal of Adobe Flash Player" will be included in the latest cumulative update for Windows 10, versions 1607 and 1507. The update will also be included in the Monthly Rollup and the Security Only Update for Windows 8.1, Windows Server 2012, and Windows Embedded 8 Standard. For more information, see [Update on Adobe Flash Player End of Support](https://blogs.windows.com/msedgedev/2020/09/04/update-adobe-flash-end-support/).
|
||||
|
||||
### Multiple Windows editions
|
||||
|
||||
@ -157,13 +157,13 @@ The main operating system file (install.wim) might contain multiple editions of
|
||||
|
||||
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's in your starting image. When you add more languages and features, 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 the cleanup failure. One option is to skip the image cleanup step, though that results 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'll 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 the cleanup failure. One option is to skip the image cleanup step, though that results 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'll 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).
|
||||
|
||||
|
||||
### Checkpoint cumulative updates
|
||||
Starting with Windows 11, version 24H2, and Windows Server 2025, the latest cumulative update may have a prerequisite cumulative update that is required to be installed first. These are known as checkpoint cumulative updates. In these cases, the cumulative update file level differentials are based on a previous cumulative update instead of the Windows RTM release. The benefit is a smaller update package and faster installation. When you obtain the latest cumulative update from the [Microsoft Update Catalog](https://catalog.update.microsoft.com), checkpoint cumulative updates will be available from the download button. In addition, the knowledge base article for the cumulative update will provide additional information.
|
||||
Starting with Windows 11, version 24H2, and Windows Server 2025, the latest cumulative update might have a prerequisite cumulative update that is required to be installed first. These updates are known as checkpoint cumulative updates. In these cases, the cumulative update file level differentials are based on a previous cumulative update instead of the Windows RTM release. The benefit is a smaller update package and faster installation. When you obtain the latest cumulative update from the [Microsoft Update Catalog](https://catalog.update.microsoft.com), checkpoint cumulative updates are available from the download button. In addition, the knowledge base article for the cumulative update provides additional information.
|
||||
|
||||
To install the checkpoint(s) when servicing the Windows OS (steps 9 & 12) and WinPE (steps 17 & 23), call `Add-WindowsPackage` with the target cumulative update. The folder from `-PackagePath` will be used to discover and install one or more checkpoints as needed. Only the target cumulative update and checkpoint cumulative updates should be in the `-PackagePath` folder. Cumulative update packages with a revision <= the target cumulative update will be processed. If you are not customizing the image with additional languages and/or optional features, then separate calls to `Add-WindowsPackage` (checkpoint cumulative updates first) can be used for steps 9 & 17 above. Separate calls cannot be used for steps 12 and 23.
|
||||
To install the checkpoint(s) when servicing the Windows OS (steps 9 & 12) and WinPE (steps 17 & 23), call `Add-WindowsPackage` with the target cumulative update. The folder from `-PackagePath` is used to discover and install one or more checkpoints as needed. Only the target cumulative update and checkpoint cumulative updates should be in the `-PackagePath` folder. Cumulative update packages with a revision <= the target cumulative update are processed. If you aren't customizing the image with additional languages and/or optional features, then separate calls to `Add-WindowsPackage` (checkpoint cumulative updates first) can be used for steps 9 & 17 above. Separate calls can't be used for steps 12 and 23.
|
||||
|
||||
|
||||
## Windows PowerShell scripts to apply Dynamic Updates to an existing image
|
||||
@ -178,7 +178,8 @@ These examples are for illustration only, and therefore lack error handling. The
|
||||
|
||||
### 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's a script error and it's necessary to start over from a known state. Also, it provides a comparison of old versus new media to evaluate changes. To ensure that the new media updates, make sure they aren't read-only.
|
||||
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's a script error and it's necessary to start over from a known state. Also, it provides a comparison of old versus new media to evaluate changes. To ensure that the new media updates, make sure they aren't read-only. The script also showcases adding additional languages, Features on Demand, and Optional Components. These aren't required, but added to highlight when in the sequence they should be added. Starting with Windows 11, version 21H2, the language pack (LANGPACK) ISO is superseded by the Features on Demand ISO. Language packs and the \Windows Preinstallation Environment packages are part of the Features on Demand ISO. Further, the path for main OS language and optional features moved to \LanguagesAndOptionalFeatures instead of the root. If you're using this script for Windows 10, modify to mount and use the language pack (LANGPACK) ISO.
|
||||
|
||||
|
||||
```powershell
|
||||
#Requires -RunAsAdministrator
|
||||
@ -187,40 +188,38 @@ function Get-TS { return "{0:HH:mm:ss}" -f [DateTime]::Now }
|
||||
|
||||
Write-Output "$(Get-TS): Starting media refresh"
|
||||
|
||||
# Declare language for showcasing adding optional localized components
|
||||
$LANG = "ja-jp"
|
||||
$LANG_FONT_CAPABILITY = "jpan"
|
||||
|
||||
# Declare media for FOD and LPs
|
||||
# Note: Starting with Windows 11, version 21H2, the language pack (LANGPACK) ISO has been superseded by the FOD ISO.
|
||||
# Language packs and the \Windows Preinstallation Environment packages are part of the LOF ISO.
|
||||
# If you are using this script for Windows 10, modify to mount and use the LANGPACK ISO.
|
||||
$FOD_ISO_PATH = "C:\mediaRefresh\packages\FOD-PACKAGES_OEM_PT1_amd64fre_MULTI.iso"
|
||||
|
||||
# Declare Dynamic Update packages. A dedicated folder is used for the latest cumulative update, and as needed
|
||||
# checkpoint cumulative updates.
|
||||
$LCU_PATH = "C:\mediaRefresh\packages\CU\LCU.msu"
|
||||
$SSU_PATH = "C:\mediaRefresh\packages\Other\SSU_DU.msu"
|
||||
$SETUP_DU_PATH = "C:\mediaRefresh\packages\Other\Setup_DU.cab"
|
||||
$SAFE_OS_DU_PATH = "C:\mediaRefresh\packages\Other\SafeOS_DU.cab"
|
||||
$DOTNET_CU_PATH = "C:\mediaRefresh\packages\Other\DotNet_CU.msu"
|
||||
|
||||
# Declare folders for mounted images and temp files
|
||||
$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia"
|
||||
$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia"
|
||||
$WORKING_PATH = "C:\mediaRefresh\temp"
|
||||
$MAIN_OS_MOUNT = "C:\mediaRefresh\temp\MainOSMount"
|
||||
$WINRE_MOUNT = "C:\mediaRefresh\temp\WinREMount"
|
||||
$WINPE_MOUNT = "C:\mediaRefresh\temp\WinPEMount"
|
||||
# Declare media for FOD and LPs
|
||||
$FOD_ISO_PATH = "C:\mediaRefresh\packages\CLIENT_LOF_PACKAGES_OEM.iso"
|
||||
|
||||
# Array of Features On Demand for main OS
|
||||
# This is optional to showcase where these are added
|
||||
$FOD = @(
|
||||
'XPS.Viewer~~~~0.0.1.0'
|
||||
)
|
||||
|
||||
# Array of Legacy Features for main OS
|
||||
# This is optional to showcase where these are added
|
||||
$OC = @(
|
||||
'MediaPlayback'
|
||||
'WindowsMediaPlayer'
|
||||
)
|
||||
|
||||
# Mount the Features on Demand ISO
|
||||
Write-Output "$(Get-TS): Mounting FOD ISO"
|
||||
$FOD_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter
|
||||
|
||||
# Note: Starting with Windows 11, version 21H2, the correct path for main OS language and optional features
|
||||
# moved to \LanguagesAndOptionalFeatures instead of the root. For Windows 10, use $FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\"
|
||||
$FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\LanguagesAndOptionalFeatures"
|
||||
|
||||
# Declare language for showcasing adding optional localized components
|
||||
$LANG = "ja-jp"
|
||||
$LANG_FONT_CAPABILITY = "jpan"
|
||||
|
||||
# Declare language related cabs
|
||||
$WINPE_OC_PATH = "$FOD_ISO_DRIVE_LETTER`:\Windows Preinstallation Environment\x64\WinPE_OCs"
|
||||
$WINPE_OC_LANG_PATH = "$WINPE_OC_PATH\$LANG"
|
||||
@ -231,6 +230,14 @@ $WINPE_SPEECH_TTS_PATH = "$WINPE_OC_PATH\WinPE-Speech-TTS.cab"
|
||||
$WINPE_SPEECH_TTS_LANG_PATH = "$WINPE_OC_PATH\WinPE-Speech-TTS-$LANG.cab"
|
||||
$OS_LP_PATH = "$FOD_PATH\Microsoft-Windows-Client-Language-Pack_x64_$LANG.cab"
|
||||
|
||||
# Declare folders for mounted images and temp files
|
||||
$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia\Ge\client_professional_en-us"
|
||||
$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia"
|
||||
$WORKING_PATH = "C:\mediaRefresh\temp"
|
||||
$MAIN_OS_MOUNT = "C:\mediaRefresh\temp\MainOSMount"
|
||||
$WINRE_MOUNT = "C:\mediaRefresh\temp\WinREMount"
|
||||
$WINPE_MOUNT = "C:\mediaRefresh\temp\WinPEMount"
|
||||
|
||||
# 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
|
||||
@ -241,15 +248,16 @@ New-Item -ItemType directory -Path $WINPE_MOUNT -ErrorAction stop | Out-Null
|
||||
Write-Output "$(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 and each main OS Windows edition
|
||||
|
||||
The script will update each edition of Windows within the main operating system file (install.wim). For each edition, the main OS image is mounted.
|
||||
The script updates each edition of Windows within the main operating system file (install.wim). For each edition, the main OS image is mounted.
|
||||
|
||||
For the first image, Winre.wim is copied to the working folder, and mounted. 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.
|
||||
For the first image, Winre.wim is copied to the working folder, and mounted. It then applies servicing stack via the latest cumulative update, since its components are used for updating other components. Depending on the Windows release that you're updating, there are two different approaches for updating the servicing stack. The first approach is to use the combined cumulative update. This is for Windows releases that are shipping a combined cumulative update that includes the servicing stack updates (that is, SSU + LCU are combined). Windows 11, version 21H2, and Windows 11, version 22H2 are examples. In these cases, the servicing stack update isn't published separately; the combined cumulative update should be used for this step. However, in rare cases, there might be a breaking change in the combined cumulative update format change, that requires a standalone servicing stack update to be published, and installed first before the combined cumulative update can be installed. 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.
|
||||
|
||||
Next, for the mounted OS image, the 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 uses `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](/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 requires the device to be restarted. This is why the script installs .NET and Optional Components after cleanup and before export.
|
||||
Next, for the mounted OS image, the script starts by applying the servicing stack via the latest cumulative update. Then, it adds Japanese language support and then the Japanese language features. Unlike the Dynamic Update packages, it uses `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](/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 attempts to clean the image, then a final step to apply the latest cumulative update. It's important to apply the latest cumulative update last, to ensure Features on Demand, Optional Components, and Languages are updated from their initial release state. The .NET feature is an exception that's added along with its cumulative update next. Finally, the script exports the image.
|
||||
|
||||
This process is repeated for each edition of Windows within the main operating system file. To reduce size, the serviced Winre.wim file from the first image is saved, and used to update each subsequent Windows edition. This reduces the final size of install.wim.
|
||||
|
||||
@ -262,13 +270,15 @@ This process is repeated for each edition of Windows within the main operating s
|
||||
# Get the list of images contained within the main OS
|
||||
$WINOS_IMAGES = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim"
|
||||
|
||||
Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
Foreach ($IMAGE in $WINOS_IMAGES)
|
||||
{
|
||||
|
||||
# first mount the main OS image
|
||||
Write-Output "$(Get-TS): Mounting main OS, image index $($IMAGE.ImageIndex)"
|
||||
Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim" -Index $IMAGE.ImageIndex -Path $MAIN_OS_MOUNT -ErrorAction stop| Out-Null
|
||||
|
||||
if ($IMAGE.ImageIndex -eq "1") {
|
||||
if ($IMAGE.ImageIndex -eq "1")
|
||||
{
|
||||
|
||||
#
|
||||
# update Windows Recovery Environment (WinRE) within this OS image
|
||||
@ -278,29 +288,9 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim" -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-Null
|
||||
|
||||
# Add servicing stack update (Step 1 from the table)
|
||||
|
||||
# Depending on the Windows release that you are updating, there are 2 different approaches for updating the servicing stack
|
||||
# The first approach is to use the combined cumulative update. This is for Windows releases that are shipping a combined
|
||||
# cumulative update that includes the servicing stack updates (i.e. SSU + LCU are combined). Windows 11, version 21H2 and
|
||||
# Windows 11, version 22H2 are examples. In these cases, the servicing stack update is not published seperately; the combined
|
||||
# cumulative update should be used for this step. However, in hopefully rare cases, there may breaking change in the combined
|
||||
# cumulative update format, that requires a standalone servicing stack update to be published, and installed first before the
|
||||
# combined cumulative update can be installed.
|
||||
|
||||
# This is the code to handle the rare case that the SSU is published and required for the combined cumulative update
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH"
|
||||
# Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
# Now, attempt the combined cumulative update.
|
||||
# There is a known issue where the servicing stack update is installed, but the cumulative update will fail. This error should
|
||||
# be caught and ignored, as the last step will be to apply the Safe OS update and thus the image will be left with the correct
|
||||
# packages installed.
|
||||
|
||||
|
||||
Write-Output "$(Get-TS): Adding package $LCU_PATH to WinRE"
|
||||
try
|
||||
{
|
||||
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $LCU_PATH | Out-Null
|
||||
}
|
||||
Catch
|
||||
@ -308,38 +298,36 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
$theError = $_
|
||||
Write-Output "$(Get-TS): $theError"
|
||||
|
||||
if ($theError.Exception -like "*0x8007007e*") {
|
||||
Write-Output "$(Get-TS): This failure is a known issue with combined cumulative update, we can ignore."
|
||||
if ($theError.Exception -like "*0x8007007e*")
|
||||
{
|
||||
Write-Warning "$(Get-TS): Failed with error 0x8007007e. This failure is a known issue with combined cumulative update, we can ignore."
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
throw
|
||||
}
|
||||
}
|
||||
|
||||
# The second approach for Step 1 is for Windows releases that have not adopted the combined cumulative update
|
||||
# but instead continue to have a seperate servicing stack update published. In this case, we'll install the SSU
|
||||
# update. This second approach is commented out below.
|
||||
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH"
|
||||
# Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
#
|
||||
# Optional: Add the language to recovery environment
|
||||
#
|
||||
|
||||
# Install lp.cab cab
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_OC_LP_PATH to WinRE"
|
||||
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") ) {
|
||||
|
||||
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) {
|
||||
if ($INDEX -ge 0)
|
||||
{
|
||||
$OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab"
|
||||
if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) {
|
||||
if ($WINPE_OC_LANG_CABS.Contains($OC_CAB))
|
||||
{
|
||||
$OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB
|
||||
Write-Output "$(Get-TS): Adding package $OC_CAB_PATH to WinRE"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null
|
||||
@ -349,15 +337,17 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
}
|
||||
|
||||
# Add font support for the new language
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) {
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) )
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH to WinRE"
|
||||
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) ) {
|
||||
|
||||
if (Test-Path -Path $WINPE_SPEECH_TTS_PATH)
|
||||
{
|
||||
if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) )
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH to WinRE"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
@ -373,6 +363,10 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
# Perform image cleanup
|
||||
Write-Output "$(Get-TS): Performing image cleanup on WinRE"
|
||||
DISM /image:$WINRE_MOUNT /cleanup-image /StartComponentCleanup /ResetBase /Defer | Out-Null
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
throw "Error: Failed to perform image cleanup on WinRE. Exit code: $LastExitCode"
|
||||
}
|
||||
|
||||
# Dismount
|
||||
Dismount-WindowsImage -Path $WINRE_MOUNT -Save -ErrorAction stop | Out-Null
|
||||
@ -389,35 +383,15 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
# update Main OS
|
||||
#
|
||||
|
||||
# Add servicing stack update (Step 18 from the table)
|
||||
|
||||
# Depending on the Windows release that you are updating, there are 2 different approaches for updating the servicing stack
|
||||
# The first approach is to use the combined cumulative update. This is for Windows releases that are shipping a combined cumulative update that
|
||||
# includes the servicing stack updates (i.e. SSU + LCU are combined). Windows 11, version 21H2 and Windows 11, version 22H2 are examples. In these
|
||||
# cases, the servicing stack update is not published seperately; the combined cumulative update should be used for this step. However, in hopefully
|
||||
# rare cases, there may breaking change in the combined cumulative update format, that requires a standalone servicing stack update to be published,
|
||||
# and installed first before the combined cumulative update can be installed.
|
||||
|
||||
# This is the code to handle the rare case that the SSU is published and required for the combined cumulative update
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH"
|
||||
# Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
# Now, attempt the combined cumulative update. Unlike WinRE and WinPE, we don't need to check for error 0x8007007e
|
||||
# Add servicing stack update (Step 17 from the table). Unlike WinRE and WinPE, we don't need to check for error 0x8007007e
|
||||
Write-Output "$(Get-TS): Adding package $LCU_PATH to main OS, index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH | Out-Null
|
||||
|
||||
# The second approach for Step 18 is for Windows releases that have not adopted the combined cumulative update
|
||||
# but instead continue to have a seperate servicing stack update published. In this case, we'll install the SSU
|
||||
# update. This second approach is commented out below.
|
||||
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH to main OS, index $($IMAGE.ImageIndex)"
|
||||
# Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
# Optional: Add language to main OS
|
||||
# Optional: Add language to main OS and corresponding language experience Features on Demand
|
||||
Write-Output "$(Get-TS): Adding package $OS_LP_PATH to main OS, index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $OS_LP_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Optional: Add a Features on Demand to the image
|
||||
Write-Output "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0 to main OS, index $($IMAGE.ImageIndex)"
|
||||
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
|
||||
|
||||
@ -436,22 +410,47 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
Write-Output "$(Get-TS): Adding language FOD: Language.Speech~~~$LANG~0.0.1.0 to main OS, index $($IMAGE.ImageIndex)"
|
||||
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, I'd add these here.
|
||||
# Optional: Add additional Features On Demand
|
||||
For ( $index = 0; $index -lt $FOD.count; $index++)#
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding $($FOD[$index]) to main OS, index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsCapability -Name $($FOD[$index]) -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
|
||||
# Optional: Add Legacy Features
|
||||
For ( $index = 0; $index -lt $OC.count; $index++)
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding $($OC[$index]) to main OS, index $($IMAGE.ImageIndex)"
|
||||
DISM /Image:$MAIN_OS_MOUNT /Enable-Feature /FeatureName:$($OC[$index]) /All | Out-Null
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
throw "Error: Failed to add $($OC[$index]) to main OS, index $($IMAGE.ImageIndex). Exit code: $LastExitCode"
|
||||
}
|
||||
}
|
||||
|
||||
# Add latest cumulative update
|
||||
Write-Output "$(Get-TS): Adding package $LCU_PATH to main OS, index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Perform image cleanup
|
||||
# Perform image cleanup. Some Optional Components might require the image to be booted, and thus
|
||||
# image cleanup may fail. We'll catch and handle as a warning.
|
||||
Write-Output "$(Get-TS): Performing image cleanup on main OS, index $($IMAGE.ImageIndex)"
|
||||
DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | Out-Null
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
if ($LastExitCode -eq -2146498554)
|
||||
{
|
||||
# We hit 0x800F0806 CBS_E_PENDING. We will ignore this with a warning
|
||||
# This is likely due to legacy components being added that require online operations.
|
||||
Write-Warning "$(Get-TS): Failed to perform image cleanup on main OS, index $($IMAGE.ImageIndex). Exit code: $LastExitCode. The operation cannot be performed until pending servicing operations are completed. The image must be booted to complete the pending servicing operation."
|
||||
}
|
||||
else
|
||||
{
|
||||
throw "Error: Failed to perform image cleanup on main OS, index $($IMAGE.ImageIndex). Exit code: $LastExitCode"
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# 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 might require
|
||||
# the image to be booted, and thus if we tried to cleanup after installation, it would fail.
|
||||
#
|
||||
|
||||
# Finally, we'll add .NET 3.5 and the .NET cumulative update
|
||||
Write-Output "$(Get-TS): Adding NetFX3~~~~ to main OS, index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsCapability -Name "NetFX3~~~~" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
@ -465,7 +464,6 @@ Foreach ($IMAGE in $WINOS_IMAGES) {
|
||||
# Export
|
||||
Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\install2.wim"
|
||||
Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH"\sources\install.wim" -SourceIndex $IMAGE.ImageIndex -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
|
||||
@ -474,7 +472,7 @@ Move-Item -Path $WORKING_PATH"\install2.wim" -Destination $MEDIA_NEW_PATH"\sourc
|
||||
|
||||
### 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, it adds 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. For the second image, we'll save setup.exe and setuphost.exe for later use, to ensure these versions matches the \sources\setup.exe and \sources\setuphost.exe version from the installation media. If these binaries aren't identical, Windows Setup will fail during installation. We'll also save the serviced boot manager files for later use in the script. Finally, the script 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, it adds 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. For the second image, we save setup.exe and setuphost.exe for later use, to ensure these versions matches the \sources\setup.exe and \sources\setuphost.exe version from the installation media. If these binaries aren't identical, Windows Setup will fail during installation. We'll also save the serviced boot manager files for later use in the script. Finally, the script cleans and exports Boot.wim, and copies it back to the new media.
|
||||
|
||||
```powershell
|
||||
#
|
||||
@ -484,31 +482,14 @@ This script is similar to the one that updates WinRE, but instead it mounts Boot
|
||||
# Get the list of images contained within WinPE
|
||||
$WINPE_IMAGES = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim"
|
||||
|
||||
Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
Foreach ($IMAGE in $WINPE_IMAGES)
|
||||
{
|
||||
|
||||
# update WinPE
|
||||
Write-Output "$(Get-TS): Mounting WinPE, image index $($IMAGE.ImageIndex)"
|
||||
Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -Index $IMAGE.ImageIndex -Path $WINPE_MOUNT -ErrorAction stop | Out-Null
|
||||
|
||||
# Add servicing stack update (Step 9 from the table)
|
||||
|
||||
# Depending on the Windows release that you are updating, there are 2 different approaches for updating the servicing stack
|
||||
# The first approach is to use the combined cumulative update. This is for Windows releases that are shipping a combined
|
||||
# cumulative update that includes the servicing stack updates (i.e. SSU + LCU are combined). Windows 11, version 21H2 and
|
||||
# Windows 11, version 22H2 are examples. In these cases, the servicing stack update is not published separately; the combined
|
||||
# cumulative update should be used for this step. However, in hopefully rare cases, there may breaking change in the combined
|
||||
# cumulative update format, that requires a standalone servicing stack update to be published, and installed first before the
|
||||
# combined cumulative update can be installed.
|
||||
|
||||
# This is the code to handle the rare case that the SSU is published and required for the combined cumulative update
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH"
|
||||
# Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
# Now, attempt the combined cumulative update.
|
||||
# There is a known issue where the servicing stack update is installed, but the cumulative update will fail.
|
||||
# This error should be caught and ignored, as the last step will be to apply the cumulative update
|
||||
# (or in this case the combined cumulative update) and thus the image will be left with the correct packages installed.
|
||||
|
||||
try
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding package $LCU_PATH to WinPE, image index $($IMAGE.ImageIndex)"
|
||||
@ -518,38 +499,34 @@ Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
{
|
||||
$theError = $_
|
||||
Write-Output "$(Get-TS): $theError"
|
||||
|
||||
if ($theError.Exception -like "*0x8007007e*") {
|
||||
Write-Output "$(Get-TS): This failure is a known issue with combined cumulative update, we can ignore."
|
||||
if ($theError.Exception -like "*0x8007007e*")
|
||||
{
|
||||
Write-Warning "$(Get-TS): Failed with error 0x8007007e. This failure is a known issue with combined cumulative update, we can ignore."
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
throw
|
||||
}
|
||||
}
|
||||
|
||||
# The second approach for Step 9 is for Windows releases that have not adopted the combined cumulative update
|
||||
# but instead continue to have a separate servicing stack update published. In this case, we'll install the SSU
|
||||
# update. This second approach is commented out below.
|
||||
|
||||
# Write-Output "$(Get-TS): Adding package $SSU_PATH"
|
||||
# Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH | Out-Null
|
||||
|
||||
# Install lp.cab cab
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_OC_LP_PATH to WinPE, image index $($IMAGE.ImageIndex)"
|
||||
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") ) {
|
||||
|
||||
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) {
|
||||
|
||||
if ($INDEX -ge 0)
|
||||
{
|
||||
$OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab"
|
||||
if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) {
|
||||
if ($WINPE_OC_LANG_CABS.Contains($OC_CAB))
|
||||
{
|
||||
$OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB
|
||||
|
||||
Write-Output "$(Get-TS): Adding package $OC_CAB_PATH to WinPE, image index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
@ -558,15 +535,17 @@ Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
}
|
||||
|
||||
# Add font support for the new language
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) {
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) )
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH to WinPE, image index $($IMAGE.ImageIndex)"
|
||||
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) ) {
|
||||
|
||||
if (Test-Path -Path $WINPE_SPEECH_TTS_PATH)
|
||||
{
|
||||
if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) )
|
||||
{
|
||||
Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH to WinPE, image index $($IMAGE.ImageIndex)"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
@ -576,9 +555,14 @@ Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
}
|
||||
|
||||
# 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") ) {
|
||||
if ( (Test-Path -Path $WINPE_MOUNT"\sources\lang.ini") )
|
||||
{
|
||||
Write-Output "$(Get-TS): Updating lang.ini"
|
||||
DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
throw "Error: Failed to update lang.ini. Exit code: $LastExitCode"
|
||||
}
|
||||
}
|
||||
|
||||
# Add latest cumulative update
|
||||
@ -588,28 +572,31 @@ Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
# Perform image cleanup
|
||||
Write-Output "$(Get-TS): Performing image cleanup on WinPE, image index $($IMAGE.ImageIndex)"
|
||||
DISM /image:$WINPE_MOUNT /cleanup-image /StartComponentCleanup /ResetBase /Defer | Out-Null
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
throw "Error: Failed to perform image cleanup on WinPE, image index $($IMAGE.ImageIndex). Exit code: $LastExitCode"
|
||||
}
|
||||
|
||||
if ($IMAGE.ImageIndex -eq "2") {
|
||||
|
||||
if ($IMAGE.ImageIndex -eq "2")
|
||||
{
|
||||
# Save setup.exe for later use. This will address possible binary mismatch with the version in the main OS \sources folder
|
||||
Copy-Item -Path $WINPE_MOUNT"\sources\setup.exe" -Destination $WORKING_PATH"\setup.exe" -Force -ErrorAction stop | Out-Null
|
||||
|
||||
# Save setuphost.exe for later use. This will address possible binary mismatch with the version in the main OS \sources folder
|
||||
# This is only required starting with Windows 11 version 24H2
|
||||
$TEMP = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -Index $IMAGE.ImageIndex
|
||||
if ([System.Version]$TEMP.Version -ge [System.Version]"10.0.26100") {
|
||||
|
||||
if ([System.Version]$TEMP.Version -ge [System.Version]"10.0.26100")
|
||||
{
|
||||
Copy-Item -Path $WINPE_MOUNT"\sources\setuphost.exe" -Destination $WORKING_PATH"\setuphost.exe" -Force -ErrorAction stop | Out-Null
|
||||
}
|
||||
else {
|
||||
|
||||
else
|
||||
{
|
||||
Write-Output "$(Get-TS): Skipping copy of setuphost.exe; image version $($TEMP.Version)"
|
||||
}
|
||||
|
||||
# Save serviced boot manager files later copy to the root media.
|
||||
Copy-Item -Path $WINPE_MOUNT"\Windows\boot\efi\bootmgfw.efi" -Destination $WORKING_PATH"\bootmgfw.efi" -Force -ErrorAction stop | Out-Null
|
||||
Copy-Item -Path $WINPE_MOUNT"\Windows\boot\efi\bootmgr.efi" -Destination $WORKING_PATH"\bootmgr.efi" -Force -ErrorAction stop | Out-Null
|
||||
|
||||
}
|
||||
|
||||
# Dismount
|
||||
@ -618,15 +605,15 @@ Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
#Export WinPE
|
||||
Write-Output "$(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 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 in updated Setup files as needed, along with the latest compatibility database, and replacement component manifests. This script also does a final replacement of setup.exe, setuphost.exe and boot manager files using the previously saved versions from WinPE.
|
||||
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 in updated Setup files as needed, along with the latest compatibility database, and replacement component manifests. This script also does a final replacement of setup.exe, setuphost.exe, and boot manager files using the previously saved versions from WinPE.
|
||||
|
||||
```powershell
|
||||
#
|
||||
@ -636,14 +623,18 @@ This part of the script updates the Setup files. It simply copies the individual
|
||||
# Add Setup DU by copy the files from the package into the newMedia
|
||||
Write-Output "$(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
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
throw "Error: Failed to expand $SETUP_DU_PATH. Exit code: $LastExitCode"
|
||||
}
|
||||
|
||||
# Copy setup.exe from boot.wim, saved earlier.
|
||||
Write-Output "$(Get-TS): Copying $WORKING_PATH\setup.exe to $MEDIA_NEW_PATH\sources\setup.exe"
|
||||
Copy-Item -Path $WORKING_PATH"\setup.exe" -Destination $MEDIA_NEW_PATH"\sources\setup.exe" -Force -ErrorAction stop | Out-Null
|
||||
|
||||
# Copy setuphost.exe from boot.wim, saved earlier.
|
||||
if (Test-Path -Path $WORKING_PATH"\setuphost.exe") {
|
||||
|
||||
if (Test-Path -Path $WORKING_PATH"\setuphost.exe")
|
||||
{
|
||||
Write-Output "$(Get-TS): Copying $WORKING_PATH\setuphost.exe to $MEDIA_NEW_PATH\sources\setuphost.exe"
|
||||
Copy-Item -Path $WORKING_PATH"\setuphost.exe" -Destination $MEDIA_NEW_PATH"\sources\setuphost.exe" -Force -ErrorAction stop | Out-Null
|
||||
}
|
||||
@ -651,16 +642,15 @@ if (Test-Path -Path $WORKING_PATH"\setuphost.exe") {
|
||||
# Copy bootmgr files from boot.wim, saved earlier.
|
||||
$MEDIA_NEW_FILES = Get-ChildItem $MEDIA_NEW_PATH -Force -Recurse -Filter b*.efi
|
||||
|
||||
Foreach ($File in $MEDIA_NEW_FILES){
|
||||
Foreach ($File in $MEDIA_NEW_FILES)
|
||||
{
|
||||
if (($File.Name -ieq "bootmgfw.efi") -or ($File.Name -ieq "bootx64.efi") -or ($File.Name -ieq "bootia32.efi") -or ($File.Name -ieq "bootaa64.efi"))
|
||||
{
|
||||
|
||||
Write-Output "$(Get-TS): Copying $WORKING_PATH\bootmgfw.efi to $($File.FullName)"
|
||||
Copy-Item -Path $WORKING_PATH"\bootmgfw.efi" -Destination $File.FullName -Force -ErrorAction stop | Out-Null
|
||||
}
|
||||
elseif ($File.Name -ieq "bootmgr.efi")
|
||||
{
|
||||
|
||||
Write-Output "$(Get-TS): Copying $WORKING_PATH\bootmgr.efi to $($File.FullName)"
|
||||
Copy-Item -Path $WORKING_PATH"\bootmgr.efi" -Destination $File.FullName -Force -ErrorAction stop | Out-Null
|
||||
}
|
||||
@ -685,4 +675,5 @@ Write-Output "$(Get-TS): Dismounting ISO images"
|
||||
Dismount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Output "$(Get-TS): Media refresh completed!"
|
||||
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Update release cycle for Windows clients
|
||||
description: Learn about the release cycle for updates so Windows clients in your organization stay productive and protected.
|
||||
description: Learn about the release cycle for updates so Windows clients in your organization stay productive and protected.
|
||||
ms.service: windows-client
|
||||
ms.subservice: itpro-updates
|
||||
ms.topic: conceptual
|
||||
@ -11,7 +11,7 @@ ms.localizationpriority: medium
|
||||
appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
ms.date: 06/04/2024
|
||||
ms.date: 01/31/2025
|
||||
---
|
||||
|
||||
# Update release cycle for Windows clients
|
||||
@ -54,6 +54,9 @@ Monthly security update releases are available through the following channels:
|
||||
|
||||
Many update management tools, such as [Microsoft Configuration Manager](/mem/configmgr/) and [Microsoft Intune](/mem/intune/), rely on these channels for update deployment.
|
||||
|
||||
<!--Using include for checkpoint cumulative updates-->
|
||||
[!INCLUDE [Checkpoint cumulative updates](./includes/checkpoint-cumulative-updates.md)]
|
||||
|
||||
## Optional nonsecurity preview release
|
||||
|
||||
**Optional nonsecurity preview releases** provide IT admins an opportunity for early validation of that content prior to the **monthly security update release**. Admins can test and validate production-quality releases ahead of the planned monthly security update release for the following month. These updates are optional, cumulative, nonsecurity preview releases. New features might initially be deployed in the prior month's **optional nonsecurity preview release**, then ship in the following **monthly security update release**. **Optional nonsecurity preview releases** are typically released on the fourth Tuesday of the month at 10:00 AM Pacific Time (PST/PDT). These releases are only offered to the most recent, supported versions of Windows.
|
||||
@ -66,10 +69,14 @@ Many update management tools, such as [Microsoft Configuration Manager](/mem/con
|
||||
- LCU preview
|
||||
|
||||
To access the optional nonsecurity preview release:
|
||||
- Navigate to **Settings** > **Update & Security** > **Windows Update** and select **Check for updates**.
|
||||
- Navigate to **Settings** > **Update & Security** > **Windows Update** and select **Check for updates**.
|
||||
- Use [Windows Insider Program for Business](https://insider.windows.com/for-business)
|
||||
- Use the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx).
|
||||
|
||||
<!--Using include for checkpoint cumulative updates-->
|
||||
[!INCLUDE [Checkpoint cumulative updates](./includes/checkpoint-cumulative-updates.md)]
|
||||
|
||||
|
||||
## OOB releases
|
||||
|
||||
**Out-of-band (OOB) releases** might be provided to fix a recently identified issue or vulnerability. They're used in atypical cases when an issue is detected and can't wait for the next monthly release, because devices must be updated immediately to address security vulnerabilities or to resolve a quality issue impacting many devices. **Out-of-band (OOB) releases** are provided outside of the monthly schedule when there's an exceptional need.
|
||||
@ -83,6 +90,9 @@ Some key considerations about OOB releases include:
|
||||
- Critical OOB releases are automatically available to WSUS and Windows Update client policies, just like the monthly security update releases.
|
||||
- Some OOB releases are classified as noncritical.
|
||||
- Noncritical releases only go to the Microsoft Update Catalog for users or organizations to voluntarily obtain the update.
|
||||
|
||||
<!--Using include for checkpoint cumulative updates-->
|
||||
[!INCLUDE [Checkpoint cumulative updates](./includes/checkpoint-cumulative-updates.md)]
|
||||
|
||||
## Continuous innovation for Windows 11
|
||||
|
||||
|
@ -15,48 +15,31 @@ appliesto:
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 11</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Windows 10</a>
|
||||
- ✅ <a href=https://learn.microsoft.com/windows/release-health/windows-server-release-info target=_blank>Windows Server </a>
|
||||
ms.date: 12/08/2023
|
||||
ms.date: 1/22/2025
|
||||
---
|
||||
|
||||
# Servicing stack updates
|
||||
|
||||
## What is a servicing stack update?
|
||||
|
||||
Servicing stack updates provide fixes to the servicing stack, the component that installs Windows updates. Additionally, it contains the component-based servicing stack (CBS), which is a key underlying component for several elements of Windows deployment, such as DISM, SFC, changing Windows features or roles, and repairing components. [CBS](https://techcommunity.microsoft.com/t5/ask-the-performance-team/understanding-component-based-servicing/ba-p/373012) is a small component that typically doesn't have updates released every month.
|
||||
Servicing stack updates provide fixes to the servicing stack, the component that installs Windows updates. Additionally, it contains the component-based servicing stack (CBS), which is a key underlying component for several elements of Windows deployment, such as:
|
||||
|
||||
## Why should servicing stack updates be installed and kept up to date?
|
||||
|
||||
Servicing stack updates improve the reliability of the update process to mitigate potential issues while installing the latest quality updates and feature updates. If you don't have the latest servicing stack update installed, there's a risk that your device can't be updated with the latest Microsoft security fixes.
|
||||
- Deployment Image Servicing and Management (DISM)
|
||||
- System File Checker (SFC)
|
||||
- Changing Windows features or roles
|
||||
- Component repair
|
||||
|
||||
## When are they released?
|
||||
|
||||
Servicing stack update are released depending on new issues or vulnerabilities. In rare occasions, a servicing stack update might need to be released out of band to address an issue impacting systems installing the monthly security update. New servicing stack updates are classified as `Security` with a severity rating of `Critical`.
|
||||
[CBS](https://techcommunity.microsoft.com/t5/ask-the-performance-team/understanding-component-based-servicing/ba-p/373012) is a small component that typically doesn't have updates released every month.
|
||||
|
||||
|
||||
## What's the difference between a servicing stack update and a cumulative update?
|
||||
|
||||
Both Windows client and Windows Server use the cumulative update mechanism, in which many fixes to improve the quality and security of Windows are packaged into a single update. Each cumulative update includes the changes and fixes from all previous updates.
|
||||
Both Windows client and Windows Server use the cumulative update mechanism, in which many fixes to improve the quality and security of Windows are packaged into a single update. Each cumulative update includes the changes and fixes from all previous updates. A servicing stack update improves the reliability of the update process to mitigate potential issues while installing the latest monthly security update release and feature updates.
|
||||
|
||||
Servicing stack updates improve the reliability of the update process to mitigate potential issues while installing the latest monthly security update release and feature updates. If you don't install the latest servicing stack update, there's a risk that your device can't be updated with the latest Microsoft security fixes.
|
||||
|
||||
Microsoft publishes all cumulative updates and servicing stack updates for Windows 10, version 2004 and later together as one cumulative monthly update to the normal release category in Windows Server Update Services (WSUS).
|
||||
|
||||
## Is there any special guidance?
|
||||
|
||||
Typically, the improvements are reliability and performance improvements that don't require any specific special guidance. If there's any significant impact, it will be present in the release notes.
|
||||
|
||||
Most users don't need to install an isolated servicing stack update. In the rare case that you need to install an isolated servicing stack update, Microsoft recommends you install the latest servicing stack updates for your operating system before installing the latest cumulative update.
|
||||
|
||||
## Installation notes
|
||||
|
||||
* Servicing stack updates contain the full servicing stack; as a result, typically administrators only need to install the latest servicing stack update for the operating system.
|
||||
* Installing servicing stack update doesn't require restarting the device, so installation shouldn't be disruptive.
|
||||
* Servicing stack update releases are specific to the operating system version (build number), much like quality updates.
|
||||
* Servicing stack updates can be delivered with Windows Update, or you can perform a search to install the latest available at [Servicing stack update for Windows 10](https://portal.msrc.microsoft.com/security-guidance/advisory/ADV990001).
|
||||
* Once a servicing stack update is installed, it can't be removed or uninstalled from the machine.
|
||||
|
||||
## Simplifying on-premises deployment of servicing stack updates
|
||||
|
||||
With the Windows Update experience, servicing stack updates and cumulative updates are deployed together to the device. The update stack automatically orchestrates the installation, so both are applied correctly. Starting in February 2021, the cumulative update includes the latest servicing stack updates, to provide a single cumulative update payload to both WSUS and the Microsoft Update Catalog. If you use an endpoint management tool backed by WSUS, such as Configuration Manager, you'll only have to select and deploy the monthly cumulative update. The latest servicing stack updates will automatically be applied correctly. Release notes and file information for cumulative updates, including those related to the servicing stack, will be in a single KB article. The combined monthly cumulative update is available on Windows 10, version 2004 and later starting with [KB4601382](https://support.microsoft.com/kb/4601382), released in February of 2021.
|
||||
Starting in February 2021, the cumulative update includes the latest servicing stack updates, providing a single combined cumulative update payload for Windows Update, Windows Server Update Services (WSUS), and the Microsoft Update Catalog. This combined monthly cumulative update is available on Windows 10, version 2004 and later starting with [KB4601382](https://support.microsoft.com/kb/4601382). If you use an endpoint management tool backed by WSUS, such as Configuration Manager, you only have to select and deploy the monthly cumulative update. The latest servicing stack updates are automatically applied correctly. Release notes and file information for cumulative updates, including notes and information related to the servicing stack, are in a single KB article.
|
||||
|
||||
|
||||
## When are they released?
|
||||
|
||||
Changes in the servicing stack are developed and released as part of the monthly cumulative update depending on new issues or vulnerabilities. In rare occasions, a prerequisite servicing stack update might need to be released out of band to address an issue impacting systems installing the monthly cumulative update. Out of band servicing stack updates are classified as Security with a severity rating of Critical.
|
||||
|
||||
|
@ -11,7 +11,7 @@ ms.collection:
|
||||
- highpri
|
||||
- tier2
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
@ -51,13 +51,13 @@ A `setupact.log` or `setuperr.log` entry includes the following elements:
|
||||
|
||||
1. **The date and time** - 2023-09-08 09:20:05
|
||||
|
||||
1. **The log level** - Info, Warning, Error, Fatal Error
|
||||
2. **The log level** - Info, Warning, Error, Fatal Error
|
||||
|
||||
1. **The logging component** - CONX, MOUPG, PANTHR, SP, IBSLIB, MIG, DISM, CSI, CBS
|
||||
|
||||
3. **The logging component** - CONX, MOUPG, PANTHR, SP, IBSLIB, MIG, DISM, CSI, CBS
|
||||
|
||||
|
||||
1. **The message** - Operation completed successfully.
|
||||
The logging components SP (setup platform), MIG (migration engine), and CONX (compatibility information) are useful for troubleshooting Windows Setup errors.
|
||||
|
||||
4. **The message** - Operation completed successfully.
|
||||
|
||||
|
@ -8,7 +8,7 @@ ms.localizationpriority: medium
|
||||
ms.topic: conceptual
|
||||
ms.service: windows-client
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
|
@ -12,7 +12,7 @@ ms.topic: troubleshooting
|
||||
ms.collection:
|
||||
- highpri
|
||||
- tier2
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
@ -479,7 +479,7 @@ Refer to "https://learn.microsoft.com/windows/desktop/Debug/system-error-codes"
|
||||
"FailureDetails":"Err = 0x00000057, LastOperation = Gather data, scope: EVERYTHING, LastPhase = Downlevel",
|
||||
"DeviceDriverInfo":null,
|
||||
"Remediation":[
|
||||
|
||||
|
||||
],
|
||||
"SetupPhaseInfo":null,
|
||||
"SetupOperationInfo":null
|
||||
|
@ -8,7 +8,7 @@ author: frankroj
|
||||
ms.localizationpriority: medium
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
|
@ -8,7 +8,7 @@ author: frankroj
|
||||
ms.localizationpriority: medium
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
@ -18,7 +18,7 @@ appliesto:
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> This article is a 300 level article (moderately advanced).
|
||||
> This article is a 300 level article (moderately advanced).
|
||||
>
|
||||
> See [Resolve Windows upgrade errors](resolve-windows-upgrade-errors.md) for a full list of articles in this section.
|
||||
|
||||
|
@ -11,7 +11,7 @@ ms.collection:
|
||||
- highpri
|
||||
- tier2
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 02/13/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
|
@ -8,7 +8,7 @@ ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 08/30/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 08/30/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -50,7 +50,7 @@ For exceptions to what can be migrated offline, see [What Does USMT Migrate?](us
|
||||
|
||||
## What offline environments are supported?
|
||||
|
||||
All currently supported
|
||||
All currently supported
|
||||
|
||||
The following table defines the supported combination of online and offline operating systems in USMT.
|
||||
|
||||
@ -183,9 +183,9 @@ The following XML example illustrates some of the elements discussed earlier in
|
||||
```xml
|
||||
<offline>
|
||||
<winDir>
|
||||
<path>C:\Windows</path>
|
||||
<path>D:\Windows</path>
|
||||
<path>E:\</path>
|
||||
<path>C:\Windows</path>
|
||||
<path>D:\Windows</path>
|
||||
<path>E:\</path>
|
||||
</winDir>
|
||||
<failOnMultipleWinDir>1</failOnMultipleWinDir>
|
||||
</offline>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -496,7 +496,7 @@ The following sample `Config.xml` file contains detailed examples about items th
|
||||
</changeGroup>
|
||||
</mappings>
|
||||
</localGroups>
|
||||
|
||||
|
||||
-->
|
||||
</ProfileControl>
|
||||
</Configuration>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -79,7 +79,7 @@ Specifying `migrate="no"` in the `Config.xml` file is the same as deleting the c
|
||||
<objectSet>
|
||||
<pattern type="File">%CSIDL_PERSONAL%\* [*.doc] </pattern>
|
||||
</objectSet>
|
||||
</include>
|
||||
</include>
|
||||
```
|
||||
|
||||
### How does USMT process each component in an .xml file with multiple components?
|
||||
@ -116,7 +116,7 @@ In the following example, mp3 files aren't excluded from the migration. The mp3
|
||||
<objectSet>
|
||||
<pattern type="File"> C:\* [*.mp3]</pattern>
|
||||
</objectSet>
|
||||
</exclude>
|
||||
</exclude>
|
||||
```
|
||||
|
||||
### \<include\> and \<exclude\> rules precedence examples
|
||||
@ -185,11 +185,11 @@ The destination computer contains the following files:
|
||||
A custom **.xml** file contains the following code:
|
||||
|
||||
```xml
|
||||
<include>
|
||||
<objectSet>
|
||||
<pattern type="File">c:\data\* [*]</pattern>
|
||||
</objectSet>
|
||||
</include>
|
||||
<include>
|
||||
<objectSet>
|
||||
<pattern type="File">c:\data\* [*]</pattern>
|
||||
</objectSet>
|
||||
</include>
|
||||
```
|
||||
|
||||
For this example, the following information describes the resulting behavior if the code is added to the custom **.xml** file.
|
||||
|
@ -8,7 +8,7 @@ ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
@ -120,7 +120,7 @@ The following sample is a custom **.xml** file named `CustomFile.xml` that migra
|
||||
<component type="Documents" context="User">
|
||||
<displayName>My Video</displayName>
|
||||
<role role="Data">
|
||||
<detects>
|
||||
<detects>
|
||||
<detect>
|
||||
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
|
||||
</detect>
|
||||
@ -251,8 +251,8 @@ The behavior for this custom **.xml** file is described within the `<displayName
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("\Requests\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("*\Requests\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("\Requests\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("*\Requests\* [*] ", "Fixed")</script>
|
||||
</objectSet>
|
||||
</include>
|
||||
</rules>
|
||||
@ -264,7 +264,7 @@ The behavior for this custom **.xml** file is described within the `<displayName
|
||||
<role role="Data">
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<objectSet>
|
||||
<pattern type="File"> C:\*\Presentations\* [*]</pattern>
|
||||
<pattern type="File"> C:\Presentations\* [*]</pattern>
|
||||
</objectSet>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -11,12 +11,12 @@ metadata:
|
||||
ms.mktglfcycl: deploy
|
||||
ms.sitesec: library
|
||||
audience: itpro
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: faq
|
||||
title: Frequently Asked Questions
|
||||
summary: |
|
||||
**Applies to:**
|
||||
|
||||
|
||||
- Windows 11
|
||||
- Windows 10
|
||||
|
||||
@ -30,13 +30,13 @@ sections:
|
||||
How much space is needed on the destination computer?
|
||||
answer: |
|
||||
The destination computer needs enough available space for the following items:
|
||||
|
||||
|
||||
- Operating system
|
||||
|
||||
|
||||
- Applications
|
||||
|
||||
|
||||
- Uncompressed store
|
||||
|
||||
|
||||
- question: |
|
||||
Can the files and settings be stored directly on the destination computer or is a server needed?
|
||||
answer: |
|
||||
@ -47,13 +47,13 @@ sections:
|
||||
- Directly on the destination computer.
|
||||
|
||||
To store it directly on the destination computer:
|
||||
|
||||
|
||||
1. Create and share the directory `C:\store` on the destination computer.
|
||||
|
||||
|
||||
1. Run the **ScanState** tool on the source computer and save the files and settings to `\\<DestinationComputerName>\store`
|
||||
|
||||
|
||||
1. Run the **LoadState** tool on the destination computer and specify `C:\store` as the store location.
|
||||
|
||||
|
||||
- question: |
|
||||
Can data be migrated between operating systems with different languages?
|
||||
answer: |
|
||||
@ -80,7 +80,7 @@ sections:
|
||||
How can a folder or a certain type of file be excluded from the migration?
|
||||
answer: |
|
||||
The **\<unconditionalExclude\>** element can be used to globally exclude data from the migration. For example, this element can be used to exclude all MP3 files on the computer or to exclude all files from `C:\UserData`. This element excludes objects regardless of any other **\<include\>** rules that are in the **.xml** files. For an example, see **\<unconditionalExclude\>** in the [Exclude files and settings](usmt-exclude-files-and-settings.md) article. For the syntax of this element, see [XML elements library](usmt-xml-elements-library.md).
|
||||
|
||||
|
||||
- question: |
|
||||
What happens to files that were located on a drive that don't exist on the destination computer?
|
||||
answer: |
|
||||
@ -91,22 +91,22 @@ sections:
|
||||
- C:\\ is the system drive on the destination computer.
|
||||
|
||||
the file is migrated to `C:\data\File.pst`. This behavior holds true even when **\<locationModify\>** rules attempt to move data to a drive that doesn't exist on the destination computer.
|
||||
|
||||
|
||||
- name: USMT .xml Files
|
||||
questions:
|
||||
- question: |
|
||||
Where are there examples of USMT **.xml** files?
|
||||
answer: |
|
||||
The following articles include examples of USMT **.xml** files:
|
||||
|
||||
|
||||
- [Exclude files and settings](usmt-exclude-files-and-settings.md)
|
||||
|
||||
|
||||
- [Reroute files and settings](usmt-reroute-files-and-settings.md)
|
||||
|
||||
|
||||
- [Include files and settings](usmt-include-files-and-settings.md)
|
||||
|
||||
|
||||
- [Custom XML examples](usmt-custom-xml-examples.md)
|
||||
|
||||
|
||||
- question: |
|
||||
Can custom **.xml** files that were written for USMT 5.0 be used?
|
||||
answer: |
|
||||
@ -121,9 +121,9 @@ sections:
|
||||
Why must the **.xml** files be included with both the `ScanState.exe` and `LoadState.exe` commands?
|
||||
answer: |
|
||||
The **.xml** files aren't copied to the store as in previous versions of USMT. Because the **ScanState** and **LoadState** tools need the **.xml** files to control the migration, the same set of **.xml** files must be specified for the `ScanState.exe` and `LoadState.exe` commands. If a particular set of mig\*.xml files were used in the **ScanState** tool, either called through the `/auto` option, or individually through the `/i` option, then the same option should be used to call the exact same mig\*.xml files in the **LoadState** tool. However, the `Config.xml` file doesn't need to be specified, unless files and settings that were migrated to the store need to be excluded. For example, the **Documents** folder might be migrated to the store, but not to the destination computer. To do this type of migration, modify the `Config.xml` file and specify the updated file with the `LoadState.exe` command. **LoadState** migrates only the desired files and settings.
|
||||
|
||||
|
||||
If an **.xml** file is excluded from the `LoadState.exe` command, then all of the data in the store that was migrated with the missing **.xml** files are migrated. However, the migration rules that were specified for the `ScanState.exe` command don't apply. For example, if a `MigApp.xml` file that has a rerouting rule such as `MigsysHelperFunction.RelativeMove("c:\data", "%CSIDL_PERSONAL%")` is excluded, USMT doesn't reroute the files. Instead, it migrates them to `C:\data`.
|
||||
|
||||
|
||||
- question: |
|
||||
Which files can be modified and specified on the command line?
|
||||
answer: |
|
||||
@ -133,20 +133,20 @@ sections:
|
||||
What happens if the **.xml** files aren't specified on the command line?
|
||||
answer: |
|
||||
- **ScanState**
|
||||
|
||||
|
||||
If no files are specified with the `ScanState.exe` command, all user accounts and default operating system components are migrated.
|
||||
|
||||
|
||||
- **LoadState**
|
||||
|
||||
|
||||
If no files are specified with the `LoadState.exe` command, all data that is in the store is migrated. However, any target-specific migration rules that were specified in **.xml** files with the `ScanState.exe` command doesn't apply. For example, if a `MigApp.xml` file that has a rerouting rule such as `MigsysHelperFunction.RelativeMove("c:\data", "%CSIDL_PERSONAL%")` is excluded, USMT doesn't reroute the files. Instead, it migrates them to `C:\data`.
|
||||
|
||||
|
||||
- name: Conflicts and Precedence
|
||||
questions:
|
||||
- question: |
|
||||
What happens when there are conflicting XML rules or conflicting objects on the destination computer?
|
||||
answer: |
|
||||
For more information, see [Conflicts and precedence](usmt-conflicts-and-precedence.md).
|
||||
|
||||
|
||||
|
||||
additionalContent: |
|
||||
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -73,21 +73,21 @@ The XML helper functions in the [XML elements library](usmt-xml-elements-library
|
||||
The encoded location is composed of the node part, optionally followed by the leaf enclosed in square brackets. This format makes a clear distinction between nodes and leaves.
|
||||
|
||||
For example, specify the file
|
||||
|
||||
|
||||
`C:\Windows\Notepad.exe`
|
||||
|
||||
|
||||
as
|
||||
|
||||
|
||||
**c:\\Windows\[Notepad.exe\]**
|
||||
|
||||
|
||||
Similarly, specify the directory
|
||||
|
||||
|
||||
`C:\Windows\System32`
|
||||
|
||||
|
||||
as
|
||||
|
||||
|
||||
**c:\\Windows\\System32**
|
||||
|
||||
|
||||
Note the absence of the **\[\]** characters in second example.
|
||||
|
||||
The registry is represented in a similar way. The default value of a registry key is represented as an empty **\[\]** construct. For example, the default value for the `HKLM\SOFTWARE\MyKey` registry key is **HKLM\\SOFTWARE\\MyKey\[\]**.
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -8,7 +8,7 @@ ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
@ -33,7 +33,7 @@ When the **ScanState** tool runs on the source computer, it goes through the fol
|
||||
There are three types of components:
|
||||
|
||||
- Components that migrate the operating system settings.
|
||||
|
||||
|
||||
- Components that migrate application settings.
|
||||
|
||||
- Components that migrate users' files.
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -9,7 +9,7 @@ author: frankroj
|
||||
ms.topic: conceptual
|
||||
ms.localizationpriority: medium
|
||||
ms.subservice: itpro-deploy
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
appliesto:
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 11</a>
|
||||
- ✅ <a href="https://learn.microsoft.com/windows/release-health/supported-versions-windows-client" target="_blank">Windows 10</a>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -25,12 +25,12 @@ The following **.xml** file migrates a single registry key.
|
||||
```xml
|
||||
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
|
||||
<component type="Application" context="System">
|
||||
<displayName>Component to migrate only registry value string</displayName>
|
||||
<displayName>Component to migrate only registry value string</displayName>
|
||||
<role role="Settings">
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
|
||||
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
|
||||
</objectSet>
|
||||
</include>
|
||||
</rules>
|
||||
@ -95,8 +95,8 @@ The following **.xml** file migrates all files and subfolders of the `Engineerin
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("\EngineeringDrafts\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("*\EngineeringDrafts\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("\EngineeringDrafts\* [*] ", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("*\EngineeringDrafts\* [*] ", "Fixed")</script>
|
||||
</objectSet>
|
||||
</include>
|
||||
</rules>
|
||||
@ -114,7 +114,7 @@ The following **.xml** file migrates all files and subfolders of the `Engineerin
|
||||
<role role="Data">
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<objectSet>
|
||||
<pattern type="File"> C:\*\EngineeringDrafts\* [*]</pattern>
|
||||
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
|
||||
</objectSet>
|
||||
@ -149,7 +149,7 @@ The following **.xml** file migrates `.mp3` files located in the specified drive
|
||||
</rules>
|
||||
</role>
|
||||
</component>
|
||||
</migration>
|
||||
</migration>
|
||||
```
|
||||
|
||||
## Migrate a specific file
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 04/30/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -7,7 +7,7 @@ author: frankroj
|
||||
ms.reviewer: kevinmi,warrenw
|
||||
manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: overview
|
||||
ms.collection:
|
||||
- highpri
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -7,7 +7,7 @@ ms.reviewer: kevinmi,warrenw
|
||||
manager: aaroncz
|
||||
ms.author: frankroj
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.collection:
|
||||
- highpri
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 04/30/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -70,7 +70,7 @@ The following custom **.xml** file reroutes **.mp3** files located in the fixed
|
||||
</rules>
|
||||
</role>
|
||||
</component>
|
||||
</migration>
|
||||
</migration>
|
||||
```
|
||||
|
||||
## Reroute a specific file
|
||||
@ -83,8 +83,8 @@ The following custom **.xml** file migrates the `Sample.doc` file from `C:\Engin
|
||||
<displayName>Sample.doc into the Documents folder</displayName>
|
||||
<role role="Data">
|
||||
<rules>
|
||||
<include>
|
||||
<objectSet>
|
||||
<include>
|
||||
<objectSet>
|
||||
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
|
||||
</objectSet>
|
||||
</include>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -23,7 +23,7 @@ appliesto:
|
||||
- Microsoft Visual Studio
|
||||
|
||||
- The User State Migration Tool (USMT) XML schema (the `MigXML.xsd` file) can be used to validate the migration **.xml** files using an XML authoring tool such as Microsoft Visual Studio.
|
||||
|
||||
|
||||
For more information about how to use the schema with an XML authoring environment, see the environment's documentation.
|
||||
|
||||
- [Ask the Directory Services Team blog](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/bg-p/AskDS).
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 04/30/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/18/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
@ -95,7 +95,7 @@ The following example is from the `MigApp.xml` file:
|
||||
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
|
||||
<attributes>DWORD</attributes>
|
||||
<bytes>00000000</bytes>
|
||||
</object>
|
||||
</object>
|
||||
```
|
||||
|
||||
## \<bytes\>
|
||||
@ -127,7 +127,7 @@ The following example is from the `MigApp.xml` file:
|
||||
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
|
||||
<attributes>DWORD</attributes>
|
||||
<bytes>00000000</bytes>
|
||||
</object>
|
||||
</object>
|
||||
```
|
||||
|
||||
## \<commandLine\>
|
||||
@ -1070,10 +1070,10 @@ Example:
|
||||
</externalProcess>
|
||||
</rules>
|
||||
</role>
|
||||
<!-- Migrate
|
||||
<!-- Migrate
|
||||
all doc files from the system
|
||||
all power point files
|
||||
all visio design files
|
||||
all visio design files
|
||||
all my c++ program files -->
|
||||
<extensions>
|
||||
<extension>DOC</extension>
|
||||
@ -1126,18 +1126,18 @@ Syntax:
|
||||
For example, to migrate all \*.doc files from the source computer, specifying the following code under the **\<component\>** element:
|
||||
|
||||
```xml
|
||||
<extensions>
|
||||
<extension>doc</extension>
|
||||
<extensions>
|
||||
<extensions>
|
||||
<extension>doc</extension>
|
||||
<extensions>
|
||||
```
|
||||
|
||||
is the same as specifying the following code below the **\<rules\>** element:
|
||||
|
||||
```xml
|
||||
<include>
|
||||
<objectSet>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
|
||||
</objectSet>
|
||||
<include>
|
||||
<objectSet>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
|
||||
</objectSet>
|
||||
</include>
|
||||
```
|
||||
|
||||
@ -1202,7 +1202,7 @@ The following example is from the `MigUser.xml` file:
|
||||
<path type="File">%CSIDL_MYVIDEO%</path>
|
||||
</paths>
|
||||
<role role="Data">
|
||||
<detects>
|
||||
<detects>
|
||||
<detect>
|
||||
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
|
||||
</detect>
|
||||
@ -1702,11 +1702,11 @@ The following example is from the `MigUser.xml` file:
|
||||
<path type="File">%CSIDL_MYMUSIC%</path>
|
||||
</paths>
|
||||
<role role="Data">
|
||||
<detects>
|
||||
<detects>
|
||||
<detect>
|
||||
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
|
||||
</detect>
|
||||
</detects>
|
||||
</detects>
|
||||
<rules>
|
||||
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
|
||||
<objectSet>
|
||||
@ -1846,11 +1846,11 @@ The following example is from the `MigUser.xml` file. For more examples, see the
|
||||
<path type="File">%CSIDL_STARTMENU%</path>
|
||||
</paths>
|
||||
<role role="Settings">
|
||||
<detects>
|
||||
<detects>
|
||||
<detect>
|
||||
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
|
||||
</detect>
|
||||
</detects>
|
||||
</detects>
|
||||
<rules>
|
||||
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
|
||||
<objectSet>
|
||||
@ -1901,11 +1901,11 @@ The following example is from the `MigUser.xml` file:
|
||||
<path type="File">%CSIDL_MYMUSIC%</path>
|
||||
</paths>
|
||||
<role role="Data">
|
||||
<detects>
|
||||
<detects>
|
||||
<detect>
|
||||
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
|
||||
</detect>
|
||||
</detects>
|
||||
</detects>
|
||||
<rules>
|
||||
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
|
||||
<objectSet>
|
||||
@ -1969,7 +1969,7 @@ Examples:
|
||||
To migrate the Sample.doc file from any drive on the source computer, use **\<script\>** as follows. If multiple files exist with the same name, all such files get migrated.
|
||||
|
||||
```xml
|
||||
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
|
||||
```
|
||||
|
||||
For more examples of how to use this element, see [Exclude Files and Settings](usmt-exclude-files-and-settings.md), [Reroute Files and Settings](usmt-reroute-files-and-settings.md), and [Custom XML Examples](usmt-custom-xml-examples.md).
|
||||
@ -2171,7 +2171,7 @@ For example:
|
||||
|
||||
```xml
|
||||
<variable name="QuickTime5or6DataSys">
|
||||
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
|
||||
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
|
||||
</variable>
|
||||
```
|
||||
|
||||
@ -2204,7 +2204,7 @@ The following **.xml** file excludes all `.mp3` files from migration. For additi
|
||||
<unconditionalExclude>
|
||||
<objectSet>
|
||||
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
|
||||
</objectSet>
|
||||
</objectSet>
|
||||
</unconditionalExclude>
|
||||
</rules>
|
||||
</role>
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -6,7 +6,7 @@ manager: aaroncz
|
||||
ms.author: frankroj
|
||||
ms.service: windows-client
|
||||
author: frankroj
|
||||
ms.date: 01/09/2024
|
||||
ms.date: 01/29/2025
|
||||
ms.topic: conceptual
|
||||
ms.subservice: itpro-deploy
|
||||
appliesto:
|
||||
|
@ -20,7 +20,7 @@ ms.collection:
|
||||
[!INCLUDE [windows-autopatch-applies-to-all-licenses](../includes/windows-autopatch-applies-to-all-licenses.md)]
|
||||
|
||||
> [!IMPORTANT]
|
||||
> This feature is in public preview. It is being actively developed and might not be complete. They're made available on a "Preview" basis. You can test and use these features in production environments and scenarios and provide feedback.
|
||||
> This feature is in public preview. It's being actively developed and might not be complete. They're made available on a "Preview" basis. You can test and use these features in production environments and scenarios and provide feedback.
|
||||
|
||||
Hotpatch updates are [Monthly B release security updates](/windows/deployment/update/release-cycle#monthly-security-update-release) that can be installed without requiring you to restart the device. Hotpatch updates are designed to reduce downtime and disruptions. By minimizing the need to restart, these updates help ensure faster compliance, making it easier for organizations to maintain security while keeping workflows uninterrupted.
|
||||
|
||||
@ -40,14 +40,14 @@ VBS must be turned on for a device to be offered Hotpatch updates. For informati
|
||||
|
||||
### Arm 64 devices must disable compiled hybrid PE usage (CHPE) (Arm 64 CPU Only)
|
||||
|
||||
This requirement only applies to Arm 64 CPU devices when using Hotpatch updates. Hotpatch updates aren't compatible with servicing CHPE OS binaries located in the `%SystemRoot%\SyChpe32` folder. To ensure all the Hotpatch updates are applied, you must set the CHPE disable flag and restart the device to disable CHPE usage. You only need to set this flag one time. The registry setting remains applied through updates. To disable CHPE, set the following registry key:
|
||||
Path: `**HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management**`
|
||||
Key value: `**HotPatchRestrictions=1**`
|
||||
This requirement only applies to Arm 64 CPU devices when using Hotpatch updates. Hotpatch updates aren't compatible with servicing CHPE OS binaries located in the `%SystemRoot%\SyChpe32` folder. To ensure all the Hotpatch updates are applied, you must set the CHPE disable flag and restart the device to disable CHPE usage. You only need to set this flag one time. The registry setting remains applied through updates. To disable CHPE, create and/or set the following DWORD registry key:
|
||||
Path: `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management`
|
||||
DWORD key value: HotPatchRestrictions=1
|
||||
|
||||
> [!IMPORTANT:]
|
||||
> This setting is required because it forces the operating system to use the emulation x86-only binaries insetad of CHPE binaries on Arm 64 devices. CHPE binaries include native Arm 64 code to improve performance, excluding the CHPE binaries might affect performance or compatibility. Be sure to test application compatibility and performance before rolling out Hotpatch updates widely on Arm 64 CPU based devices.
|
||||
> [!IMPORTANT]
|
||||
> This setting is required because it forces the operating system to use the emulation x86-only binaries instead of CHPE binaries on Arm 64 devices. CHPE binaries include native Arm 64 code to improve performance, excluding the CHPE binaries might affect performance or compatibility. Be sure to test application compatibility and performance before rolling out Hotpatch updates widely on Arm 64 CPU based devices.
|
||||
|
||||
If you choose to no longer use Hotpatch updates, clear the CHPE disasble flag (`HotPatchRestrictions=0`) then restart the device to turn on CHPE usage.
|
||||
If you choose to no longer use Hotpatch updates, clear the CHPE disable flag (`HotPatchRestrictions=0`) then restart the device to turn on CHPE usage.
|
||||
|
||||
## Eligible devices
|
||||
|
||||
@ -76,7 +76,7 @@ For more information about the release calendar for Hotpatch updates, see [Relea
|
||||
## Enroll devices to receive Hotpatch updates
|
||||
|
||||
> [!NOTE]
|
||||
> If you're using Autopatch groups and want your devices to receive Hotpatch updates, you must create a Hotpatch policy and assign devices to it. Turning on Hotpatch updates doesn't change the deferral setting applied to devices within an Autopatch group.
|
||||
> If you're using Autopatch groups and want your devices to receive Hotpatch updates, you must create a Hotpatch policy and assign devices to it. Turning on Hotpatch updates doesn't change the deferral setting applied to devices within an Autopatch group.
|
||||
|
||||
**To enroll devices to receive Hotpatch updates:**
|
||||
|
||||
@ -94,4 +94,4 @@ For more information about the release calendar for Hotpatch updates, see [Relea
|
||||
These steps ensure that targeted devices, which are [eligible](#eligible-devices) to receive Hotpatch updates, are configured properly. [Ineligible devices](#ineligible-devices) are offered the latest cumulative updates (LCU).
|
||||
|
||||
> [!NOTE]
|
||||
> Turning on Hotpatch updates doesn't change the existing deadline-driven or scheduled install configurations on your managed devices. Deferral and active hour settings will still apply.
|
||||
> Turning on Hotpatch updates doesn't change the existing deadline-driven or scheduled install configurations on your managed devices. Deferral and active hour settings still apply.
|
||||
|
@ -78,6 +78,9 @@ Before you start managing Autopatch groups, ensure you meet the [Windows Autopat
|
||||
> [!IMPORTANT]
|
||||
> Windows Autopatch creates the device-based Microsoft Entra ID assigned groups based on the choices made in the deployment ring composition page. Additionally, the service assigns the update ring policies for each deployment ring created in the Autopatch group based on the choices made in the Windows Update settings page as part of the Autopatch group guided end-user experience.
|
||||
|
||||
> [!CAUTION]
|
||||
> If a device that was previously added to an Autopatch group uses an Entra group (via Assigned groups or Dynamic distribution method) is removed from the Entra group, the device is removed and de-registered from the Autopatch service. The removed device no longer has any Autopatch service-created policies applied to it and the device won't appear in the Autopatch devices reports.
|
||||
|
||||
## Rename an Autopatch group
|
||||
|
||||
**To rename an Autopatch group:**
|
||||
|
@ -68,7 +68,7 @@ For deployment rings set to **Automatic**, you can choose the deferral period fo
|
||||
|
||||
The deferral period allows you to delay the installation of driver and firmware updates on the devices in the specified deployment ring in case you want to test the update on a smaller group of devices first or avoid potential disruptions during a busy period.
|
||||
|
||||
The deferral period can be set from 0 to 14 days, and it can be different for each deployment ring.
|
||||
The deferral period can be set from 0 to 30 days, and it can be different for each deployment ring.
|
||||
|
||||
> [!NOTE]
|
||||
> The deferral period only applies to automatically approved driver and firmware updates. An admin must specify the date to start offering a driver with any manual approval.
|
||||
|
@ -63,7 +63,7 @@ The following URLs must be on the allowed list of your proxy and firewall so tha
|
||||
|
||||
| Microsoft service | URLs required on allowlist |
|
||||
| ----- | ----- |
|
||||
| Windows Autopatch | <ul><li>mmdcustomer.microsoft.com</li><li>mmdls.microsoft.com</li><li>logcollection.mmd.microsoft.com</li><li>support.mmd.microsoft.com</li><li>devicelistenerprod.microsoft.com</li><li>login.windows.net</li><li>payloadprod*.blob.core.windows.net</li><li>device.autopatch.microsoft.com</li></ul>|
|
||||
| Windows Autopatch | <ul><li>mmdcustomer.microsoft.com</li><li>mmdls.microsoft.com</li><li>logcollection.mmd.microsoft.com</li><li>support.mmd.microsoft.com</li><li>devicelistenerprod.microsoft.com</li><li>login.windows.net</li><li>device.autopatch.microsoft.com</li></ul>|
|
||||
|
||||
## Delivery Optimization
|
||||
|
||||
|
Reference in New Issue
Block a user