NCleaner ReadMe文档

首先感谢使用和支持该项目的一切用户；其次我还想感谢Dism++的开发团队(即初雨团队)

NCleaner原本是一个Dism++第三方清理增强插件；由于我不想在用Dism++的时候还要用CCleaner；于是诞生了这个插件

Dism++作者（小鸭子）打算把清理功能外包给NCleaner（或者说是Dism++深度整合NCleaner）
我也很赞同作者的看法，于是从NCleaner 1.0.1.4开始NCleaner正式成为Dism++的组件

先谈谈我认为与Dism++深度整合的好处
1.大部分人不需要单独下载NCleaner
2.NCleaner不再会因为Dism++API结构更改而背锅
3.测试范围更加广阔，出Bug即使我没空修复Dism++作者也能帮忙修复(*^_^*)

如果发现Bug和提建议，希望你们可以多多包涵并请及时在群内反馈

初雨Dism++官方群：200783396 282276394
M2-Team官方群：466078631

谢谢，By Chuyu Team & M2-Team

更新日志
NCleaner 1.0.4.0
1. 移除缩略图缓存清理残留代码（在NCleaner 1.0.3.0开始缩略图缓存清理已使用DISM++规则实现）
2. 整理并优化代码（完全使用MSDN文档化API）

NCleaner 1.0.3.10
1. 降低某些情况下潜在dll抗劫风险
2. 解决潜在初始化崩溃问题

NCleaner 1.0.3.9
1. 解决系统还原清理功能可能发生的崩溃的两个Bug

NCleaner 1.0.3.8
1. 添加dll抗劫持功能

NCleaner 1.0.3.6
1.深度整合M2-SDK库（因为其他M2工具不再用到该库，但该库一旦修改，GitHub对应部分会同步）
2.删除无用代码
3.根据VC编译器文档的建议，使用 /W4 编译

NCleaner 1.0.3.5
1.修复新版Visual Studio安装源缓存清理的日志输出Bug
2.整理并优化代码
3.修改编译选项（根据新版VC-LTL文档）
4.添加损坏的AppX在线清理
（清理损坏的AppX。例如Visual Studio的通用应用XAML设计器暴力删除临时生成的设计器应用，于是会出现大量损坏的AppX）

NCleaner 1.0.3.4
1.重新调整Release编译选项为“使大小最小化 (/O1)”
2.优化日志输出逻辑

NCleaner 1.0.3.3
1.调整Release编译选项为“使速度最大化 (/O2)”
2.同步VC-LTL版本至1.0.0.8
3.整理并优化代码
4.Package Cache清理支持清理特定用户的Package Cache

NCleaner 1.0.3.2
1.整理并优化代码

NCleaner 1.0.3.1
1.整理并优化代码

NCleaner 1.0.3.0
1.缩略图缓存清理完全使用Dism++规则实现
2.增加新版Visual Studio安装源缓存清理
3.整理代码

NCleaner 1.0.2.9
1.引入M2-SDK（https://github.com/M2Team/M2-SDK）
2.移除重复代码
3.缩略图缓存清理使用Dism++的ExplorerNotify功能启动Explorer以解决#43问题
（链接：https://github.com/Chuyu-Team/Dism-Multi-language/issues/43）

NCleaner 1.0.2.8
1.使用VS2017重新编译（By mingkuang）

NCleaner 1.0.2.5
1.解决BUG，修复LocalPackage文件名为空时程序奔溃问题（By mingkuang）

NCleaner 1.0.2.4
1.在Installer清理的注册表操作传入备份恢复特权Flag
2.同步M2.Native库并优化编译结果

NCleaner 1.0.2.3
1.修复在32位模块下取消对sse和sse2指令集的依赖无效问题
2.同步M2最新代码重新编译

NCleaner 1.0.2.2
1.新增Installer清理（实验性功能，专家模式Only）

NCleaner 1.0.2.1
1.增加传递优化（DeliveryOptimization）缓存清理
2.使Package Cache清理与Windows Installer实现互斥

