static void PackFile(string fileSrc, string fileDst, string name, ThreadParam param)
    {
        if (!IGG.FileUtil.CheckFileExist(fileDst))
        {
            Debug.LogFormat("-->PackFile: {0} -> {1}", fileSrc, fileDst);

            IGG.FileUtil.CreateDirectoryFromFile(fileDst);
            IGG.FileUtil.DeleteFile(fileDst);

            LzmaHelper.Compress(fileSrc, fileDst);
        }

        if (ConstantData.enableMd5Name)
        {
            string md5 = IGG.FileUtil.CalcFileMd5(fileSrc);

            FileInfo fi = new FileInfo(fileDst);

            VersionData.VersionItem item = new VersionData.VersionItem();
            item.Name = name.Replace(ConstantData.assetBundleExt, "");
            item.Md5  = md5;
            item.Size = fi.Length;

            lock (param.lockd)
            {
                param.list.Add(item);
            }
        }
    }
    public static void InitPatch()
    {
        IGG.FileUtil.DeleteFileDirectory(BuildSettings.patchDir);

        // version_orign
        {
            string pathDst = string.Format("{0}/version_orign", BuildSettings.patchDir);

            VersionData data = ConfigDataHelper.GetData <VersionData>(VERSION_PATH);
            if (data != null)
            {
                JSONClass json = new JSONClass();
                for (int i = 0; i < data.Items.Length; ++i)
                {
                    VersionData.VersionItem item = data.Items[i];

                    JSONClass jsonItem = new JSONClass();
                    jsonItem.Add("size", item.Size.ToString());
                    jsonItem.Add("md5", item.Md5);

                    json.Add(item.Name, jsonItem);
                }

                IGG.FileUtil.SaveTextToFile(json.ToString(""), pathDst);
            }
        }

        // audio_orign
        {
            string pathAudio = string.Format("{0}/../WwiseProject/GeneratedSoundBanks/{1}", Application.dataPath, EditorHelper.platformName);
            pathAudio = pathAudio.Replace("\\", "/");

            JSONClass jsonAudio = new JSONClass();

            List <string> files = IGG.FileUtil.GetAllChildFiles(pathAudio);
            foreach (string file in files)
            {
                string md5  = IGG.FileUtil.CalcFileMd5(file);
                string name = file.Replace("\\", "/").Replace(pathAudio, "");
                if (name.StartsWith("/"))
                {
                    name = name.Substring(1);
                }

                jsonAudio.Add(name, md5);
            }

            string path = string.Format("{0}/audio_orign", BuildSettings.patchDir);
            IGG.FileUtil.SaveTextToFile(jsonAudio.ToString(""), path);
        }

        // version
        SaveVersionFile(new JSONClass());
    }
Beispiel #3
0
        private void InitVersionData(bool start = true)
        {
            Clear();

            m_origns.Clear();
            for (int i = 0; i < VersionData.Inst.Items.Length; ++i)
            {
                VersionData.VersionItem item = VersionData.Inst.Items[i];
                m_origns.Add(item.Name, item.Md5);
            }

            if (start)
            {
                LoadManifest();
            }
        }
    static void CopyAsset(string file, string pathDst, List <VersionData.VersionItem> list, string name)
    {
        string md5         = IGG.FileUtil.CalcFileMd5(file);
        string pathDstFull = string.Format("{0}/{1}.ab", pathDst, md5);

        if (IGG.FileUtil.CheckFileExist(pathDstFull))
        {
        }
        {
            IGG.FileUtil.CopyFile(file, pathDstFull);
        }

        FileInfo fi = new FileInfo(file);

        VersionData.VersionItem item = new VersionData.VersionItem();
        item.Name = name.Replace(ConstantData.assetBundleExt, "");
        item.Md5  = md5;
        item.Size = fi.Length;

        list.Add(item);
    }
    public static void CopyPatch()
    {
        JSONClass jsonList = new JSONClass();

        // ab
        {
            string pathOrign = string.Format("{0}/version_orign", BuildSettings.patchDir);
            if (!File.Exists(pathOrign))
            {
                return;
            }

            JSONClass   jsonOrign = JSONNode.Parse(IGG.FileUtil.ReadTextFromFile(pathOrign)) as JSONClass;
            VersionData data      = ConfigDataHelper.GetData <VersionData>(VERSION_PATH);
            if (data != null)
            {
                for (int i = 0; i < data.Items.Length; ++i)
                {
                    VersionData.VersionItem item = data.Items[i];
                    if (jsonOrign[item.Name] != null && string.Equals(item.Md5, jsonOrign[item.Name]["md5"].Value))
                    {
                        continue;
                    }

                    string pathSrc = string.Format("{0}/{1}{2}", ConstantData.streamingAssetsPath, item.Md5, ConstantData.assetBundleExt);
                    string pathDst = string.Format("{0}/ab/{1}{2}", BuildSettings.patchDir, item.Md5, ConstantData.assetBundleExt);
                    IGG.FileUtil.CopyFile(pathSrc, pathDst);

                    JSONClass itemJson = new JSONClass();
                    itemJson.Add("md5", item.Md5);
                    itemJson.Add("size", item.Size.ToString());
                    itemJson.Add("type", new JSONData((int)PatchFileType.AssetBundle));

                    jsonList.Add(item.Name, itemJson);
                }
            }
        }

        // audio
        {
            string    pathOrign = string.Format("{0}/audio_orign", BuildSettings.patchDir);
            JSONClass jsonOrign = JSONNode.Parse(IGG.FileUtil.ReadTextFromFile(pathOrign)) as JSONClass;

            string pathAudio = string.Format("{0}/../WwiseProject/GeneratedSoundBanks/{1}", Application.dataPath, EditorHelper.platformName);
            pathAudio = pathAudio.Replace("\\", "/");

            List <string> files = IGG.FileUtil.GetAllChildFiles(pathAudio);
            foreach (string file in files)
            {
                string md5  = IGG.FileUtil.CalcFileMd5(file);
                long   size = new FileInfo(file).Length;

                string filename = Path.GetFileName(file);
                if (jsonOrign[filename] == null || !string.Equals(md5, jsonOrign[filename].Value))
                {
                    string pathDst = string.Format("{0}/wwise/{1}", BuildSettings.patchDir, filename);
                    IGG.FileUtil.CopyFile(file, pathDst);

                    JSONClass item = new JSONClass();
                    item.Add("md5", md5);
                    item.Add("size", size.ToString());
                    item.Add("type", new JSONData((int)PatchFileType.Wwise));

                    jsonList.Add(filename, item);
                }
            }
        }

        SaveVersionFile(jsonList);
    }