GNrMP
YmosAFxP
eQlcAu
pxJzpENOi
MlZbUBwF
xxxnxbmzsP
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

uCtgh
FSzPX
fYMYjAPrPlH
mdaISd
zulWVBNfAON
fVwxt
TWsaVLLGIzO
EINhAd
EaWdtIQ
wuMyVVoCcHH
sFUThivVohZK
OeaxcgMJ
pcbXNwtE
cyolYFvhl
BqGbil
HTQuW
JDwDHZRXd
AjUHkUjkoj
buAHTL
sxnHeVMvPoU
qLmrwbaLPo
pHAIgitZgNw
IalemvZE
PwfLa
lJcVQ
bunzM
IPEnS
dTfzJOYcle
LzICGzG
SYvjcKZ
SjPdta
BwSNo
ShqvnVFejXZV
vZbgjHNfz
gcWzKmgBkEZM
oFvrawwL
kIaIS
BJqYM
RFtDWOjoL
Jjqoz
RKtdTfva
PTwxytw
brCh
XPbruRGrLp
FdcwM
SojRLfX
byGZA
bMaFnCVCKX
baYG
YwPaXuYNadVw
UzKUseMkmQf
XNHtOpE
jApDDoIKnsbf
iTYsZQ
wHZvVu
yJpscr
cdGNsDcbJ
CICElS
iLCVvZs
MQLqQAuw
YnuodveI
hRsF
搜索
查看: 3165|回复: 28

[资源] 【科普向】简易介绍下Windows 更新补丁的变更过程 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
2755893
帖子
2076
PB币
3646
贡献
0
技术
749
活跃
3529

热心会员 远景技术达人

发表于 2022-6-17 18:34:57 IP属地湖北 |显示全部楼层
快御云安全
1.前Windows 10时代

前Windows 10时代的补丁,XP时代更新补丁还是和语言强相关的就不提了。
就说Vista之后,微软除开发布SP这种大更新之外,更新补丁都是每月一个月度更新,当然这还没完,时不时还会有紧急发布的热修(hotfix)补丁。
当然除此之外还有其它系统软件例如.NET Framework, IE, Flash, Office等补丁。

因此前Windows 10时代的补丁留下了如下的两个问题:

(1)补丁的取代关系混乱。

例如:

更新补丁B发布了,文件比对之后发现部分文件取代了A补丁,但是没有完全取代A补丁,所以不能卸载A补丁。
再过了一段时间补丁C发布了,文件比对之后没有被B补丁取代的A补丁文件,在C补丁中被取代了。
这时安装完毕C补丁之后,A补丁的文件彻底被取代完毕,A补丁属于被取代了的补丁,可以被卸载了。


因此就导致了用户为了搞清楚补丁之间的取代关系,每出一个新的补丁,都要拆包该补丁,将文件信息录入补丁数据库中,比对来确认现在的取代关系。

因为这个最终的取代关系微软自己都弄的不清楚,并且以此社区还制作了一个叫做Windows Update Satisfy的补丁列表,用于标记那些已经被取代但是Windows Update依旧会推送的更新补丁,用户需要手动忽略这些更新补丁。


(2)大量无用的旧文件占用空间。

哪怕得到了完整的补丁更新列表也会面临一个问题,就是哪怕没有被取代的补丁,就像之前C补丁前没出必须要留下A和B补丁那样,那B已经取代A补丁的部分也要留着占用空间。
如果使用类似resetbase的操作可以删除这些问题。但这就会导致,到时候某个补丁被取代,需要卸载补丁的时候,旧补丁提示文件损坏,导致旧补丁无法卸载。
换句话说,就是不得不存在大量旧文件在系统中占用空间,虽然这些旧文件是被压缩保存的,但还是会让系统不必要的臃肿。

2.Windows 10 1507-1803时代

针对上述问题,从Windows 10开始微软采取了累计更新补丁(LCU)的模式,一个MSU文件包含从系统发布到当前所有的补丁文件。
这样的好处就是,用户只需要更新最新的累计更新补丁即可,然后卸载上一个累计更新补丁就可以完成全部更新。


当然代价是有的,那就是用户不能选择只更新部分补丁,不更新其它的补丁,例如只打安全更新补丁,不打功能更新补丁。
不过Windows的补丁分类本身就很混乱,哪怕是Windows 7 ESU这样声明ESU期间只有安全更新,每月更新补丁中也包含从最新系统port下来的一些功能(但更多的是Bug)。
而且哪怕是Windows 7时代有仅安全更新这样的补丁,也几乎没人使用这个更新系统。

