1. 背景
如果exe对某些dll有依赖,并且dll无法打包进原始exe时(比如没有该exe的工程源码,或者懒得搭建一套 VS或Python环境),可以优化将exe文件和依赖的dll文件合并成一个最终的release.exe,
通常的简便做法是直接将exe与dll放入同一目录下作为软件发布,但是相关dll依赖会直接暴露出来,并且不方便迁移
压缩合并的优点是在不同机器调用只需一个exe,而不需要在同目录放入相关dll,有一个缺点是加载速度会比直接调用dll慢一些(因为启动前需要解压)
除了Dll文件依赖,任何exe有关的文件,比如icon、binary等,都可以通过这个方式打包到一个exe中
2. 压缩方法
这类压缩打包方法有很多,这里介绍利用WinRAR来压缩打包的方法:
- 下载WinRAR:https://www.win-rar.com/
或者也可以用国内一些类似压缩软件,
- 下载后,选中exe和相关的依赖文件,(原始 .exe 与相关dll文件放在同一目录下)
- 右键winRAR选择 “Add to archive”:添加到压缩文件中:
3. 配置自解压(SFX)选项
在弹出来的压缩选项中,进行如下配置:
- 选中自解压文件 SFX (SelF-eXtracting) ,设置一个新的exe文件名,比如Release.exe
- 在Advance选项中,选中SFX options 高级自解压选项
- 设置解压之后要执行的文件:
- 选中解压到临时文件夹,安静模式选择全部隐藏
- 勾选解压并更新文件,覆盖所有文件
- 最后设置下SFX exe的图标文件
4. 执行新的exe
点击确定后, 会在目录下生成合并后的Release.exe, 即可放到任何PC或者目录执行
原理:当双击运行新生成的Release.exe时,会生成一个临时文件夹,将所有的内容解压,并运行setup配置的.exe。当关闭程序时,这个临时文件夹就会删除。
该临时文件夹一般默认在C:\Users\xxx\AppData\Local\Temp\RarSFX0 目录。。
当然如果有工程源码,还是推荐通过工程方式打包到一个exe中,
比如Python通过PyInstaller 将DLL文件直接打包进exe, 可参考: https://howiexue.blog.csdn.net/article/details/129372320
博主热门文章推荐:
一篇读懂系列:
- 一篇读懂无线充电技术(附方案选型及原理分析)
- 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
- 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
LoRa Mesh系列:
- LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
- LoRa学习:信道占用检测原理(CAD)
- LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)
网络安全系列:
- ATECC508A芯片开发笔记(一):初识加密芯片
- SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
- 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
- AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例
嵌入式开发系列:文章来源:https://www.toymoban.com/news/detail-462638.html
- 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
- IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
- Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
- Android底层调用C代码(JNI实现)
- 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
- Android/Linux设备有线&无线 双网共存(同时上内、外网)
AI / 机器学习系列:文章来源地址https://www.toymoban.com/news/detail-462638.html
- AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
- AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
- AI: 什么是机器学习的数据清洗(Data Cleaning)
- AI: 机器学习的模型是如何训练的?(在试错中学习)
- 数据可视化:TensorboardX安装及使用(安装测试+实例演示)
到了这里,关于Exe合并压缩:将dll等文件依赖压缩到一个exe中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!