软件打包#001#使用WinRAR创建自解压可执行程序

创建Windows可执行程序之后,在有些使用场景下不需做成安装包,而是期待直接双击即可运行。我们可以将exe、dll等资源打包成压缩包,用户解压之后再运行exe文件;或者使用WinRAR软件将所有资源打包成自解压可执行程序。本文主要介绍后者。

0x01 生成演示所需的可执行程序及其依赖

本文使用 项目 WinExeDemo ,编译一个Qt界面可执行程序,然后将exe、dll等资源拷贝到一个单独的文件夹“WinExePath”中。如下图所示:

0x02 手动打包方法

第1步,我们在文件夹WinExePath上鼠标右键,然后选择WinRAR,然后选择“添加到压缩文件(A)…”。如下图所示:

第2步,按如下图所示,选择“创建自解压格式压缩文件(X)”:

第3步,依次选择“高级”选项卡,然后在当前功能界面中选择“自解压选项(X)…”:

第4步,我们在“设置”选项卡中,输入解压后运行 WinExePath\WinExeDemo.exe,如下图所示:

第5步,指定压缩文件的图标。我们在“文本和图标”选项卡中,选择压缩文件的图标,如下图所示:

第6步,设置“更新”属性。更新模式和覆盖模式的选项,如下图所示:

第7步,设置“模式”属性。临时模式和静默模式的选项,如下图所示:

第8步,到此设置完毕,我们点击确定开始打包,如下图所示:

在当前目录下,我们会发现一个 WinExePath.exe 的可执行程序,双击该可执行程序,即自动解压然后运行WinExeDemo.exe,如下图所示:

问题:双击WinExePath.exe之后,可执行程序WinExeDemo.exe自动解压到哪里了?

在第7步,设置模式属性时,我们选择了“解压到临时文件夹(T)”,我们可以在WinExePath.exe运行期间,在操作系统的临时目录中找到该文件。
如下图所示:

0x03 脚本自动打包方法

在实际项目中,一般我们会将编译和打包做成自动化脚本,当需要发布软件时,使用该脚本重新编译代码并且按需打包成发布程序。

第1步,在工程目录下,创建编译打包文件“CompileAndPackage.bat”和属性文件“config.txt”,如下图所示:

第2步,编辑脚本“CompileAndPackage.bat”,其内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@SET exename=WinExeDemo_V1.0.0.1
@SET exepath=WinExePath
@SET rarpath="C:\Program Files\WinRAR\Rar.exe"
@SET winpath="C:\Program Files\WinRAR\WinRAR.exe"
@SET devpath="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.com"

@SET SLNNAME="WinExeDemo.sln"
@SET BldType="rebuild"
@SET BldMode="Release|x64"

@echo start compile...
%devpath% %SLNNAME% /%BldType% %BldMode%

:: 创建打包
md %exepath%

copy x64\Release\WinExeDemo.exe %exepath%\WinExeDemo.exe
copy WinExeDemo\WinExeDemo.ico %exepath%\WinExeDemo.ico
xcopy WinExeDemo\lib %exepath%\ /s /y

%winpath% a -iicon./%exepath%/WinExeDemo.ico -sfx %exename%.exe ./%exepath%

%rarpath% c -z./config.txt %exename%.exe

第3步,编辑属性文件“config.txt”,其内容如下:

1
2
3
4
5
TempMode
Silent=1
Overwrite=1

Setup=WinExePath/WinExeDemo.exe

第4步,双击“CompileAndPackage.bat”,开始编译并打包,如下图所示:

打包完毕之后,在当前目录下,“WinExeDemo_V1.0.0.1.exe”即为自解压可执行程序。双击,即自动解压,然后自动运行WinExeDemo.exe。