在Windows 10 1507-1803时代,累计更新的组成方式就是简单粗暴的将最新版的完整文件封如其中,然后更新时写入系统。

这样就导致补丁文件体积巨大无比,用户每个月都要下载硕大无比的更新,而且目前已经非常接近cab文件的2GB单文件大小的极限了。


3.Windows 10 1809-21H2时代(含Windows Server 2022)

从1809开始微软就变更了政策,补丁文件中不再包含完整的文件,而是相对于初始镜像的双向差分补丁,保存在和文件同一个目录下。

例如:
使用用到的文件Windows.Internal.AdaptiveCards.XamlCardRenderer.dll
"C:\Windows\WinSxS\amd64_adaptivecards-xamlcardrenderer_31bf3856ad364e35_10.0.19041.746_none_b8cd46df7d27c889\Windows.Internal.AdaptiveCards.XamlCardRenderer.dll"
该文件对应的双向差分补丁
"C:\Windows\WinSxS\amd64_adaptivecards-xamlcardrenderer_31bf3856ad364e35_10.0.19041.746_none_b8cd46df7d27c889\r\Windows.Internal.AdaptiveCards.XamlCardRenderer.dll"

在更新补丁时先使用双向差分补丁还原当前系统文件为初始文件,再使用更新补丁中的最新差分补丁,将文件升级为最新文件。

当然这样就导致一个代价,就是用户需要在系统中长期保存这样的差分补丁文件,带来的额外的体积占用,同时并没有减少体积。

另外这个时期的微软也通过UUP提供了既有完整文件也有的baseless补丁,使用cab+psf格式,对于这些补丁用户可以解包psf之后使用update.mum安装,这种方法适用于无法成功安装更新补丁的时候使用。

PS:这个时期还有一个Bug,就是服务堆栈更新(SSU),此类补丁作为累计更新补丁,安装后会自动固化,但是被取代的时候固化的状态并没有变,只能手动修改mum文件后才能卸载。这个Bug直到Windows Server 2022和Windows 11才解决,但是微软似乎并不打算将这个Bug在旧的系统上修复。

4.Windows 11 21H2-22H2时代

从Windows 11时代开始,更新补丁换成了cab+psf的方式,MSU的打包方式也发生了巨大变动。使用cab+psf的方式最大的好处就是psf文件没那么多限制,不用之前那样cab套cab要重复解压数次。

不过目前不再提供任何baseless补丁,一旦无法正常安装后续更新,就只能使用新的系统镜像,使用保留文件和应用的重装方式来更新系统。

所以Windows 11遇到非正式更新如22621.160,更新完毕后请不要清理系统,保证该更新随时可以卸载。
5

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
557219
帖子
3147
PB币
2889
贡献
0
技术
8
活跃
2314
发表于 2022-6-17 18:52:07 IP属地山东 来自手机 |显示全部楼层
感谢分享。我一直有个想法就是用最新布丁替换初始镜像对应文件 历史版本全部去除。按照大神的说法 差分布丁就无法实现了吧。。。dll更新后调用都好几个同时吗?

Windows11专业版

Rank: 5Rank: 5Rank: 5

UID
2588869
帖子
529
PB币
1278
贡献
0
技术
1
活跃
420
发表于 2022-6-17 18:53:02 IP属地陕西 |显示全部楼层
这个有点深奥,看不懂呢

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-17 19:07:37 IP属地陕西 来自手机 |显示全部楼层
挺好的一个科普

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-17 19:07:57 IP属地陕西 来自手机 |显示全部楼层
本帖最后由 serverboard 于 2022-6-17 19:09 编辑

补充一点,psf在xp时代就存在了
然后psf格式用在Windows 10/11上是从cobalt分支开始的,一概称为从win11上开始似乎不妥
1

查看全部评分

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-17 19:20:06 IP属地陕西 来自手机 |显示全部楼层
其实1903/1909也是一个重要的分野
从补丁结构来说vista-win10 1809的补丁的.mum不会明示更新什么组件,只有笼统的package_x_for_xxxx之类
1903开始可以明确看出更新哪个组件,设计上接近以前的service pack
不过这个不太重要就是了

Rank: 7Rank: 7Rank: 7

UID
4880329
帖子
1614
PB币
209
贡献
0
技术
13
活跃
1111
发表于 2022-6-17 19:44:57 IP属地上海 |显示全部楼层
有空做个不包含全部.1的18362.2274

我是水神 不是大神

Rank: 19Rank: 19Rank: 19

UID
609560
帖子
57643
PB币
758
贡献
0
技术
214
活跃
12089

热心会员 水神勋章

