一、准备工作
1.1 qt静态编译库,可以自己编译,也可以通过网上下载别人已经编译好的
已编译好的链接:qt5vs2017静态编译库-QT文档类资源-CSDN下载
1.2 压缩解压库,如 quazip 或 7zip, 推荐7zip,有进度接口,可以展示进度,quazip压缩解压时无进度接口。
已编译好的链接:qt7zip压缩解压含进度-QT文档类资源-CSDN下载
二、制作原理及步骤
核心原理就是:将一个文件写入到安装包exe的末尾,安装包运行的时候,再将末尾的文件提取出来。(困扰了很多年,不敢相信是如此简单)
2.1 将需要打包的程序目录,压缩成zip文件(如data.zip)
2.2 创建安装包程序:安装包必须是静态exe,用 qt通过静态库创建静态安装包exe(如BaseInstall.exe)
2.3 创建制作安装包的程序:此程序不需要是静态exe, 功能是将data.zip加到BaseInstall.exe文件的末尾合成一个安装包Install.exe,然后再在intall.exe末尾写入一个int数据,int的值为data.zip的大小。(文件写入方式要通过字节流写入,不要用字符流。)
2.4 运行install.exe: Install.exe 和 BaseIntall.exe 是同一套代码的程序。运行install.exe就是运行BaseInstall.exe, 程序启动入口的代码中,要读Install.exe 末尾处的int值读出来,然后根据int值,将data.zip数据读出来,写入到一个临时文件中如dataTmp.zip。然后将dataTmp.zip解压到指定目录,data.zip中的程序至此就安装到电脑上了。最后其他锦上添花的工作就是添加桌面快捷方式,添加程序自启动,添加开始菜单栏等。
2.5 剩下的其他工作就是丰富BaseInstall.exe的界面,比如自定义安装界面。