Exe合并压缩:将dll等文件依赖压缩到一个exe中

2023-05-16

Exe合并压缩:将dll等文件依赖压缩到一个exe中

  • 1. 背景
  • 2. 压缩方法
  • 3. 配置自解压(SFX)选项
  • 4. 执行新的exe
  • 博主热门文章推荐:


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 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的?(在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Exe合并压缩:将dll等文件依赖压缩到一个exe中 的相关文章

  • JAVA版本:判断101-200之间有多少个素数,并输出所有素数。

    题目 xff1a 判断101 200之间有多少个素数 xff0c 并输出所有素数 程序分析 xff1a 判断素数的方法 xff1a 用一个数分别去除2到这个数 xff0c 如果至少有一个数能被整除 xff0c 则表明此数不是素数 xff0c
  • arm64架构ubuntu18.04国内镜像源

    jetson xavier nx下换国内源 xff0c 步骤如下 xff1a span class token shebang important bin bash span span class token function cp spa
  • 安装和配置OpenStack客户端(Jesse翻译)

    xfeff xfeff 安装和配置 OpenStack 客户端 xff08 Jesse 翻译 xff09 原文来自 icehouse的OpenStack文档 回忆 xff1a 在前面部分 xff0c 你已经使用了 keystone 客户端
  • 联通家庭宽带光猫DDNS设置

    1 目前家里宽带光猫ppoe拨号获取的IP全部都是非公网IP 打96169宽带专家转人工客服申请更换公网IP 一天内会有专人联系 更换成公网IP后 重启光猫 在公司或者其他地方ping下家里光猫获取到的公网IP看下是否能ping通 2 申请
  • Matlab如何抓取excell表格里的指定数据

    每次从示波器上采集的数据总是会带有示波器的相关信息 xff0c 没法直接load到matlab里 xff0c 每次手动删除让人感到疲惫 xff0c 特别是数据量达到100 43 的时候 瞬间emmm 示波器采到的数据如下图 xff1a 于是
  • nginx更改进程名称 学习笔记

    如何更改进程名称 在进入正题之前 xff0c 我们需要了解一下以下参数的作用 xff1a span class token keyword int span span class token function main span span
  • Apache 2部署SSL证书

    在Ubuntu系统Apache 2部署SSL证书 本文介绍了如何在Ubuntu系统以及Apache 2中安装阿里云SSL证书 前提条件 已从SSL证书控制台下载Apache服务器证书 已安装Open SSL 环境准备 操作系统 xff1a
  • NVDIA Jetson TX2软件介绍

    介绍 JETSON TX2 模块 它是一台基于 NVIDIA Pascal 架构的 AI 单模块超级计算机 它性能强大 xff0c 但外形小巧 xff0c 节能高效 xff0c 非常适合机器人 无人机 智能摄像机和便携医疗设备等智能终端设备
  • 12.6V/8.4V锂离子或锂聚合物电池充电器

    AL1261是一款专门为高精度的线性锂电池充电器而设计的电路 xff0c 非常适合那些低成本 便携式的充电器使用 它集高精度预充电 恒定电流充电 恒定电压充电 电池状态检测 充电结束低泄漏 充电状态指示等性能于一身 xff0c 可以广泛地使
  • import requests ModuleNotFoundError: No module named 'requests'

    错误描述 xff1a import requests ModuleNotFoundError No module named 39 requests 39 解决办法 xff1a Step 1 xff1a 打开命令窗口 xff0c Win 4
  • UITableViewController

    UITableViewController 表视图控制器 UITableViewController继承自UIViewController 自带了一个tableView 其根视图就是tableView 创建UIViewVontroller运
  • stm32开发板点亮led遇到问题

    最近由于毕业设计是四旋翼无人飞行器的系统设计 xff0c 在学STM32F103R8 xff0c 学长自己设计的一块板子 xff0c 让我根据野火的教程一步一步做 xff0c 先熟悉一下板子的工作原理 xff0c 为以后编程控制电机转速做准
  • Debian Linux 的安装

    Debian Linux 的安装 作者 xff1a Grey 原文地址 xff1a 博客园 xff1a Debian Linux 的安装 CSDN xff1a Debian Linux 的安装 说明 本安装说明是基于 Windows 10
  • 基于pytest设计自动化测试框架实战

    简介 基于pytest实现测试用例收集方案 自定义参数化方案 页面元素定位数据存储方案 测试用例数据存储和维护方案 xff0c 这样可直接进入到设计编写测试用例业务代码阶段 xff0c 避免重复设计这些方案以及方案不统一导致维护复杂 困难的
  • windows安全模型--令牌(token)和安全描述符

    当一个程序访问一个资源时 xff0c 需要有相应的访问权限 windwos安全模型中 xff0c 有两个角色 xff0c 一个就是访问者 xff08 进程 xff09 xff0c 一个是被访问者 xff08 资源 xff09 资源 xff0
  • firefox查找插件和插件媒体类型的方法

    firefox从两个位置加载插件 xff0c 并查找插件对应的媒体类型 xff08 mimetype xff09 1 安装目录的plugins文件夹下 可以直接把一个插件的dll放到plugins目录下 xff0c 该插件对应的媒体类型 x
  • Windows内存机制的问与答

    学习windows内存管理过程中 xff0c 会先有些疑问 xff0c 然后在不断学习中得到解答 xff0c 解答也是基于我的不断理解 xff0c 未必完全正确 下面记录一些 一 如果一个内存页没有被修改过 xff0c 操作系统可以直接释放
  • Python中if语句的使用方法

    if语句用来表示某种可能的情况 xff0c 并如何处理该情况 if语句可以用来表示一种可能性 两种可能性或者多种可能性 1 一种可能性 单个的if语句表示一种可能性 xff0c if关键字后面跟着表达式 xff0c 当表达式是True时 x
  • [Util]-VSCode+WSL开发环境

    文章目录 WSL升级到WSL2安装编译环境相关命令 VSCode快捷键书签代码折叠 配置文件C 43 43 格式化 远程linux 调试程序启动调试变量查看print打印display追踪x内存 变量监控 VSCode是非常流行的代码编辑器
  • 用递归方法求n的阶乘(C语言)

    用递归方法求n xff01 include lt stdio h gt int main int n int y printf 34 input a integer number 34 scanf 34 d 34 amp n y 61 fa

随机推荐