84 lines
3.1 KiB
Markdown
84 lines
3.1 KiB
Markdown
# 自解压安装程序
|
||
|
||
## 简介
|
||
|
||
这是一个自解压安装程序工具,可以将多个文件打包成一个单独的可执行文件(.exe),使用户能够通过运行该可执行文件来自动解压并安装所需文件。该工具特别适合于Windows环境下的软件分发和安装。
|
||
|
||
## 功能特点
|
||
|
||
- **自包含**:将安装所需的所有文件打包到一个单独的可执行文件中
|
||
- **自动解压**:运行时自动将文件解压到临时目录
|
||
- **自动安装**:解压后自动运行安装脚本(install.bat)
|
||
- **隐藏控制台**:运行过程中隐藏命令行窗口,提供更好的用户体验
|
||
- **自定义图标**:支持使用自定义图标(app.ico)美化安装程序
|
||
|
||
## 使用方法
|
||
|
||
### 创建自解压安装程序
|
||
|
||
1. 准备以下文件:
|
||
- `install.bat`:安装脚本,将在解压后自动执行
|
||
- `mswsock.dll`:需要打包的DLL文件
|
||
- `app.ico`:(可选)自定义图标文件
|
||
|
||
2. 运行程序:
|
||
```
|
||
build.exe
|
||
```
|
||
|
||
3. 程序将生成 `install.exe` 自解压安装文件
|
||
|
||
### 使用生成的安装程序
|
||
|
||
用户只需双击生成的 `install.exe` 文件,程序将:
|
||
|
||
1. 自动检测是否为自解压模式
|
||
2. 将打包的文件解压到临时目录(`%TEMP%\myapp_install`)
|
||
3. 自动运行解压后的 `install.bat` 脚本完成安装
|
||
|
||
## 技术原理
|
||
|
||
该程序使用以下技术实现自解压功能:
|
||
|
||
1. **自检测机制**:通过检查文件末尾的特殊标记来判断是否为自解压模式
|
||
2. **文件打包**:使用Go语言的zip库将文件打包成zip格式
|
||
3. **数据附加**:将zip数据附加到可执行文件末尾,并添加8字节的大小标记
|
||
4. **解压机制**:运行时从自身读取并解压zip数据到临时目录
|
||
5. **静默安装**:使用Windows API隐藏控制台窗口,提供无干扰的安装体验
|
||
|
||
## 开发说明
|
||
|
||
### 程序结构
|
||
|
||
- `main()`:主函数,判断运行模式并调用相应功能
|
||
- `isSelfExtracting()`:检测是否为自解压模式
|
||
- `createSelfExtractingExe()`:创建自解压可执行文件
|
||
- `extractFiles()`:从自身提取文件到临时目录
|
||
- `runInstallBat()`:运行安装脚本
|
||
- `addFileToZip()`:将文件添加到zip包
|
||
- `hideConsoleWindow()`:隐藏控制台窗口
|
||
|
||
### 自定义
|
||
|
||
- 修改 `requiredFiles` 数组可以更改需要打包的文件列表
|
||
- 更换 `app.ico` 文件可以自定义安装程序图标
|
||
- 修改 `install.bat` 可以自定义安装过程
|
||
|
||
## 注意事项
|
||
|
||
1. 确保所有需要打包的文件都存在于程序运行目录
|
||
2. 如果需要管理员权限运行安装脚本,请在 `install.bat` 中添加相应代码
|
||
3. 生成的安装程序可能会被某些杀毒软件误报,这是因为自解压程序的特性与某些恶意软件类似
|
||
|
||
## 系统要求
|
||
|
||
- 操作系统:Windows
|
||
- 无其他特殊依赖
|
||
|
||
## 构建方式
|
||
|
||
- 生成环境:go mod init build
|
||
- go generate
|
||
- 生成图标:rsrc -ico app.ico -o app.syso
|
||
- 构建32位:set GOARCH=386
|
||
- 构建程序:go build -ldflags="-H windowsgui" -o builder.exe |