自解压原理介绍及制作
自解压文件:一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,因为它可以不用借助任何压缩工具,而只需双击该文件就可以自动执行解压缩,因此叫做自解压文件。同压缩文件相比,自解压的压缩文件体积要大于普通的压缩文件(因为它内置了自解压程序),但它的优点就是可以在没有安装压缩软件的情况下打开压缩文件(文件类型为·exe格式)。原理:sfx文件通常为二进制文...
目录
自解压文件:
一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,因为它可以不用借助任何压缩工具,而只需双击该文件就可以自动执行解压缩,因此叫做自解压文件。同压缩文件相比,自解压的压缩文件体积要大于普通的压缩文件(因为它内置了自解压程序),但它的优点就是可以在没有安装压缩软件的情况下打开压缩文件(文件类型为·exe格式)。
原理:
sfx文件通常为二进制文件,用作压缩解压软件的自解压程序模板。其实就是一个exe程序,组成格式如上
主要分为三部分:
- sfx文件打头,这是一个真正的程序,实现了根据config.txt配置信息解压缩尾部的压缩文件,并执行相应的操作
- config.txt文件做相关的配置,比如标题,解压缩位置,解压缩之后执行什么样的操作等
- 压缩文件,这里是真正的数据内容
自解压文件制作 —— 基于WinRAR:
选中要压缩的文件 -> 右键 -> 添加到压缩文件:
勾选创建自解压格式压缩文件。-> 确定:
得到test.exe
双击exe,弹出解压提示窗,继续即可完成解压:
自解压高级设置:
右键 -> 添加到压缩文件 -> 勾选创建自解压格式压缩文件 -> 切换高级页签 -> 点击自解压选项:
这里可以设置解压路径,exe图标,提取后运行文件,是否静默等 高级选项。
例如:将上述文件高级选项设置为:解压路径,提取后运行,静默设置如下图:
生成exe后,双击,可看到,解压出了11文件夹,并自动打开了bbb.txt文档:
右键test.exe,选择用WinRAR打开,查看注释,发现注释中包含自解压命令脚本。—— WinRAR的自解压命令是可以从注释中装载的。
WinRAR命令行创建自解压文件:
WinRAR安装后,安装目录有WinRAR.chm帮助文档,里面介绍了命令行参数的调用方式。
以上述文件举例:
命令行写法为:
"C:/Program Files/WinRAR/WinRAR" a aaa.exe aaa bbb.txt -sfx -iiconh:/gg/1.ico -zzhushi.txt
双击aaa.txt,效果与上面GUI操作一致。
注释文件文本如下:
自解压文件制作 —— 基于7z。
https://www.7-zip.org/ 下载7Z安装包。安装后,安装目录有对应的帮助文档。7-zip.chm
根据7Z文档中 -sfx 的使用介绍。
7z a -sfx a.exe *.txt 命令可进行文件自解压。
以上述文件为例,命令为 >
"C:/Program Files (x86)/7-Zip/7z" a -sfx7z.sfx aaa.exe aaa bbb.txt
运行可弹出解压提示窗。
但这个命令没办法包含高级命令选项。
如文档所述,高级命令选项需要借助配置文件:
注意其例子中使用的sfx文件为7zSD.sfx,该文件不存在与7z安装目录中,同样的操作方式用安装目录中的7z.sfx操作,不能完成自解压高级命令选项。
要完成该操作,需要下载7zSDK, https://www.7-zip.org/sdk.html
下载后bin\installer 目录中有demo,一个config.txt文件,用于包含高级选项配置,一个cr.bat包含打包命令。
该命令可直接运行。详细可下载文件查看并修改,不再赘述。
打包出的exe,如下:
右键查看详细信息:
全部为7z相关信息。
这个是7z的相关sfx文件自带的。(sfx本质其实就是一个exe,可以按字节偏移解压文件,并按配置文件运行文件。)
所以要修改这个信息,可以用resource_hacker工具,直接打开sfx文件,对其进行相应修改。截图如下:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)