2025-05-13 17:10:30 +08:00

84 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自解压安装程序
## 简介
这是一个自解压安装程序工具,可以将多个文件打包成一个单独的可执行文件(.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