搜索
查看: 2303|回复: 33

[技术] 关于使用组件精简的方法初探 [复制链接]

Rank: 2Rank: 2

UID
740887
帖子
301
PB币
264
贡献
0
技术
3
活跃
955
发表于 2020-5-4 13:56:23 |显示全部楼层
快御云安全

前言:

1.内容主要来源于网络、论坛学习,集合了很多大佬的经验和方法,不再一一列明具体人员,对原创作者和各位大佬表示感谢。
2.帖子的目的:分享一下最近一年多的走过的弯路和精简路上百求不得解的苦楚,就是那一层膜,戳破需要经历太多。(脑袋里另外一个小人说:靠,就是想混点PB,别煽情)。

3.部分内容为失败摸索所得,因个人技术和理解问题,未必对,请大家喷的时候,轻一点,慢一点,仅做抛砖引玉,因为我也是菜鸟,所以私信啥的没有回复,也请见谅。
4.请硬盘大的网友们见谅,我不讨论是否该精简,仅仅从好奇的角度做一下探讨组件问题。


第一部分:工具

使用:Package_Remover,以前论坛不少大佬、大神都发过,我就不发了


第二部分:组件识别

1.Windows\servicing\Packages 看一下mum文件


组件包和语言包的区别

以Microsoft-OneCore-Http-Package为例:

Microsoft-OneCore-Http-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum

Microsoft-OneCore-Http-Package~31bf3856ad364e35~amd64~zh-CN~10.0.19041.1.mum

总的来说带~zh-CN~都是语言组件


主封包和子封包的区别

情况一:

以Microsoft-Windows-Telnet-Client-Package为例:

Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum

Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~zh-CN~10.0.19041.1.mum

Microsoft-Windows-Telnet-Client-Opt-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum

Microsoft-Windows-Telnet-Client-Opt-Package~31bf3856ad364e35~amd64~zh-CN~10.0.19041.1.mum

用记事本打开Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum

  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0" copyright="Copyright (c) Microsoft Corporation. All Rights Reserved.">
  3.   <assemblyIdentity name="Microsoft-Windows-Telnet-Client-Package" version="10.0.19041.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
  4.   <package identifier="Microsoft-Windows-Telnet-Client" releaseType="Feature Pack">
  5.     <parent integrate="delegate">
  6.       <assemblyIdentity name="Microsoft-Windows-ServerCore-Package" version="10.0.19041.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
  7.     </parent>
  8.     <parent integrate="delegate">
  9.       <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="10.0.19041.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
  10.     </parent>
  11.     <update name="TelnetClient" displayName="Telnet Client" description="Allows you to connect to other computers remotely.">
  12.       <mum2:customInformation xmlns:mum2="urn:schemas-microsoft-com:asm.v3">
  13.         <ServerComponent Description="Telnet Client uses the Telnet protocol to connect to a remote Telnet server and run applications on that server." DisplayName="Telnet Client" Id="44" Type="Feature" UniqueName="Telnet-Client">
  14.           <Version Major="10" Minor="0" />
  15.           <Deploys>
  16.             <Update Name="TelnetClient" />
  17.           </Deploys>
  18.         </ServerComponent>
  19.       </mum2:customInformation>
  20.       <selectable disposition="staged">
  21.         <detectNone default="false" />
  22.       </selectable>
  23.       <package contained="false" integrate="hidden">
  24.         <assemblyIdentity name="Microsoft-Windows-Telnet-Client-Opt-Package" version="10.0.19041.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
  25.       </package>
  26.     </update>
  27.   </package>
  28. </assembly>
复制代码
会发现Microsoft-Windows-Telnet-Client-Opt-Package包含在里面,所以,可以简单理解为Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum是主封包,主封包移除,子封包会跟着移除,子封包移除,主封包不会被移除。

PS:通过查看mum文件,是获得各个组件之间关联情况的重要途径!!!

情况二:

这种特别多的组件怎么办,比如下面的这个情况:

11.png


请勿使用多线程下载工具下载论坛附件!


一般采取下面三个原则:

1.先找文件名最短的

2.先找组件名带Client-Package的

3.先找组件名带Microsoft-OneCore的(如果不是以OneCore大头,而是OneCore在文件名的最后,那么可以不用看基本上都是子封包)

4.一个个查看mum文件,查看组件管理关系(下下策)


情况三  我怎么知道各个组件干啥用的?

1.内事不决问百度,外事不决问谷歌。。。懒的话我也没招

2.以Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum文件内容为例,

ServerComponent Description="Telnet Client uses the Telnet protocol to connect to a remote Telnet server and run applications on that server." DisplayName="Telnet Client" Id="44" Type="Feature"

组件功能:Telnet Client uses the Telnet protocol to connect to a remote Telnet server and run applications on that server.

组件显示名称:Telnet Client

所以,多看看mum文件

3.拆包Manifests文件研究去。这个内容不再此次讨论范围,因为我没试过。

4.搜索大佬们分享出来的组件对应关系,和名称,已经精简的影响,这里我不再贴了。需要的私信算了,有时间我会发的。


第三部分:组件精简

1.只说我走过的弯路:以离线安装了net3.5为例:你会发现,好多组件精简后都会报错,所以不要离线集成一些功能。

2.精简组件还能保持在线自动更新:

以19041.172版本为例(其他版本一样)

比如
Microsoft-Windows-Telnet-Client-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum,这个组件,~~10.0.19041.1.这个版本号只有初始的.1版本,那么这个没有其他版本,那么这个组件精简后大概率不会影响更新,小概率是因为和其他组件有关联。

如果这个组件还有10.0.19041.153或者10.0.19041.84(版本我随便举的),也就是说除了.1初始版本以外还有其他版本,那么精简以后,大概率更新失败。

