//---------------------------------------------------------------------------------- // StartDownloads: Start the threads that will download the files. //---------------------------------------------------------------------------------- void DownloadCtrl::StartDownloads(void) { CustomInfo* pCustInfo = GetCustomInfo(); CPatchData* pPatch = pCustInfo->GetSelectedPatch(); if (pPatch) { #ifdef _DEBUG if (GetKeyState(VK_MENU) & GetKeyState(VK_CONTROL) & GetKeyState(VK_SHIFT) & 0x8000) pPatch->DebugBox(GetWindow()); #endif GUIString sPatchFile = pPatch->GetPatchUrl(); int nPos = sPatchFile.rFind('/'); if (nPos == -1) nPos = sPatchFile.rFind('\\'); if (nPos != -1) sPatchFile.erase(0, nPos + 1); else sPatchFile = TEXT("Update.exe"); std::string aHostGraphic = pPatch->GetHostBmp(); int aPos = aHostGraphic.find_last_of('.'); std::string aHostGraphicExtension; if(aPos != std::string::npos && aHostGraphic.length() > aPos + 1) aHostGraphicExtension = aHostGraphic.substr(aPos+1); else aHostGraphicExtension = "bmp"; m_sHostBitmapFile = GenerateTempFileName("FS", aHostGraphicExtension); CreateDirectoryRecursive(pCustInfo->GetPatchFolder()); GUIString sPatchExe = pCustInfo->GetPatchFolder(); sPatchExe.append(sPatchFile); pCustInfo->SetPatchFile(sPatchExe); mStartTime = time(NULL); mNumberCallbacks = 0; if (IsFtpAddress(pPatch->GetHostBmp())) { // Don't attempt to handle resumed downloads of bitmaps - not worth it. DeleteFile(std::string(m_sHostBitmapFile).c_str()); m_pFtpGetBitmap = new FTPGetOp(pPatch->GetHostBmp(), true); m_pFtpGetBitmap->SetLocalPath(m_sHostBitmapFile); m_pFtpGetBitmap->SetCompletion(new DownloadCompletion(FtpBitmapDoneCallback)); m_pFtpGetBitmap->RunAsync(static_cast<ULONG>(OP_TIMEOUT_INFINITE)); } else { m_pHttpGetBitmap = new HTTPGetOp(pPatch->GetHostBmp()); m_pHttpGetBitmap->SetLocalPath(m_sHostBitmapFile); m_pHttpGetBitmap->SetCompletion(new DownloadCompletion(HttpBitmapDoneCallback)); m_pHttpGetBitmap->RunAsync(static_cast<ULONG>(OP_TIMEOUT_INFINITE)); } // m_tDownloadStarted = GetTickCount(); m_nPrevDownloadedFtpBytes = 0; if (IsFtpAddress(pPatch->GetPatchUrl())) { // If the previous patch profile does not match this patch profile, nuke the file. if (! pCustInfo->MatchFtpDownloadTag(sPatchExe, pCustInfo->GetNewVersion(), pPatch->GetPatchSize(), pPatch->GetChecksum())) DeleteFile(std::string(sPatchExe).c_str()); else m_nPrevDownloadedFtpBytes = GetFileSize(sPatchExe); // Tag the patch's profile (so we can 'resume or not as appropriate later). pCustInfo->TagFtpDownload(sPatchExe, pCustInfo->GetNewVersion(), pPatch->GetPatchSize(), pPatch->GetChecksum()); m_pFtpGetPatch = new FTPGetOp(pPatch->GetPatchUrl(), true); m_pFtpGetPatch->SetDoResume(true); // Allow resuming of downloads. m_pFtpGetPatch->SetLocalPath(sPatchExe); m_pFtpGetPatch->SetRecvChunkCompletion(new DownloadCompletion(PatchProgressCallback), CHUNCK_SIZE); m_pFtpGetPatch->SetCompletion(new DownloadCompletion(FtpPatchDoneCallback)); m_pFtpGetPatch->RunAsync(static_cast<ULONG>(OP_TIMEOUT_INFINITE)); } else { m_pHttpGetPatch = new HTTPGetOp(pPatch->GetPatchUrl()); m_pHttpGetPatch->SetLocalPath(sPatchExe); m_pHttpGetPatch->SetRecvChunkCompletion(new DownloadCompletion(PatchProgressCallback), CHUNCK_SIZE); m_pHttpGetPatch->SetCompletion(new DownloadCompletion(HttpPatchDoneCallback)); m_pHttpGetPatch->RunAsync(static_cast<ULONG>(OP_TIMEOUT_INFINITE)); } m_bDownloadStarted = true; } }
void UpdateResource_UnloadResources() { Global_Yes_String.erase(); Global_No_String.erase(); Global_Ok_String.erase(); Global_Cancel_String.erase(); Global_Close_String.erase(); Global_BadHelpExe_String.erase(); Global_WrongSize_String.erase(); Global_InvalidChecksum_String.erase(); Global_InvalidPatch_String.erase(); Global_Validation_String.erase(); Global_Validating_String.erase(); Global_DownloadFailures_String.erase(); Global_DownloadAborts_String.erase(); Global_NoStringRes_String.erase(); Global_MenuAbout_String.erase(); Global_ParamErrTitle_String.erase(); Global_CfgFileTooBig_String.erase(); Global_NoReadCfgFile_String.erase(); Global_NoOpenCfgFile_String.erase(); Global_PatcherDispName_String.erase(); Global_BadHelpFile_String.erase(); Global_BadResFile_String.erase(); Global_UnknownParam_String.erase(); Global_PrUnknown_String.erase(); Global_PrUpToDate_String.erase(); Global_PrPatchFound_String.erase(); Global_PrPatchFetched_String.erase(); Global_PrUserAbort_String.erase(); Global_PrNoServerConnection_String.erase(); Global_PrNoHostList_String.erase(); Global_PrNoDownload_String.erase(); Global_NoMonitor_String.erase(); Global_PsUndetermined_String.erase(); Global_NoFindPatch_String.erase(); Global_NoRunPatch_String.erase(); Global_PatchFailed_String.erase(); Global_PrepPatcher_String.erase(); Global_CheckingForThePatch_String.erase(); Global_VerCheckFailed_String.erase(); Global_PatchFound_String.erase(); Global_NoRetrievePatch_String.erase(); Global_Applying_String.erase(); Global_AnotherPatch_String.erase(); Global_PatchApplied_String.erase(); Global_LaunchingExe_String.erase(); Global_CheckingMotd_String.erase(); Global_CheckingForMotd_String.erase(); Global_UpToDate_String.erase(); Global_PatcherInfoTitle_String.erase(); Global_VersionFileCheckFailed_String.erase(); Global_PatchReturnedError_String.erase(); Global_CheckConnection_String.erase(); Global_TimeOut_String.erase(); Global_SkipMotd_String.erase(); Global_Warning_String.erase(); Global_IncompletePatch_String.erase(); Global_SelfUpToDate_String.erase(); Global_CheckingSelfForPatch_String.erase(); Global_CloseForSelfPatch_String.erase(); Global_SelfNoHostList_String.erase(); Global_NoFindRestarter_String.erase(); Global_NoRunRestarter_String.erase(); Global_RestarterFailed_String.erase(); Global_SierraUpdate_String.erase(); Global_SelfUpdateLang_String.erase(); Global_NoWritePsapi_String.erase(); Global_NoWriteRestarter_String.erase(); Global_Error_String.erase(); Global_Host_String.erase(); Global_Bytes_String.erase(); Global_KiloBytes_String.erase(); Global_MegaBytes_String.erase(); Global_PrOptionalPatch_String.erase(); Global_PrManualDownload_String.erase(); Global_OptionalPatchFound_String.erase(); Global_PossiblePatch_String.erase(); Global_CheckForPossiblePatch_String.erase(); Global_NoPatchUrl_String.erase(); Global_LocalPatchDoesNotMatch_String.erase(); Global_CheckConection_String.erase(); Global_CheckConectionTitle_String.erase(); Global_Success_String.erase(); Global_MotdSkipped_String.erase(); Global_MotdNotFound_String.erase(); Global_GameMotdNotFound_String.erase(); Global_MotdError_String.erase(); Global_NoNewMotd_String.erase(); Global_PatchRequired_String.erase(); Global_OptionalPatch_String.erase(); Global_PartialDirServerFailure_String.erase(); Global_DirServerFailure_String.erase(); Global_BadVersionNoUpdate_String.erase(); Global_SierraUpBadVersionNoUpdate_String.erase(); Global_PatchServerError_String.erase(); Global_UpdateServerTimedOut_String.erase(); Global_NoConfigFile_String.erase(); Global_GameLogo_Image = NULL; Global_MpsLogo_Image = NULL; SelectHost_Title_String.erase(); SelectHost_Info1_String.erase(); SelectHost_Info2_String.erase(); SelectHost_Info3_String.erase(); SelectHost_Info4_String.erase(); SelectHost_Info5_String.erase(); SelectHost_Info6_String.erase(); SelectHost_ConfigProxy_String.erase(); SelectHost_Help_String.erase(); SelectHost_Next_String.erase(); SelectHost_HavePatch_String.erase(); SelectHost_PatchFilter_String.erase(); SelectHost_InfoManual_String.erase(); SelectHost_Back_String.erase(); SelectHost_FileOpenDlgTitle_String.erase(); SelectHost_HostTitle_String.erase(); SelectHost_Results_String.erase(); SelectHost_WaitInfo1_String.erase(); SelectHost_WaitInfo2_String.erase(); SelectHost_WaitInfo3_String.erase(); SelectHost_WaitInfo4_String.erase(); SelectHost_WaitInfo5_String.erase(); SelectHost_WaitInfo6_String.erase(); ConfigProxy_Title_String.erase(); ConfigProxy_Info1_String.erase(); ConfigProxy_Info2_String.erase(); ConfigProxy_Info3_String.erase(); ConfigProxy_Info4_String.erase(); ConfigProxy_Info5_String.erase(); ConfigProxy_Info6_String.erase(); ConfigProxy_UseProxy_String.erase(); ConfigProxy_Host_String.erase(); ConfigProxy_Port_String.erase(); ConfigProxy_Help_String.erase(); Download_Title_String.erase(); Download_Info1_String.erase(); Download_Info2_String.erase(); Download_Info3_String.erase(); Download_Info4_String.erase(); Download_Info5_String.erase(); Download_Info6_String.erase(); Download_Host_String.erase(); Download_Progress_String.erase(); Download_Preparing_String.erase(); Download_Estimating_String.erase(); Download_Help_String.erase(); Download_Back_String.erase(); Download_VisitHost_String.erase(); Download_HostedBy_String.erase(); Download_BytesTransferred_String.erase(); Download_ConnectionRefused_String.erase(); Download_InvalidHttpHeader_String.erase(); Download_InvalidHttpRedirect_String.erase(); Download_TooManyHttpRedirects_String.erase(); Download_DownloadError_String.erase(); Download_UnknownHttpError_String.erase(); Download_HttpError_String.erase(); Download_Http404Error_String.erase(); Download_Confirm_String.erase(); Download_AbandonDownload_String.erase(); Download_AbortPatch_String.erase(); Download_UnknownFtpError_String.erase(); Download_FtpError_String.erase(); Download_InvalidFtpResp_String.erase(); Download_InvalidFtpPasvResp_String.erase(); Download_NoData_String.erase(); Download_InvalidFtpFile_String.erase(); Download_InvalidFtpUser_String.erase(); Download_InvalidFtpPassword_String.erase(); Download_TimeHoursMinutes_String.erase(); Download_TimeHourMinutes_String.erase(); Download_TimeMinutesSeconds_String.erase(); Download_TimeMinuteSeconds_String.erase(); Download_TimeSeconds_String.erase(); Download_Http421Error_String.erase(); Download_Next_String.erase(); Download_UnableToFindHost_String.erase(); Download_NoHostUrl_String.erase(); Dialog_AbortDlgAbort_String.erase(); Dialog_BaseBackground_Background = Background(); Welcome_Continue_String.erase(); Welcome_Cancel_String.erase(); Welcome_ConfigProxy_String.erase(); Welcome_Help_String.erase(); Welcome_Info1_String.erase(); Welcome_Info2_String.erase(); Welcome_Info3_String.erase(); Welcome_Info4_String.erase(); Welcome_Info5_String.erase(); Welcome_Info6_String.erase(); Welcome_Title_String.erase(); About_Version_String.erase(); About_Copyright_String.erase(); About_Title_String.erase(); Motd_SystemTitle_String.erase(); Motd_ProductTitle_String.erase(); Motd_Info1_String.erase(); Motd_Info2_String.erase(); Motd_Info3_String.erase(); Motd_Info4_String.erase(); Motd_Info5_String.erase(); Motd_Info6_String.erase(); Motd_Help_String.erase(); Motd_Back_String.erase(); Motd_Next_String.erase(); Motd_Skip_String.erase(); Motd_Title_String.erase(); VisitHost_Title_String.erase(); VisitHost_Info1_String.erase(); VisitHost_Info2_String.erase(); VisitHost_Info3_String.erase(); VisitHost_Info4_String.erase(); VisitHost_Info5_String.erase(); VisitHost_Info6_String.erase(); VisitHost_Help_String.erase(); VisitHost_Back_String.erase(); VisitHost_Next_String.erase(); OptionalPatch_Title_String.erase(); OptionalPatch_Info1_String.erase(); OptionalPatch_Info2_String.erase(); OptionalPatch_Info3_String.erase(); OptionalPatch_Info4_String.erase(); OptionalPatch_Info5_String.erase(); OptionalPatch_Info6_String.erase(); OptionalPatch_ViewDetails_String.erase(); OptionalPatch_Help_String.erase(); OptionalPatch_Next_String.erase(); OptionalPatch_BadDescExe_String.erase(); OptionalPatch_DescTitle_String.erase(); OptionalPatch_FetchingDesc_String.erase(); OptionalPatch_TimedOut_String.erase(); OptionalPatch_DownloadFailed_String.erase(); OptionalPatch_Back_String.erase(); PatchDetails_Title_String.erase(); PatchDetails_Info1_String.erase(); PatchDetails_Info2_String.erase(); PatchDetails_Info3_String.erase(); PatchDetails_Info4_String.erase(); PatchDetails_Info5_String.erase(); PatchDetails_Info6_String.erase(); PatchDetails_Help_String.erase(); PatchDetails_Back_String.erase(); PatchDetails_Next_String.erase(); PatchDetails_FileTooBig_String.erase(); PatchDetails_FileTooBigTtl_String.erase(); VersionCheck_Title_String.erase(); VersionCheck_Info1_String.erase(); VersionCheck_Info2_String.erase(); VersionCheck_Info3_String.erase(); VersionCheck_Info4_String.erase(); VersionCheck_Info5_String.erase(); VersionCheck_Info6_String.erase(); VersionCheck_Help_String.erase(); VersionCheck_Next_String.erase(); VersionCheck_Back_String.erase(); VersionCheck_OkToGoBack_String.erase(); VersionCheck_StatusPleaseWait_String.erase(); VersionCheck_StatusErrorFound_String.erase(); VersionCheck_StatusFinished_String.erase(); VersionCheck_DNSTestStarted_String.erase(); VersionCheck_MotdLookupStarted_String.erase(); VersionCheck_ServerLookupStarted_String.erase(); VersionCheck_SelfVersionCheckStarted_String.erase(); VersionCheck_GameVersionCheckStarted_String.erase(); VersionCheck_UpToDate_String.erase(); VersionCheck_Finish_String.erase(); VersionCheck_CheckingForPatch_String.erase(); VersionCheck_AbortTitle_String.erase(); VersionCheck_Visit_String.erase(); Login_Title_String.erase(); Login_Info_String.erase(); Login_Name_String.erase(); Login_Password_String.erase(); Login_Ok_String.erase(); }