public void Modify(AssetConfigController assetConfigController)
        {
            HashSet <string> activityResSet = new HashSet <string>(assetConfigController.ActivityResPaths);

            string root = "Assets/Export/";

            for (int i = 0; i < Groups.Length; i++)
            {
                BundleGroup group    = Groups[i];
                var         newGroup = new BundleGroup();
                newGroup.GroupName     = group.GroupName;
                newGroup.Version       = group.Version;
                newGroup.GroupIndex    = group.GroupIndex;
                newGroup.Paths         = new List <BundleState>();
                newGroup.UpdateWholeAB = group.UpdateWholeAB;

                var dict  = new Dictionary <string, BundleState>();
                var datas = new List <BundleState>(group.Paths);
                datas.Sort((a, b) => Convert.ToInt32(a.InInitialPacket) - Convert.ToInt32(b.InInitialPacket));

                foreach (var data in datas)
                {
                    string   dir     = Path.GetDirectoryName(data.Path);
                    string   name    = Path.GetFileName(data.Path);
                    string[] subDirs = FilePathTools.GetDirectories(root + dir, "^" + name + "$");
                    foreach (string subDir in subDirs)
                    {
                        string path = subDir.Replace(root, "");
                        if (activityResSet.Contains(path) || FilePathTools.GetFiles(subDir, "^(?!\\.)").Length == 0)
                        {
                            continue;
                        }

                        BundleState bundleState = new BundleState
                        {
                            Path            = path,
                            InInitialPacket = data.InInitialPacket
                        };
                        dict[bundleState.Path] = bundleState;
                    }
                }
                newGroup.Paths.AddRange(dict.Values);
                newGroup.Paths.Sort((a, b) => string.Compare(a.Path, b.Path));

                if (i < assetConfigController.Groups.Length)
                {
                    assetConfigController.Groups[i] = newGroup;
                }
            }
        }
        public static void CheckPatchDiff()
        {
            string path1 = "";
            string path2 = "";

            string[] allPatch1 = FilePathTools.GetFiles(path1, @"(.*)(\.patch)$", SearchOption.AllDirectories);
            string[] allPatch2 = FilePathTools.GetFiles(path2, @"(.*)(\.patch)$", SearchOption.AllDirectories);
            foreach (var p1 in allPatch1)
            {
                JObject jobj1 = JObject.Parse(File.ReadAllText(p1));
                string  hash1 = jobj1["hash"].ToString();
                int     index = allPatch2.IndexOfEx((x) => x.Substring(path2.Length).Equals(p1.Substring(path1.Length)));
                if (index >= 0)
                {
                    JObject jobj2 = JObject.Parse(File.ReadAllText(allPatch2[index]));
                    string  hash2 = jobj2["hash"].ToString();
                    if (!hash1.Equals(hash2))
                    {
                        Debug.Log(string.Format("dif : {0}", p1));
                    }
                }
                else
                {
                    Debug.Log(string.Format("only 1 : {0}", p1));
                }
            }

            foreach (var p1 in allPatch2)
            {
                JObject jobj1 = JObject.Parse(File.ReadAllText(p1));
                string  hash1 = jobj1["hash"].ToString();
                int     index = allPatch1.IndexOfEx((x) => x.Substring(path1.Length).Equals(p1.Substring(path2.Length)));
                if (index >= 0)
                {
                    JObject jobj2 = JObject.Parse(File.ReadAllText(allPatch1[index]));
                    string  hash2 = jobj2["hash"].ToString();
                    if (!hash1.Equals(hash2))
                    {
                        Debug.Log(string.Format("dif : {0}", p1));
                    }
                }
                else
                {
                    Debug.Log(string.Format("only 2 : {0}", p1));
                }
            }

            Debug.Log("finish");
        }