后遗症:后期微软如果对这个10.0.19041.1的初始版本组件有更新,你自动更新也会失败。

虽然自动更新失败,但是好像也有其他方法安装上,我不会,需要大佬们赐教。


6

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
4827033
帖子
2245
PB币
2950
贡献
0
技术
0
活跃
1626
发表于 2020-5-4 13:59:14 来自手机 |显示全部楼层
太难了。。。。

点评

故乡  我们需要点自虐精神 O(∩_∩)O哈哈~  发表于 2020-5-4 14:02

Rank: 1

UID
4847131
帖子
34
PB币
35
贡献
0
技术
0
活跃
313
发表于 2020-5-4 14:08:48 |显示全部楼层
自己动手丰衣足食挺好的

Rank: 5Rank: 5Rank: 5

UID
810551
帖子
1126
PB币
1219
贡献
0
技术
1
活跃
1045
发表于 2020-5-4 14:09:31 |显示全部楼层
一看就眼花

Rank: 7Rank: 7Rank: 7

UID
614977
帖子
3538
PB币
3078
贡献
0
技术
0
活跃
760
发表于 2020-5-4 15:01:54 |显示全部楼层
楼主钻研精神值得称赞

Rank: 5Rank: 5Rank: 5

UID
4801082
帖子
1074
PB币
659
贡献
0
技术
0
活跃
1542
发表于 2020-5-4 15:09:19 |显示全部楼层
不容易。。怎么都不可能搞清楚巨硬一切。
头像被屏蔽

Rank: 5Rank: 5Rank: 5

UID
2759608
帖子
654
PB币
0
贡献
0
技术
0
活跃
389
发表于 2020-5-4 15:18:51 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 9

UID
60343
帖子
7117
PB币
25678
贡献
0
技术
17
活跃
1931

十一周年 7周年庆典勋章 8周年庆典勋章

发表于 2020-5-4 15:25:24 |显示全部楼层
我就想在UUP阶段能自主定制WIM就好。

Rank: 2Rank: 2

UID
4869134
帖子
434
PB币
822
贡献
0
技术
0
活跃
642
发表于 2020-5-4 15:27:29 |显示全部楼层
难度不小,佩服楼主的钻研精神!

Rank: 2Rank: 2

UID
1128975
帖子
303
PB币
670
贡献
0
技术
0
活跃
458
发表于 2020-5-4 15:35:01 来自手机 |显示全部楼层
楼主钻研精神可嘉!若有爱好有精力有时间可以折腾

Rank: 7Rank: 7Rank: 7

UID
134229
帖子
1514
PB币
2278
贡献
0
技术
6
活跃
1910
发表于 2020-5-4 15:51:29 |显示全部楼层
好资料,谢谢分享

Rank: 5Rank: 5Rank: 5

UID
713004
帖子
1010
PB币
1468
贡献
0
技术
0
活跃
1447
发表于 2020-5-4 16:13:52 |显示全部楼层
很好的参考资料 谢谢分享  辛苦了

Rank: 2Rank: 2

UID
1448218
帖子
143
PB币
139
贡献
0
技术
0
活跃
111
发表于 2020-5-4 16:21:29 |显示全部楼层
支持,继续摸索

Rank: 11Rank: 11Rank: 11

UID
4819662
帖子
12053
PB币
273
贡献
0
技术
60
活跃
6661

远景开发达人

发表于 2020-5-4 16:39:12 |显示全部楼层
好帖。      

Rank: 2Rank: 2

UID
1300843
帖子
145
PB币
1862
贡献
0
技术
0
活跃
854
发表于 2020-5-4 16:42:20 |显示全部楼层
好难!理解不了。。

Rank: 2Rank: 2

UID
959208
帖子
372
PB币
400
贡献
0
技术
30
活跃
852
发表于 2020-5-4 16:44:16 |显示全部楼层
关于封包,yaya研究的最深,实际上,很多封包没有精简的必要,因为实际上只是占了点磁盘空间,不影响系统的性能,研究组件与封包,最好是直接找最初始的.1版本,关于工具,实际上也就是dism工具的批处理

Rank: 7Rank: 7Rank: 7

UID
1418014
帖子
1764
PB币
463
贡献
0
技术
0
活跃
880
发表于 2020-5-4 17:27:35 |显示全部楼层
佩服楼主!

Rank: 2Rank: 2

UID
740887
帖子
301
PB币
264
贡献
0
技术
3
活跃
955
发表于 2020-5-4 17:33:47 |显示全部楼层
mz520k 发表于 2020-5-4 16:44
关于封包,yaya研究的最深,实际上,很多封包没有精简的必要,因为实际上只是占了点磁盘空间,不影响系统的 ...

你的gui也不搞了,居然去黑苹果了啊!

稳健、高效、便捷

Rank: 9

UID
4848005
帖子
4390
PB币
5240
贡献
0
技术
3
活跃
927
发表于 2020-5-4 17:36:13 |显示全部楼层
这洋洋洒洒的整篇整下来,估计得研究个老半天都不一定敢下得了手~~

Rank: 7Rank: 7Rank: 7

UID
4580592
帖子
1827
PB币
2050
贡献
0
技术
3
活跃
1592
发表于 2020-5-4 17:53:41 |显示全部楼层
组件封包主从有人发过一个小工具,可以以树状的方式展示主要封包大概主从情况。
Sxs封包分析助手 v0.1.4-远景论坛-微软极客社区
http://bbs.pcbeta.com/viewthread-1764926-1-1.html
https://github.com/dragonflylee/SxsHelper
回顶部
Copyright (C) 2005-2022 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