InstallerSolution/README.md
2025-05-13 17:10:30 +08:00

3.1 KiB
Raw Blame History

自解压安装程序

简介

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