AutoUpdate是基于QT的通用桌面程序自动升级更新解决方案。
5.15.X
Qt Creator
后端接口配置为json格式文件,这里保存的文件名为auto_upgrade.json,可自定义。
{
"version": 10010,
"versionStr": "1.0.0",
"type": 1,
"zipurl": "http://192.168.1.1/autoupdate/main.zip",
"mainAppName":"main.exe",
"filelist": [
{
"path": "/",
"sublist": [
"http://192.168.1.1/autoupdate/dist/libmysql.dll",
"http://192.168.1.1/autoupdate/dist/main.exe"
]
},
{
"path": "dir",
"sublist": [
"http://192.168.1.1/autoupdate/dist/dir/xxx1.dll",
"http://192.168.1.1/autoupdate/dist/dir/xxx2.dll"
]
}
]
}
其中:
- version为数字版本号(用于版本识别);
- versionStr为显示的版本号;
- type为更新模式,1表示更新指定文件(即是filelist字段内容,此时zipurl可为空),2表示压缩包方式更新,压缩包为zip压缩(此时filelist可为[]);
- mainAppName是主程序名称,更新完毕后会自动启动主程序;
- zipurl压缩包地址,type为2时候有效,必须为zip格式压缩;
- filelist 是指定文件更新方式,其中path为空或/ 表示主目录,有具体目录名称表示子目录(子目录勿加/)
压缩包内容示例(dist是待压缩的目录):
dist
├── dir
│ ├── xxx1.dll
│ └── xxx2.dll
├── main.exe
└── libmysql.dll
- 版本号文件为version.dat二进制文件,只记录数字版本号,写入版本号示例代码(写入版本号10010):
QString configFilePath = QDir::currentPath()+"/update/version.dat";
configFilePath = QDir::toNativeSeparators(configFilePath);
QFile writeFile(configFilePath);
writeFile.open(QIODevice::WriteOnly);
QDataStream out(&writeFile);
out << 10010;
writeFile.close();
- 后端地址配置,位于当前目录的setting.ini文件内的upgrade节点,app节点中name为更新器展示的标题:
[upgrade]
url=http://192.168.1.1/autoupdate/auto_update.json
[app]
name=WePlanet
- 用Release模式运行一遍;
- 在Build directory目录下的dist目录中会生成autoUpgrader.exe可执行文件;
- 打开QT命令行(开始菜单里面/QT下),进入dist目录;
- 执行:windeployqt autoUpgrader.exe