示例#1
0
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;
}
示例#2
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;
}