一、下载
7z是一个免费的工具,除了通过命令行的方式提供各种文件、压缩包相关的操作外,还提供了一种方式可以打出自解压的exe程序。该程序从运行到结束经历了三个流程:
(1) 解压文件到用户临时目录;
(2) 运行指定的启动程序/脚本;
(3) 运行完之后退出删除解压文件;
在网站 https://www.7-zip.org/ 7z官网上可以下载最新的7z程序,运行安装,安装之后的目录结构为:
其中 7-zip.chm是帮助文档,7z的许多命令行用法在该文档中均可查到;
根据文档的说明,若想打出自解压的exe,需要在官网上下载 LZMA SDK包获取其中的 {SFX_Module}相关文件。
二、配置
根据chm手册了解到若想要打出自解压的exe,需要如下步骤:
(1) 从LZMA SDK解压目录 bin 目录下将以下3个文件拷出放到7z的解压目录下。
(2) 准备程序,这里比较简单,一个目录下三个文件,其中一个是启动脚本。
(3) 准备config.txt,内容如下
;!@Install@!UTF-8!
Title="Patch Tool"
ExecuteFile="start.bat"
;!@InstallEnd@!
(4) 准备生成exe的脚本文件,内容如下:
del test.7z
del test.exe set srcpath=%1% //传递test文件夹目录绝对地址
echo %srcpath%
7z a test.7z "%srcpath%\*" -r -mx -mf=BCJ2 //将test文件夹内所有文件压缩到7z包中,不包含test目录
copy /b 7zSD.sfx + config.txt + test.7z test.exe
(5) 将config.txt、生成exe的脚本、7z相关的文件放到一个目录下,如下
通过以上步骤,exe自解压相关的内容基本配置完毕。
三、运行
直接运行 windowsExe.bat脚本,输入test目录绝对地址,会自动生成7z文件和exe文件,双击运行exe文件即可。
四、知识点
根据帮助文档的内容,可以得知 7z 提供了一下{SFX_Module}配置
SFX_Module | Description |
---|---|
7z.sfx | SFX module (GUI version) |
7zCon.sfx | SFX module (Console version) |
7zSD.sfx | SFX module for installers (GUI version) |
7zS2.sfx | small SFX module for installers (GUI version) |
7zS2con.sfx | small SFX module for installers (Console version) |
生成自解压exe的命令必须是:copy /b 7zSD.sfx + **.txt + **.7z **.exe (其中**.txt可选)。
若将7zSD.sfx更换成表格中的不同sfx文件,会有不同结果如下:
(1) 7z.sfx
实际上生成的仅是自解压功能的exe,双击exe,会出现解压界面,要求用户选择自解压的路径,但是 **.txt配置的内容均是无效的。仅是完成自解压的功能。
(2) 7zCon.sfx
与(1) 的效果一致,也是仅完成自解压的功能,唯一区别在于双击exe,出现的是命令行,所有信息在命令行中输出。
(3) 7zS 开头的sfx
这类才是可安装的exe,自解压到临时目录,运行指定程序,区别在于自解压界面呈现的方式(有的是用户可视界面,有的是命令行界面)。