逆风微光:楼主安装包是怎么做的啊 感觉很漂亮,是自己写的吗 能否共享下安装包源码

这里说一下制作安装包的原因,之前做的程序打包都是用的第三方软件,最后生成的二进制安装包。打包程序目前有很多,也有很高的灵活性,但唯独就是在设置界面上很头疼,需要脚本等设置还不一定达到你的要求,另外一些好看的安装包软件都是收费的如火凤等。其实qt官方也提供了安装包制作框架QtIFW(学习参考:https://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/73194927),但界面还是没有达到我想要的效果,目前国内主流程序一般都是自己定制安装包,也就是我上图差不多的样子,所以我就决定自己做,自己动手丰衣足食。
自己做的其实是一个伪安装包程序,真实的是利用了zip解压的原理。源码太丑就不上了,其实也没什么技术含量,下面说一下思路:
思路很简单大家一看就会,为了能使程序独立运行有两种方案,一个是把qt的动态库捆绑到主程序上(这个会使杀毒软件报毒)另一个方法就是静态编译。ok我这里选的就是静态编译。界面效果就不用多说了,论坛里的大神案例多得很,安装包中的动画效果根据个人需要自定义如幻灯等,我这里比较简单用的是一个gif动画做到的。下面说说解压,我的思路是把程序的安装文件也就是整个安装文件夹(含住程序及动态库)进行压缩,然后以资源的形式加载到安装包程序中,安装过程就是把你的压缩包从资源文件中提取出来到目标系统的临时目录,然后在执行zip解压解压的目标就是用户选的安装目录,最后就是配置系统的快捷方式及开机启动等。这里要注意压缩时如果压成一个包体积会很大,加载到资源中编译的时候会直接提示占用内存资源过大,我经过尝试把压缩包分包压缩且在10mb左右,以多包的方式加入到资源中即可成功。原理就是这样,很简单大家可以尝试一下。
系统的一些设置源码如下:
- 1.创建桌面快捷方式
- QFile::link("C:/data/软件执行程序.exe", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation).append("/").append("快捷.lnk"));
- 2.创建开始菜单快捷方式
- QString startMenuPath=QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation).append("/").append(QStringLiteral("软件名"));
- QDir dir(startMenuPath);
- if(!dir.exists()){
- dir.mkdir(startMenuPath);
- }
- if(dir.exists()){
- QFile::link("C:/data/软件执行程序.exe", startMenuPath.append("/").append("快捷.lnk"));
- }