/// <summary> /// APP应用列表导出 /// </summary> /// <param name="matchPath"></param> /// <param name="isCover"></param> public void ExportAppFile(IEnumerable <string> matchPath, string path, bool isCover = false) { var files = GetUserPartitionFiles; if (_systemTree == null) { return; } IAsync?.Advance(1, LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.FileServiceLanguage_File_KaiShiHuiFuYingYongWenJianLieB)); string pattern = "com.tencen(.+).mm"; Regex regex = new Regex(pattern, RegexOptions.IgnoreCase); foreach (var mPath in matchPath) { var source = new List <FNodeX>(); if (regex.IsMatch(mPath)) { source = files.FindAll(o => regex.IsMatch(o.FullPath) && !o.IsDelete);//匹配(第三方)微信 } else { source = files.FindAll(o => o.FullPath.StartsWith(mPath, StringComparison.OrdinalIgnoreCase) && !o.IsDelete); } foreach (var f in source) { fileServiceX.ExportFileX(f, path); } } }
private int CopyUserDataCallback(string uniqueDeviceID, byte step, float status, ref UInt32 isStopCopy) { if (IsStop) {//停止文件拷贝 isStopCopy = 1; } else { isStopCopy = 0; } string msg = string.Empty; double actualProgress = 0; switch (step) { case 1: // 拷贝前初始化 status为进度 0-100 msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSInitProgress), status); double reportAProgress = status / 100.0 - _OneStepLastProgress; _OneStepLastProgress = status / 100.0; actualProgress = reportAProgress * _OneAllProgress; break; case 2: // 数据拷贝 status为已经拷贝数据大小,单位为Byte msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyProgress), (status / 1024.0).ToString("F2")); double singleProgress = _TwoAllProgress / 20.0; if (_TwoCumulativeProgress + singleProgress > _TwoAllProgress) { singleProgress = _TwoAllProgress - _TwoCumulativeProgress; } _TwoCumulativeProgress += singleProgress; actualProgress = singleProgress; break; case 3: // 拷贝结束,进行后期合并 if (_TwoCumulativeProgress < _TwoAllProgress) { Asyn.Advance(_TwoAllProgress - _TwoCumulativeProgress, LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyDataOver)); _TwoCumulativeProgress = _TwoAllProgress; } double reportBProgress = status - _ThreeSetpLastProgress; _ThreeSetpLastProgress = status; _ThreeCumulativeProgress += reportBProgress * _ThreeAllProgress; actualProgress = reportBProgress * _ThreeAllProgress; if (1 == status) { IsCopying = false; if (_ThreeCumulativeProgress < _ThreeAllProgress) { actualProgress = _ThreeAllProgress - _ThreeCumulativeProgress; } msg = LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSExtractLocalOver); } else { msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSLastStepProgress), (status * 300).ToString("F2")); } break; default: // 拷贝失败或者用户终止 msg = step == 4 ? LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyError) : LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSUserExit); Asyn.IsSuccess = false; IsCopying = false; actualProgress = 0; LoggerManagerSingle.Instance.Warn(string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSDeviceCopyError), uniqueDeviceID, step, msg)); break; } Asyn.Advance(actualProgress, string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSExtractLocalAppsReport), CurrentDeviceName, msg)); //返回0则继续拷贝 return(0); }