一、下载

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. 【静态NAT】 为什么子网可以ping父网,但是父网ping不通子网?

    为什么子网可以ping父网,但是父网ping不通子网? 这就好比在公网中ping一个192.168.0.x的子网,roter无法找到这个子网的地址,所以会把package丢掉. 如何解决呢,可以在路由 ...

  2. Redis Ubuntu 安装

    1.使用 root 用户登录 Ubuntu  2. wget http://download.redis.io/releases/redis-5.0.3.tar.gz 下载最新的稳定版本到 redis ...

  3. .NET开发框架(四)-服务器IIS安装教程

    Windows Server 2012 R2 配置篇,包括服务器IIS安装.网络负载均衡器安装.ASP.NET Core 安装. 前三篇教程中,我们分享了框架的功能与视频演示介绍(文尾扫码 加入 框架 ...

  4. HTML5新增的标签与属性

    一.关于DTD HTML5 不基于 SGML,所以不需要引用 DTD(HTML 4.01 基于 SGML) 二.HTML5结构标签 <header> 标记定义一个页面或一个区域的头部 &l ...

  5. C++ luogu1352没有上司的舞会 from_树形DP

    luogu1352没有上司的舞会 分析(树形DP模板题): 没学树形DP的,看一下. 把该题抽象到一颗树中,设i的下属就是他的儿子,则有两种情况: 如果i参加,他的儿子就不能参加. 如果i不参加,他的 ...

  6. SpringBoot开发案例之分布式集群共享Session

    前言 在分布式系统中,为了提升系统性能,通常会对单体项目进行拆分,分解成多个基于功能的微服务,如果有条件,可能还会对单个微服务进行水平扩展,保证服务高可用. 那么问题来了,如果使用传统管理 Sessi ...

  7. [WPF自定义控件库]好用的VisualTreeExtensions

    1. 前言 A long time ago in a galaxy far, far away....微软在Silverlight Toolkit里提供了一个好用的VisualTreeExtensio ...

  8. C++学习书籍推荐《C++ Primer 第五版 (英文)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer(英文版)(第5版)>是全球最畅销的C++图书.这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程 ...

  9. 使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S

    使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S 先行条件: 1.了解NetCore项目基础命令,如dotnet publish   等几个常用命令. 2.了解Dock ...

  10. Java编程思想:文件加锁

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...