////////////////////////////////////////////////////////// // // CopyExe // // Return false if needs admin access // ////////////////////////////////////////////////////////// bool CopyExe( void ) { SString strGTAEXEPathFrom = GetExePathFilename( false ); SString strGTAEXEPathTo = GetExePathFilename( true ); if ( !FileCopy( strGTAEXEPathFrom, strGTAEXEPathTo ) ) return false; return true; }
////////////////////////////////////////////////////////// // // SetExePatchedStatus // // Apply selected patches to exe // Return false if needs admin access // ////////////////////////////////////////////////////////// bool SetExePatchedStatus( bool bUseExeCopy, const SExePatchedStatus& status ) { SString strGTAEXEPath = GetExePathFilename( bUseExeCopy ); bool bReqAdmin = false; bReqAdmin |= UpdatePatchStatusTimestamp ( strGTAEXEPath, status.bTimestamp ? PATCH_SET_ON : PATCH_SET_OFF ) == PATCH_SET_RESULT_REQ_ADMIN; bReqAdmin |= UpdatePatchStatusLargeMem ( strGTAEXEPath, status.bLargeMem ? PATCH_SET_ON : PATCH_SET_OFF ) == PATCH_SET_RESULT_REQ_ADMIN; bReqAdmin |= UpdatePatchStatusDep ( strGTAEXEPath, status.bDep ? PATCH_SET_ON : PATCH_SET_OFF ) == PATCH_SET_RESULT_REQ_ADMIN; bReqAdmin |= UpdatePatchStatusNvightmare( strGTAEXEPath, status.bNvightmare ? PATCH_SET_ON : PATCH_SET_OFF ) == PATCH_SET_RESULT_REQ_ADMIN; bReqAdmin |= UpdatePatchStatusAltModules( strGTAEXEPath, status.bAltModules ? PATCH_SET_ON : PATCH_SET_OFF ) == PATCH_SET_RESULT_REQ_ADMIN; return !bReqAdmin; }
////////////////////////////////////////////////////////// // // GetExePatchedStatus // // Check which patches are currently applied // ////////////////////////////////////////////////////////// SExePatchedStatus GetExePatchedStatus( bool bUseExeCopy ) { SString strGTAEXEPath = GetExePathFilename( bUseExeCopy ); SExePatchedStatus status; status.bTimestamp = UpdatePatchStatusTimestamp ( strGTAEXEPath, PATCH_CHECK ) == PATCH_CHECK_RESULT_ON; status.bLargeMem = UpdatePatchStatusLargeMem ( strGTAEXEPath, PATCH_CHECK ) == PATCH_CHECK_RESULT_ON; status.bDep = UpdatePatchStatusDep ( strGTAEXEPath, PATCH_CHECK ) == PATCH_CHECK_RESULT_ON; status.bNvightmare = UpdatePatchStatusNvightmare( strGTAEXEPath, PATCH_CHECK ) == PATCH_CHECK_RESULT_ON; status.bAltModules = UpdatePatchStatusAltModules( strGTAEXEPath, PATCH_CHECK ) == PATCH_CHECK_RESULT_ON; return status; }
////////////////////////////////////////////////////////// // // GetExeFileSize // // // ////////////////////////////////////////////////////////// uint GetExeFileSize( bool bUseExeCopy ) { SString strGTAEXEPath = GetExePathFilename( bUseExeCopy ); return FileSize( strGTAEXEPath ); }
////////////////////////////////////////////////////////// // // GetUsingExePathFilename // // Return full path and filename of exe we will probably be using // ////////////////////////////////////////////////////////// SString GetUsingExePathFilename( void ) { return GetExePathFilename( ShouldUseExeCopy() ); }