# Updater

>  联网更新模块

![image-20231226165227506](assets/README/image-20231226165227506.png)

## 使用

### 待升级程序配置

```c++
//升级进程
    QProcess *m_UpdateProc{nullptr};
```



```c++
if(!m_UpdateProc)
                {
                    m_UpdateProc = new QProcess;
                }
#if defined Q_OS_WIN
                m_UpdateProc->setProgram("updater.exe");
#elif defined Q_OS_LINUX
                m_UpdateProc->setProgram("./updater");
#endif
                QStringList argList;
                argList.append(qAppName());
                argList.append(APP_VERSION);
                extern QDateTime buildDateTime();
                const QDateTime _dateTime = buildDateTime();
                argList.append(_dateTime.date().toString("yyyyMMdd"));
                argList.append(QString::number(APP_MODIFYCNT));
                m_UpdateProc->setArguments(argList);
                m_UpdateProc->start();
                m_UpdateProc->waitForStarted();
                QApplication::quit();
```

### updater程序配置

main函数中配置

```c++
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    loadQss();

    if(argc > 1)
    {
        APPNAME = argv[1];
        APPVERSION = argv[2];
        APPDATE = argv[3];
        MODIFYCNT = argv[4];
    }
    else
    {
        //配置项目名称和版本号
        APPNAME = "LaunchControl";
        APPVERSION = "0";
    }
    CHECK_URL = CHECK_URL + APPNAME + "/updates.json";

    UpdaterDialog w;
    w.show();
    return a.exec();
}
```

updaterdialog.cpp中配置url

```c++
QString CHECK_URL = "http://www.tianzd.cn:1995/TianZD/deploy/raw/branch/master/";
```

### 远程仓库配置

远程仓库包含更新版本检测文件：updater.json和升级包（完整安装包和增量升级包)

![image-20231226165035278](assets/README/image-20231226165035278.png)

```json
{
  "updates": 
  {
    "windows": 
    {
      "full-url": "http://www.tianzd.cn:1995/TianZD/deploy/raw/branch/master/",
      "full-version": "2.2.3",
      "download-full":false,
      
      "patch-url": "http://www.tianzd.cn:1995/TianZD/deploy/raw/branch/master/",
      "patch-version": "2.2.3",
      "changelog": "1.增加充电状态显示;2.改变发射角度时弹窗提示;3.优化更新模块",
      "modify-time": "20231216",
      "modifyCnt": "1"
    }
  }
}
```

