Hi~大家好,今天制作一个简单的精简软件的教学~
事先说明下,精简软件并不违反任何规定,尤其是开源软件,这里也仅讨论开源软件的修改,根据几乎所有开源软件的开源规则,精简软件,本质也就是修改软件,这种行为是被允许的,但是不能公开,也就是不能发到网上
严谨一点的说,开源软件的软件范围定义就是,你下载的文件即软件,也就是一个文件夹,或者一个压缩包,或者一个安装包文件,或者一个普通文件,而这些文件在运行时产生的所有其他文件也可被称为此软件的一部分,例如缓存文件、配置文件等
其中,绝大部分软件的用户配置文件是可被修改且公开的,因为这需要我们自己设置,而这通常也是对个人用户来说最重要的部分,比如Steam最重要的不是本体,而是我们本身,如果我们不登录账户,也就没有用户配置文件,我们即使拥有Steam也什么都做不了,所以对个人用户来说,用户配置文件就是最重要的,这只是个例子
而修改用户配置文件并不能精简软件,精简软件中的"精简"意味这做减法,也就是去掉软件中多余的功能,保留自己认为需要的功能,同时减少软件体积占用,这也就是精简的意义
下面,我们将通过一个很好的例子进行演示,来了解如何精简软件,ShareX是一个开源软件,开源协议为GPL-3.0 license,也就代表,我可以修改软件中的部分,并且公开,但是必须带有"修改版"字样
如果你要修改的软件是其他开源协议,如果不知道开源协议的具体内容,建议不要公开,仅个人使用,因为这一般是被允许的,如果要精简的软件是不开源的软件,就一定不要公开,这是一定不被允许的,个人使用即可
下面,让我们制作一个ShareX修改版,首先,这是ShareX的下载地址,这是下载好后的目录:
我们来了解哪些能删除,哪些不能删除,首先,ShareX是个截图软件,ffmpeg.exe是用来处理视频的,这个只需要记住即可,很多软件都有ffmpeg.exe,大部分在剪辑软件内,而ShareX是个很好的例子,这个软件几乎带有所有不必要的组件
第一步,启动软件,然后删除ffmpeg.exe,如果没有提示文件已被占用,说明是可以的,然后重启软件,如果还能重启,这说明精简成功了
那么问题来了,既然启动时能删除,重启也可以,那么这个文件存在的意义是什么呢?
A:大部分软件中即使带有功能,需要用到其他文件,删除其他文件也不会提示文件已被占用,因为没有被使用,ShareX就是:
这里的屏幕录制功能就用到了ffmpeg.exe,所以删除之后,理论上,我们是用不了这个功能的,但是软件既然能正常启动,所以没有硬编码+检测,我们可以这样做,不会有问题,只要不使用这个功能即可
同样的道理,我们还可以删除Recorder-devices-setup.exe,这个看名称就能猜出来是用来设置录音设备的,一个截图软件,我认为大部分人应该用不到录音设备,你们觉得应不应该删除呢?
同样的,正常重启了,说明这是可以的
语言文件上,我们可以查看这篇文章参考:
https://blog.csdn.net/alice_tl/article/details/78918853
删除除了zh_CN以外的语言文件即可,语言文件夹默认叫做Languages,一些软件可能叫做Lang,里面会有语言文件,我们不用管后缀,像是ShareX的Languages里面是一堆语言文件夹,我们只需要保留zh_CN文件夹即可,里面的不用动,这个删了会导致软件变成英语,如果非要动的话,保留ShareX.resources.dll,删除其他的也不是不行,因为删除其他的看不出来,99%还是中文
接下来是ShareX文件夹,这里存放了这些文件:
你们的可能不一样,如果多出了,只需要保留这些文件即可,删除History字样的文件,而Backup里面,如果有类似"时间"作为后缀或结尾的文件,不要删除。因为那是之前的用户配置备份,我们要删除的是不带时间后缀的文件,因为那是默认的用户配置
如果不需要备份的配置文件,也可以把Backup文件夹删除,因为修改的其实是ShareX文件内的那三个配置文件,Backup就是字面意义上的备份文件
ShareX没有登录和注册的概念,因为这是个截图软件,那么用户配置默认就是这样的,几乎所有不需要登录的软件都有一个默认用户配置文件保存在类似的文件夹,如果我们修改软件中的设置,这个也会跟着改变,所以这个是一定要谨慎删除的,以Config结尾的文件一般代表某个配置文件,建议不要动
下面我们来看Stickers文件夹,里面还有一个文件夹,叫BlobEmoji,里面全是图片,这个就是重点,图片在任何软件中,甚至在任何文件中,都是最占体积的,可能有人会说,这个文件夹没有最开始的ffpmeg.exe大,但是如果你细心点,你会发现,ffmpeg.exe是可以被压缩软件解压的,而图片不可以,图片本质就是文件,而exe程序本质是一个包、夹,是一堆文件的集合,不是一个文件
单独的一个文件中,图片是最大的,虽然有很多个例,但大体上,图片是最占用空间的
我们要删除BlobEmoji,因为截图软件不需要一大堆表情包图片,果然,删除后没有影响,可正常启动
由于一一列举太麻烦,建议把计算机相关的一些简写都了解,这样非常有助于精简软件
这是一个很好的例子:FluentFTP.dll
这个动态链接库复杂实现把截图上传到FTP服务器,而大部分人应该是用不到的,我们直接删除即可,果然可以正常启动
其他的就不演示了,直接说明:
zxing和zxing相关dll:识别二维码功能实现,不要可删除
Renci.SshNet.dll:SSH功能实现,不要可删除
ImageListView.dll:图片列表预览,实际不使用,不要可删除