NCleaner 1.0.2.0
1.Package Cache清理：改善对.Net Core安装源的清理
2.缩略图缓存清理：减少重启Explorer时的API调用次数
3.在32位模块下取消对sse和sse2指令集的依赖（感谢mingkuang）
（解决某些古董CPU机器因为没有SSE指令集而崩溃的问题）

NCleaner 1.0.1.6
1.修复系统还原点清理扫描奔溃的Bug（由mingkuang修复）

NCleaner 1.0.1.5
1.优化并调整代码
2.修复Windows事件日志清理的Bug

NCleaner 1.0.1.4
1.嵌入Dism++
	(1)继承Dism++的全部清理规则,且把清理规则移入Data.xml，并作以下调整
		对清理规则进行归类
		NCleaner规则融入Dism++分类
		移除Installer清理 （这是上古残留，且NCleaner也有一份替代实现）
		移除Visual Studio安装源清理（因为有更好的方案，即Package Cache清理）
		临时文件清理规则扩充，应用容器临时文件清理规则合并入临时文件清理，
		应用容器CLR缓存清理合并入Windows日志清理
		Windows事件清理实现移入NCleaner
	(2)多语言部分移除（我相信Dism++翻译组，当然参考翻译会提供给他们）
	(3)移除对旧版本Dism++的兼容代码
	(4)使用Dism++内部方法调用Dism++ API
	(5)为Dism++清理函数提供转发
2.优化代码
	(1)使用Native API加载DLL并获取函数入口
	(2)系统还原点清理不再获取不必要的函数入口
	(3)缩略图缓存Explorer重启部分调用Native API模拟令牌
3.移除NCleaner关于对话框（因为Dism++关于UI可以直接查看NCleaner版本号）
4.修复Package Cache清理不能离线使用的Bug
5.暂时屏蔽Installer清理（感谢夏虫反馈Bug，虽然Bug修复容易；但是干脆重新研究下清理方案）

NCleaner 1.0.1.3
1.移除IE网页缓存清理（被WinINet网页缓存清理替代）
2.移除IE Cookies清理（被WinINet Cookies清理替代）
3.移除Edge网页缓存清理（被WinINet网页缓存清理替代）
4.移除Edge Cookies清理（被WinINet Cookies清理替代）
5.添加WinINet网页缓存清理
（清理每个用户账户和应用容器下的Windows网络组件（例如IE，Edge）的网页缓存（仅支持默认目录））
6.添加WinINet Cookies清理
（清理每个用户账户和应用容器下的Windows网络组件（例如IE，Edge）的Cookies（仅支持默认目录））
7.增强微软系安软无用文件清理（添加删除MA NIS的日志文件）
8.修复零售演示离线内容清理规则
9.添加应用容器临时文件清理（清理每个应用容器下的临时文件）
10.添加应用容器CLR缓存清理（清理每个应用容器下的CLR缓存）
11.新清理项目多语言同步（感谢随便问我）

NCleaner 1.0.1.2
1.改善语言ini文件解析
2.修复Readme文档的错误
3.解决与Dism++ 10.1.9.1的兼容性问题 (感谢东方牛)

NCleaner 1.0.1.1
1.提升对Dism++的最低版本要求到10.1.6.5（当时和mingkuang讨论时，Dism++最新版本是10.1.6.5）
2.删除对旧版本的兼容代码
3.加入多语言（英语和繁体中文）支持（感谢hortz, ITechDeveloper, 随便问我）
4.解决与Dism++ 10.1.10.0的兼容性问题 (感谢mingkuang和那位反馈给mingkuang的无名英雄，如果可以提供ID,则我会修改本条目)

NCleaner 1.0.0.7
1.去除工具箱NCleaner项目前面的#号
2.优化代码
3.增加零售演示离线内容清理
4.完全使用Native API实现文件遍历和删除
5.修复日志中返回的错误值Bug
6.修复潜在的调用Dism++API返回时的判断Bug（由于Dism++规定,只有返回S_OK代表执行成功）

