Last time, we began our survey of Windows update formats. We’ll continue with the Delta update.
The Delta update is a cut-down version of the Full update by including only files that changed since the previous version. Delta updates are typically around 300MB to 500MB in size, which is significantly less than the typical 1GB size of a Full update.
Delta updates send full files, not patches. The Delta is applied at the file level, not the byte level.
Update | Full file | Patch base | ||||
---|---|---|---|---|---|---|
M0 | M1 | M2 | M3 | M4 | ||
M1 |
M1
|
M0 to M1 | Â | Â | Â | Â |
M2 |
M2
|
M0 to M2 | M1 to M2 | Â | Â | Â |
M3 |
Â
|
 |  |  |  |  |
M4 |
M4
|
M0 to M4 | M1 to M4 | M2 to M4 | Â | Â |
M5 |
M5
|
M0 to M5 | M1 to M5 | M2 to M5 | Â | M4 to M5 |
The breakdown of files for Delta updates is as follows:
Delta update | Contents |
---|---|
M1 | M1 |
M2 | M2 |
M3 | (nothing) |
M4 | M4 |
M5 | M5 |
Note that Delta update M3 contains nothing at all. That’s because the file F
didn’t change between M2 and M3, so there was nothing to update.
Feature summary of Delta updates:
- Delta updates can successfully update only customers who are running the previous monthly cumulative update (possibly with hotfixes). It cannot update customers who are more than one version behind.
- Delta updates are a third to a half the size of a Full update.
- Delta updates require a little bit of negotiation with the server to determine whether the client system is eligible, but once that’s determined, every eligible customer downloads the same update.
- Delta updates are cache-friendly, because every customer downloads the same update (if they download anything at all). Therefore, caching features like caching proxies, BranchCache, and peer-to-peer delivery are effective.
- Delta updates do not require significant server support. Once the package is negotiated, it is delivered in its entirety.
Next time, we’ll look at the Express update, which despite its name is actually larger than Full updates, or at least they’re larger on the server.
How does deleting files work? e.g. a file is added in M2 but later removed in M4.
Is there a list of files to delete, or do obsolete files just get left lying around, unloved?
Since Delta updates are incremental update, for any files that should be delete in N+1 update level, it would be deleted promptly.
If it were to be uninstalled, there is a reason why Windows create restore point on update.
https://docs.microsoft.com/en-us/windows/win32/sr/restore-points
I thought that to apply a patch you had to uninstall the currently installed one, effectively rolling back to the baseline (latest CU). Seemed logical because then patches are always applied against the common baseline (but every next patch would be bigger). Also I thought that was why C:\Windows\Installer keeps growing (keeps patch uninstallers).
The files in the Windows directories are actually hard linked to files in %SystemRoot%\WinSxS. For example, on my system:
C:\>fsutil hardlink list c:\windows\system32\kernel32.dll
\Windows\System32\kernel32.dll
\Windows\WinSxS\amd64_microsoft-windows-kernel32_31bf3856ad364e35_10.0.18362.329_none_e9af874ee7d1812d\kernel32.dll
The way Windows Update applies an update is to install the files into the WinSxS directory then removes the old hard link and then creates a new hard link to the most up to date file. So all of the files live happily side by side in the WinSxS directory...