快速精简软件,如何让软件缩小到原来的5%大小,从删除文件入手,到修改C++引用库,合规解决存储问题

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:图片列表预览,实际不使用,不要可删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

戴尔G3 Ubuntu18.04双系统安装

ROS学习需要使用Linux系统,首先就是Ubuntu,我选择的是18.04.6这个版本,因为后面我要使用以Jetson Nano为主控的Jetbot进行ROS编程,Jetbot所带的出厂镜像就是18.04,为了方便程序移植,以及减少不必要的麻烦。…

【消息队列】聊一下Kafka副本机制

副本机制的好处 副本在分布式系统下,不同的网络互联的机器保存同一份数据。我们知道在分布式系统中,都会通过数据镜像、数据冗余的方式来提升高可用性。 提供数据冗余:这点比较好理解,说白了就是通过数据冗余在不同的服务器上&a…

大家副业都在做什么?csgo搬砖靠谱的副业推荐给你

从来没想过,以前只会玩CSGO的男孩子,现在居然能借助游戏赚到钱了!甚至不需要什么专业的技巧,简简单单 在steam平台选择有利润的道具后,再上架到国内网易BUFF平台,赚取“信息差”差价而已! 谁大…

SpringCloud学习(六)——Feign的简单使用

文章目录 1. Feign 的使用1.1 引入依赖1.2 添加注解1.3 编写Feign客户端1.4 测试 2. Feign中的自定义配置2.1.配置文件方式2.2.Java代码方式 3. Feign 性能优化4. Feign的抽取式使用4.1 抽取配置4.2 引入依赖4.3 指明Client 在此之前,我们服务之间需要进行调用的时候…

读懂MAC地址

MAC地址是一种用于标识计算机网络设备的唯一地址。它是由48个二进制数字组成的,通常表示为12个十六进制数字,每两个数字之间用冒号或连字符分隔开。MAC地址由设备制造商在生产过程中分配,以确保网络上每个设备都有唯一的标识符。 MAC地址的规…

第11章_常用类和基础API

第11章_常用类和基础API 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 字符串相关类之不可变字符序列:String 1.1 String的特性 java.lang.String 类代表字符串…

【大数据之Hadoop】十七、MapReduce之数据清洗ETL

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将分散、零乱、标准不统一的数据整合到一起,为决策提供分析依据。 ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。 1 ETL体系结构 ETL主要是用来实现…

LLM总结(持续更新中)

引言 当前LLM模型火出天际,但是做事还是需要脚踏实地。此文只是日常学习LLM,顺手整理所得。本篇博文更多侧重对话、问答类LLM上,其他方向(代码生成)这里暂不涉及,可以去看综述来了解。 之前LLM模型梳理 …

龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代

4月4日,龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代。龙芯 ERP 系统全系统使用国产化平台,私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上,使用自研 Loongnix 操作系统、自研 LoongDB 数据库及龙芯…

【SQL Server】无需公网IP,就可以远程连接SQL Server数据库

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库的重要性相信大家…

Redis-----什么是Redis?

什么是Redis? redis是一个基于内存的key-value结构数据库。 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 Redis入门 redis简介 redis是一个开源的内存中的数据结构存储系统,数据库…

哪个洗脱一体机好用?好用的洗拖一体机推荐

洗地机是一款使用非常方便的清洁工具,通常可以实现吸、拖、洗三个功能,对于各类家庭污渍都有着不错的处理能力,无论是干燥垃圾还是潮湿垃圾一律可以有效清理。不过很多新手朋友在选购洗地机时会因为看不懂参数而频繁踩雷。本文为大家整理了洗…

详解语义分割deeplabv3+模型的工业应用流程

来源:投稿 作者:某一个名字 编辑:学姐 导语 在工业视觉应用中,目标检测算法常用于特征的粗定位,而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等,根…

keil5使用c++编写stm32控制程序

keil5使用c编写stm32控制程序 一、前言二、配置图解三、std::cout串口重定向四、串口中断服务函数五、结尾废话 一、前言 想着搞个新奇的玩意玩一玩来着,想用c编写代码来控制stm32,结果在keil5中,把踩给我踩闷了,这里简单记录一下…

【OCR】CTC loss原理

1 CTC loss出现的背景 在图像文本识别、语言识别的应用中,所面临的一个问题是神经网络输出与ground truth的长度不一致,这样一来,loss就会很难计算,举个例子来讲,如果网络的输出是”-sst-aa-tt-e’, 而其ground truth…

深入剖析:如何优化Android应用的性能和内存管理

深入剖析:如何优化Android应用的性能和内存管理 性能和内存管理的重要性 在今天的移动应用开发中,用户对于应用的性能和体验要求越来越高。一款性能卓越的Android应用能够提供流畅的操作体验、快速的响应速度以及较低的资源消耗,从而提高用户…

SpringBoot 集成webSocket

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

HTML5 Input 类型

文章目录 HTML5 Input 类型Input 类型: colorInput 类型: dateInput 类型: datetimeInput 类型: datetime-localInput 类型: emailInput 类型: monthInput 类型: numberInput 类型: rangeInput 类型: searchInput 类型: telInput 类型: timeInput 类型: urlInput 类型: weekHTM…

CLIMS:弱监督语义分割的跨语言图像匹配

文章目录 CLIMS: Cross Language Image Matching for Weakly Supervised Semantic Segmentation摘要方法语言图像匹配框架 实验结果 CLIMS: Cross Language Image Matching for Weakly Supervised Semantic Segmentation 摘要 存在的问题 CAM(类激活图)通常只激活有区别的对象…

辉煌优配|黄金价格创近两年半新高!2只黄金股一季度预增

黄金板块早盘走强。 4月14日早盘&#xff0c;黄金板块团体走高&#xff0c;次新股四川黄金开盘半小时内拉升至涨停&#xff0c;封单资金到达7279.78万元&#xff0c;中润资源、晓程科技涨幅居前&#xff0c;分别为8.96%、8.48% 消息面上来看&#xff0c;近期全球黄金期货价格节…