NCleaner 1.0.0.6
1.禁用多语言支持
2.增加Visual Studio日志清理
3.增加Installer目录清理（基本清理功能，类似WICleanup小工具）
4.使用TaskDialog替代MessageBox实现关于NCleaner对话框
5.修复潜在的规则Bug和插件Bug
6.扩充了Package Cache清理规则

NCleaner 1.0.0.5
1.改进检测规则
2.优化清理项目描述
3.把程序内嵌资源移入资源DLL以减少空间占用
4.根据Windows10的新图标尺寸重新生成了图标
5.优化在Dism++下显示NCleaner图标的效果
（需要Dism++ 10.1.5.8（2016年6月9日及之后编译）及以上版本才能享受到）
6.初步加入多语言支持
（需要Dism++ 10.1.5.8（2016年6月9日及之后编译）及以上版本才能享受到）

NCleaner 1.0.0.4
1.减小系统还原点清理扫描大小误差;并设定大小小于512MB不予清理
（根据mingkuang的建议做出的调整）
2.添加Package Cache清理
（清理后基于WIX的安装程序例如VS可以正常卸载；但升级、修复、增添组件需要联网或者备好安装镜像）
3.添加Web平台安装程序缓存清理
（安装Azure开发工具时会用到WPI，其缓存几乎只是一次性使用，可以安全删除） 
4.小工具中的NCleaner图标占位符起到显示NCleaner插件版本信息的作用

NCleaner 1.0.0.3
1.增加微软系安软无用文件清理
（提取自磁盘清理，由于Dism++引擎高效，所以原理相同但速度比磁盘清理快得多）
2.使用VC-LTL运行时替代msvc运行时，大幅度减小程序大小
（程序大小减小到原来的30% ，感谢初雨团队，特别是mingkuang）
3.修复离线模式下显示系统还原点清理的Bug
4.修复离线模式下图标缓存清理出现未指定错误的Bug
5.优化代码
6.按照mingkuang的建议在清理项目旁边加上“不建议频繁清理字样”
7.修复IE Cookies清理位置与IE 网页缓存一致的Bug

NCleaner 1.0.0.2
1.移除IE和Edge缓存清理
（因为有更好的替代清理项）
2.增加Windows图标缓存清理
（修改自自己以前在远景发布的Windows图标缓存清理工具，PS：支持离线，联机情况下只支持当前用户清理；表示大部分人用Windows也是单用户模式，所以应该影响不大）
3.添加IE和Edge各自的网页缓存和Cookies清理
（只是IE的只支持默认路径；虽然Edge也是默认路径，但Edge路径固定）
4.在小工具增加“NCleaner选项”项
（虽然其中没有实现什么功能，只是占位符；也说明你的Dism++是否集成NCleaner）

NCleaner 1.0.0.1
1.增加系统还原点清理
（这是我曾经研究内容的精华，一些被系统还原点占尽系统盘空间的人可以因此受益）
2.增加IE和Edge缓存清理
（照搬Windows 10 磁盘清理实现，因为足够简单；但是只能用于Win10联机映像且返回可清理大小不准确；因为微软自家的磁盘清理返回的Internet缓存大小也不准确；也证明我是照搬微软的实现，笑）


第三方库列表

1.VC-LTL
项目首页：https://github.com/Chuyu-Team/VC-LTL
介绍和授权：
VC LTL 是一个开源的第三方修改VC库，大家都可以免费，无条件，甚至是用于商业环境。
本库基于VC140修改，所以也同样适用Common Public License协议。
但我也希望如果你可以在程序的说明文件中声明下，使用了此库，来使更多人受益。
——mingkuang

2.M2-SDK
项目首页：https://github.com/M2Team/M2-SDK
介绍和授权：
M2-SDK是M2-Team系列工具使用的开发包
https://github.com/M2Team/M2-SDK/blob/master/License.txt