int CUpdator::RunUpdate() { try { if(!Init()) { LOG(_T("updator init error")); return -1; } PreUpdate(); if (!Check()) { LOG(_T("version is the last one,no need update")); return -1; } if(!DownLoad()) { LOG(_T("download files error")); return -1; } if(!Update()) { LOG(_T("update local files error")); //NeedRestart(TRUE); return -2; } if(!Finish()) { LOG(_T("updator close error")); return -1; } } catch(CString &e) { LOG((LPCTSTR)e); } catch (...) { } return 0; }
int downloadFile(TCHAR *inUrl, TCHAR *filepath, TCHAR *uuid, TCHAR *file_name) { int download_result = 0; char* url = WcharToChar_New(inUrl); TCHAR *doc_id = GetDocId(url); int downloadType = GetDownloadType(url); char* char_uuid = WcharToChar_New(uuid); DownloadInfo *downloadInfo = new DownloadInfo(url, filepath, doc_id); downloadInfo->downloadType = downloadType; //LOGI("%d\n", downloadType); downloadInfo->SetUUid(char_uuid); if (_taccess_s(filepath, 0) != 0) { //如果文件夹不存在 int res = CreateMultiplePath(filepath); if (res == 0) { Log(_T("%s, %s"), _T("文件夹不存在,创建文件夹失败"), filepath); fprintf(stdout, "%s\n", BuildFailedResponseJson(downloadInfo, 4, _T("create floder failed")).c_str()); delete[] url; delete[] char_uuid; download_result = -1; return download_result; } } if (file_name) { int length = _tcslen(file_name) + 1; TCHAR *fileName = new TCHAR[length]; _tcscpy_s(fileName, length, file_name); downloadInfo->SetFileName(fileName); } while (1) { Log(_T("%s %s"), _T("开始下载"), inUrl); if (DownLoad(url, downloadInfo)) { if (fp) fclose(fp); if (downloadInfo->RenameFileAfterDownload() == 0) { fprintf(stdout, "%s\n", BuildSuccessResponseJson(downloadInfo).c_str()); break; } else { download_result = -1; fprintf(stdout, "%s\n", BuildRenameFailedJson(downloadInfo).c_str()); break; } } else { Log(_T("%s %d"), _T("下载失败,判断是否需要重新下载"), is_need_reload); if (is_need_reload) {//重新连接 下载 delete downloadInfo; if (fp) { fclose(fp); fp = NULL; } doc_id = GetDocId(url); downloadInfo = new DownloadInfo(url, filepath, doc_id); downloadInfo->SetUUid(char_uuid); downloadInfo->downloadType = downloadType; if (file_name) { int length = _tcslen(file_name) + 1; TCHAR *fileName = new TCHAR[length]; _tcscpy_s(fileName, length, file_name); downloadInfo->SetFileName(fileName); } receive_no_data_times = 0; is_need_reload = false; time_out_times = 0; } else { fprintf(stdout, "%s\n", BuildFailedResponseJson(downloadInfo).c_str()); download_result = -1; break; } } } if (downloadInfo) delete downloadInfo; if (url) delete[] url; if (char_uuid) delete[] char_uuid; return download_result; }