7z 命令行方式生成自解压exe

一、下载

    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_ModuleDescription
7z.sfxSFX module (GUI version)
7zCon.sfxSFX module (Console version)
7zSD.sfxSFX module for installers (GUI version)
7zS2.sfxsmall SFX module for installers (GUI version)
7zS2con.sfxsmall 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,自解压到临时目录,运行指定程序,区别在于自解压界面呈现的方式(有的是用户可视界面,有的是命令行界面)。

 

转载于:https://www.cnblogs.com/sandyflower/p/9565075.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值