一、下载

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,自解压到临时目录,运行指定程序,区别在于自解压界面呈现的方式(有的是用户可视界面,有的是命令行界面)。

7z 命令行方式生成自解压exe的更多相关文章

  1. JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)

    1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...

  2. 7z命令行简单使用

    7z命令行简单使用 网上有很多博客都有记录7z的命令行使用方式,但看起来乱起八糟的,不知所云. 急于使用者可以直接看实例 注:我仅仅记录我认为常用的命令,毕竟没有那么多的精力去学习不常用的东西. 简介 ...

  3. 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容

    一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...

  4. 7z命令行参数中的路径

    最近在自动化的过程中用到了7z命令行工具,发现其参数中的路径挺有意思的,在此总结一下.本文中所有demo使用的7z版本为:15.14 x64. 压缩某个文件夹 下面的命令会把g:\temp\目录和目录 ...

  5. [转]Windows中使用命令行方式编译打包Android项目

    http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...

  6. ResHacker 用命令行方式修改 windows PE文件版本号

    由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集 ...

  7. 7Z命令行详解

    7z.exe在CMD窗口的使用说明如下: 7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <co ...

  8. 7Z命令行

    7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <command> [<switch ...

  9. Jmeter命令行方式启动

    在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...

随机推荐

  1. 微信小程序地图开发总结

    最近在做一个微信小程序地图插件,通过传入起始位置名称和经纬度信息,就可以跳转到路线规划插件页面中,在该页面中,可以根据起始位置查询自驾,公共交通,步行等方式的路线信息,并且在地图上显示路线信息,在这个 ...

  2. 跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine

    SpringCloud系列教程 | 第五篇:熔断监控Hystrix Dashboard和Turbine Springboot: 2.1.6.RELEASE SpringCloud: Greenwich ...

  3. 最牛MongoDB灾难恢复(WiredTiger.wt文件损坏,Mongo无法启动)

    WiredTiger.wt文件是mongoDB的元数据文件,存储了其他数据库表的元数据信息.笔者最近遇到了WiredTiger.wt文件损坏的情况,MongoDB无法启动,数据库中的重要数据危在旦夕. ...

  4. Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?

    前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...

  5. Python编程菜鸟成长记--A1--03--Python 环境安装(待完成)

    1.重点知识 Windows 上如何安装 Python 3 Linux 上如何安装 Python 3 Mac 上如何安装 Python 3 Windows 上如何安装 Pycharm Mac 上如何安 ...

  6. c# 图文添加文字斜水印

    项目中有个添加水印的需求,需要给图片铺满斜水印. 网上搜了半天全是添加在图片上.下.左.右的案例. 于是按照网上的某一段案例自己修改了一些代码. Bitmap bitmap = new Bitmap( ...

  7. Python Day_1

    听说Python很6,然后我的偶像小甲鱼竟然在6年前(现在2019年)就开始制作Python的教程,而前不久(世界读书日前一个星期左右),京东有活动,小甲鱼的Python第一版本打折,顺便买了本(还凑 ...

  8. 音频编辑器 OcenAudio v3.1.9.0 绿色便携版

    下载地址:点我 基本介绍 ocenaudio是一款跨平台的,易于使用的,快速的,功能强大的,好用的音频编辑软件.该软件支持Virtual Studio Technology插件,美观.统一的跨平台界面 ...

  9. CDQZ集训DAY4 日记

    早上起来之后发现座位被zzh占了,得知座位改为先来后到,什么鬼…… 于是去了另一个有耳机的机房,然而并没有什么卵用. T1上来感觉很有意思,先切50分再说.T2好像是原题的说,切了原题30分后大胆猜测 ...

  10. 一些ServiceFabric、Orleans、Asp.net Aore的例子

    Sample: ServiceFabric + Orleans + Asp.net Core : Asp.net Core 142 samples for ASP.NET Core 2.1 funda ...