1. 目的
很多时候,一个工具包有除了一个exe还有不少配置文件及dll库。如果只想给客户发布一个exe,要怎么办呢?使用静态编译,不使用dll,将资源编译到exe中,使用时再释放出来。这种方法比较麻烦,而且需要将资源释放到临时目录,针对一些有安全性的工具,安全性也不够。有没有简单又安全的方法呢?
2. WinRAR
WinRAR有自带自解压压缩格式,可以定制压缩解压过程,并且在解压之后运行指定程序。这样看起来,压缩一个工具包为一个exe,自解压直接运行,就相当于是一个独立的exe了。
2.1. UI操作
-
选中需要压缩的文件,点击右键 添加到压缩文件
-
常规选项中 勾选 创建自解压格式压缩文件
-
高级选项中 点击自解压文件选项 进行自解压设置
-
模式设置:解压到临时文件夹 防止文件存在时解压失败,安静模式隐藏解压过程
-
解压后运行:点击后直接运行exe
-
图标设置:
2.2. 自动化脚本
echo off
set RAR_FILE="E:\Program Files\WinRAR\WinRAR.exe"
REM 源路径可以使用通配符
set PACK_SRC="J:\SPIDownloadTool\*"
rem 打包后生成exe的名字
set PACK_PATH=new_name.exe
rem 打包后生成exe的图标
set ICON_PATH="j:\main.ico"
rem 指定解压后启动的exe路径
echo Setup=j:\SPIDownloadTool\LibraMPTool.exe>info.txt
rem 指定解压到系统临时目录,在exe启动关闭后会自动删除,如果不指定TempMode,则解压到当前目录
echo TempMode>>info.txt
rem 指定静默模式,即自解压过程中不显示解压的过程
echo Silent=1 >>info.txt
%RAR_FILE% a -sfx %PACK_PATH% %PACK_SRC% -zinfo.txt -iicon%ICON_PATH%
del /F /Q info.txt
3. Enigma Virtual Box
WinRAR只是将文件解压到临时路径来执行。如果有更高要求,不希望释放到临时目录执行,希望完整释放到内存中来执行。可以使用Enigma Virtual Box。
Enigma Virtual Box是软件虚拟化工具,它可以将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。它支持所有类型的文件格式,虚拟化后的软件不释放任何临时文件到您的硬盘,文件模拟过程仅在内存运行。
-
主程序
指定主程序,输入的虚拟文件即以主程序为标准,其图标、版本信息都和主程序相同。
-
相关文件
一般选择文件夹递归,会递归加载所有文件。如果有其他需求,可以选择相应设置。
Engine Virtual Box的虚拟文件系统有对应一个虚拟目录。除非有特殊需求,需要指定绝对路径,一般选择默认路径即可。
- 打包
其他选项,一般默认即可。如果有注册表需求,选择注册表项进行虚拟注册表设置。最后点击打包,即可以生成单独一个exe.