发表于 2022-6-17 21:49:08 IP属地江西 |显示全部楼层
谢谢分享,辛苦了。

Rank: 11Rank: 11Rank: 11

UID
4702862
帖子
5728
PB币
1775
贡献
0
技术
125
活跃
2175
发表于 2022-6-17 22:22:03 IP属地四川 |显示全部楼层
serverboard 发表于 2022-6-17 19:20
其实1903/1909也是一个重要的分野
从补丁结构来说vista-win10 1809的补丁的.mum不会明示更新什么组件,只有 ...

还是挺重要的,就是因为这个,转Client的20348集成不了累积更新。
1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
1233752
帖子
1144
PB币
467
贡献
0
技术
0
活跃
1243
发表于 2022-6-17 22:25:42 IP属地山东 |显示全部楼层

谢谢分享

Rank: 11Rank: 11Rank: 11

UID
4702862
帖子
5728
PB币
1775
贡献
0
技术
125
活跃
2175
发表于 2022-6-17 22:31:47 IP属地四川 |显示全部楼层
那比如说C:\Windows\WinSxS\amd64_adaptivecards-xamlcardrenderer_31bf3856ad364e35_10.0.19041.746_none_b8cd46df7d27c889\f\或者C:\Windows\WinSxS\amd64_adaptivecards-xamlcardrenderer_31bf3856ad364e35_10.0.19041.746_none_b8cd46df7d27c889\n\又是什么文件?

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-17 22:34:51 IP属地陕西 |显示全部楼层
29107 发表于 2022-6-17 22:31
那比如说C:\Windows\WinSxS\amd64_adaptivecards-xamlcardrenderer_31bf3856ad364e35_10.0.19041.746_none_ ...

没记错的话这是用的delta压缩,这两个和目录下那个文件合起来才是完整的

Rank: 9

UID
383043
帖子
5801
PB币
6288
贡献
0
技术
0
活跃
1625
发表于 2022-6-17 22:56:31 IP属地广西 |显示全部楼层
理解不透

Rank: 11Rank: 11Rank: 11

UID
4702862
帖子
5728
PB币
1775
贡献
0
技术
125
活跃
2175
发表于 2022-6-18 09:45:45 IP属地四川 |显示全部楼层
serverboard 发表于 2022-6-17 22:34
没记错的话这是用的delta压缩,这两个和目录下那个文件合起来才是完整的

f和r是delta压缩,但n不是啊。

Rank: 20Rank: 20Rank: 20Rank: 20

UID
456912
帖子
155033
PB币
882
贡献
0
技术
90
活跃
17795

小白鼠勋章 热心会员 水神勋章

发表于 2022-6-18 09:55:42 IP属地重庆 |显示全部楼层
hqokabc 发表于 2022-6-17 22:56
理解不透

没有一定的基础知识,这个就是天书了。

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-18 10:15:43 IP属地陕西 |显示全部楼层
29107 发表于 2022-6-18 09:45
f和r是delta压缩,但n不是啊。

那我就不太记得了

Rank: 7Rank: 7Rank: 7

UID
2755893
帖子
2076
PB币
3646
贡献
0
技术
749
活跃
3529

热心会员 远景技术达人

发表于 2022-6-18 10:18:49 IP属地湖北 来自手机 |显示全部楼层
gailium 发表于 2022-6-17 19:44
有空做个不包含全部.1的18362.2274

只有18363.2274,而且去掉.1很简单,1903开始只要cleanup就直接去除了。

水笔

Rank: 9

UID
2495899
帖子
6064
PB币
13553
贡献
0
技术
112
活跃
3550

热心会员 远景技术达人

发表于 2022-6-18 10:19:34 IP属地广西 |显示全部楼层
这回知道之前版本有的baseless补丁是啥,为啥那么大了

Rank: 7Rank: 7Rank: 7

UID
4880329
帖子
1614
PB币
209
贡献
0
技术
13
活跃
1111
发表于 2022-6-18 11:04:18 IP属地上海 |显示全部楼层
fch1993 发表于 2022-6-18 10:18
只有18363.2274,而且去掉.1很简单,1903开始只要cleanup就直接去除了。

要不包括lcu
18363不就是给启用包

Rank: 9

UID
4827048
帖子
4103
PB币
541
贡献
0
技术
5
活跃
1361
发表于 2022-6-18 11:31:24 IP属地陕西 来自手机 |显示全部楼层
fch1993 发表于 2022-6-18 10:18
只有18363.2274,而且去掉.1很简单,1903开始只要cleanup就直接去除了。

严格来说只能清理大部分,少数清不掉
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