- 积分
- 6712
- 最后登录
- 2024-5-27
- 精华
- 0
- 阅读权限
- 220
- 主题
- 147
- UID
- 3887572
- 帖子
- 2905
- PB币
- 3767
- 威望
- 925
- 贡献
- 0
- 技术
- 810
- 活跃
- 4766
14N.M.
- UID
- 3887572
- 帖子
- 2905
- PB币
- 3767
- 贡献
- 0
- 技术
- 810
- 活跃
- 4766
|
本帖最后由 Mouri_Naruto 于 2015-2-14 09:47 编辑
说到Installer清理别人肯定是非常感兴趣的,因为无节操的微软每个月都会发布1GB大小的Office 2013的更新,很快硬盘就吃不消了……但这个目录又不能随便清理,否则后遗症严重(比如无法打补丁,无法卸载甚至无法启动之类的)
市面上的Installer的清理始终达不到很好的效果,因为只能清理系统不标注的Installer文件,随着Windows Installer的逐渐完善,系统残留的文件越来越少,所以效果变成0都不稀奇的说
突然,Dism管理器出现在我眼前;由于里面全新的Installer清理,我对其原理非常的好奇,顺便也发现了Dism管理器值得吐槽(配置文件直接写在系统注册表里)的地方;于是我和zifei(也就是鸭子大大)反馈,那一天我和他相遇了(PS:喂喂!!我不是gay!!)
于是去年的7月31日,zifei给我发了一个只有20KB的头文件,告诉我这是Dism管理器下一个大版本的核心,把我邀请进了他们的团队(我至今还是有些愧疚,因为干的东西不多)
我第一个完成的就是Dism++的热备份的一个模块(创建卷影副本的东西,这是Windows下热备份的基础)……但是当年我只用C#,不懂C++,手里没有IDE,拿着Notepad++写出了代码;鸭子给我挑出了不少错误;于是我开始自学C++,不懂的问鸭子
又过了一个月,鸭子跟我说:“Dism管理器的Installer清理已经无法控制了,哪怕用清理白名单也无法解决清理后的系统副作用问题”于是我接下了新版Installer清理的任务
先开始三个月没有任何进展,为了找出清理方案,一天重装系统30次(有一天在实体机上测试结果重启后主板BIOS芯片报废,返修了3次才解决,历时两个月)
在电脑放在电脑店的同时,我在老妈(我发帖现在才刚过17岁)的笔记本电脑上,得到了把MSI和MSP文件和安装缓存硬链接的灵感……然后花了1个月测试可行性
在期末考试完的那天晚上写出了WIFC(Windows Installer Folder Cleanup)的第一版的代码,经过鸭子的少量修改集成入了Dism++ 10.0.0.6中
但是虽然在我家刚刚返厂修好的PC清理出2GB空间,但是很明显鸭子不满意;但是这是第一版,也就发布了
这个月微软大姨妈(补丁)日,打完所有补丁,Installer目录又大了……于是我怒了!
靠以前的探索经验,突然有了作死的灵感;经过虚拟机测试……成功了!实体机作死……成功了!
那天晚上我修改了20行代码,Installer清理V2诞生
清理效果用zifei的话说是:“可释放60MB到可释放1.6GB的跨越”
zifei也马上发布了Dism++ 2015年2月11日预览版(加入了很多新特性,比如多语言和Installer清理V2等等……)
相信未来的某一天,你们可以用上的
原理说说吧
1.对MSI文件与安装缓存进行硬链接(WIFC 1.0实现,独家)
2.对$PatchCache$缓存进行压缩(WIFC 1.0实现,独家……但未来会被代替)
3.对MSP补丁进行固化处理(WIFC 2.0实现,独家,替代WIFC 1.0的MSP文件与安装缓存进行硬链接)
4.删除系统未标注的残留文件(WIFC 1.0实现,市面上的常用技术)
未来我会继续研究,对$PatchCache$缓存找到可靠的解决方案的
等找到解决方案后,我会公开原理的(笑)
这只是水贴,谢谢
毛利 |
-
2
查看全部评分
-
|