コード例 #1
0
ファイル: ZIPTest.cs プロジェクト: BanMing/BanMingLab
    static void CompressFiles()
    {
        var files = new List <string>();

        files.Add(Application.dataPath + @"/Tools/ZIPTool/ziptest/zip.txt");
        ZIPTool.CompressFiles(files, "", Application.dataPath + @"/Tools/ZIPTool/ziptest", 0);
    }
コード例 #2
0
ファイル: ZIPTest.cs プロジェクト: BanMing/BanMingLab
 void OnGUI()
 {
     sourePath = GUILayout.TextField(sourePath, GUILayout.Width(1000), GUILayout.Height(50));
     if (GUILayout.Button("压缩zip"))
     {
         ZIPTool.CompressDirectory(sourePath, outPath);
     }
     if (GUILayout.Button("解压zip"))
     {
         ZIPTool.DecompressToDirectory(sourePath, outPath);
     }
 }
コード例 #3
0
    static void VersionsDifferenceZipImp(string oldVersionDir, string newVersionDir)
    {
        oldVersionDir = MyFileUtil.DealFilePathSlash(oldVersionDir);
        newVersionDir = MyFileUtil.DealFilePathSlash(newVersionDir);

        List <string> oldFileList = new List <string>();
        List <string> newFileList = new List <string>();

        MyFileUtil.GetFileList(oldVersionDir, ref oldFileList);
        MyFileUtil.GetFileList(newVersionDir, ref newFileList);

        List <string> modificationFileList = new List <string>();

        foreach (string newFilePath in newFileList)
        {
            int index = oldFileList.IndexOf(newFilePath);
            if (index < 0)
            {
                //添加新的文件
                modificationFileList.Add(newFilePath);
            }
            else
            {
                string oldFilePath = oldFileList[index];
                if (MD5Tool.VerifyFile(newFilePath, oldFilePath) == false)
                {
                    //文件改变
                    modificationFileList.Add(newFilePath);
                }
            }
        }

        //string time = System.DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss");

        string modificationDir = MyFileUtil.GetParentDir(newVersionDir) + "update_tmp";

        MyFileUtil.DeleteDir(modificationDir);
        MyFileUtil.CreateDir(modificationDir);

        foreach (string filePath in modificationFileList)
        {
            string newFilePath = filePath.Replace(newVersionDir, modificationDir);
            MyFileUtil.CopyFile(filePath, newFilePath);
        }

        string zipFilePath = modificationDir + ".zip";

        ZIPTool.CompressDirectory(modificationDir, zipFilePath, 0, false);

        Debug.Log("");
    }
コード例 #4
0
    IEnumerator DownLoadResItemImp(ResInfo item, int totalCount, int current, System.Action <bool, string, ResInfo> updateFinish)
    {
        //WWW www = new WWW(item.resURL);
        WWW www = HTTPTool.GetWWW(item.resURL);

        //ui提示
        UIWindowUpdate.Instance.ShowDownloadTips(totalCount, current + 1, item.resName, www, item.resSize);
        UIWindowFirstLoading.Hide();

        yield return(www);

        if (string.IsNullOrEmpty(www.error) == false)
        {
            //下载出错
            Debug.LogError(www.error + item.resURL);
            // updateFinish(false, "资源下载失败,请点击重试", item);
            updateFinish(false, LanguageConfig.GetText(5), item);
            yield break;
        }
        else
        {
            UIWindowUpdate.Instance.ShowVerifyTips();
            UIWindowFirstLoading.Hide();
            if (MD5Tool.Verify(www.bytes, item.resMD5))
            {
                //解压文件--下载成功
                UIWindowUpdate.Instance.ShowUnZipTips();
                UIWindowFirstLoading.Hide();
                ZIPTool.DecompressToDirectory(www.bytes, MyFileUtil.CacheDir);
                updateFinish(true, "", item);
            }
            else
            {
                //md5 匹配不上
                string str = string.Format("VersionManager.DownLoadResImp:资源{0} md5出错", item.resURL);
                Debug.LogError(str);

                // updateFinish(false, "资源校验失败,md5值不匹配,请点击重新下载", item);
                updateFinish(false, LanguageConfig.GetText(6), item);
                yield break;
            }
        }
    }
コード例 #5
0
ファイル: ZIPTest.cs プロジェクト: BanMing/BanMingLab
 static void CreatePackZip()
 {
     ZIPTool.PackFiles("tt.zip", Application.dataPath + @"/Tools/ZIPTool/ziptest/zip.txt", "");
 }
コード例 #6
0
ファイル: ZIPTest.cs プロジェクト: BanMing/BanMingLab
 static void CompressDirectoryTest()
 {
     ZIPTool.CompressDirectory(Application.dataPath + @"/Tools/ZIPTool/ziptest/zip.txt", Application.persistentDataPath + @"/txttest.zip");
 }
コード例 #7
0
    static void GenerateResZipImp(string rootDir)
    {
        string dirRemove = rootDir + "Assets/StreamingAssets";

        string publishDir = rootDir + "Publish/" +
                            MyUnityEditorTool.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget)
                            + "/";

        // if (PackageWizard.m_wizard)
        // {
        //     publishDir += PackageWizard.m_wizard.version;
        // }

        MyFileUtil.DeleteDir(publishDir);
        MyFileUtil.CreateDir(publishDir);

        List <ResInfo> listResInfo = new List <ResInfo>();

        //----------------------------------------------------//

        List <ZipResConfig> listZipConfig = ZipResConfig.GetConfigList();

        foreach (ZipResConfig zipConfig in listZipConfig)
        {
            //生成Zip资源包
            List <string> fileList = new List <string>();

            if (string.IsNullOrEmpty(zipConfig.resDir) == false)
            {
                string fileDir = rootDir + zipConfig.resDir;

                if (fileDir.Contains("@Platform"))
                {
                    fileDir = fileDir.Replace("@Platform", ResourcesManager.GetPlatformDir());
                }

                if (fileDir.Contains("@Version"))
                {
                    // fileDir = fileDir.Replace("@Version", SDKConfig.GetCurrentVersionResPath().ToLower());
                    fileDir = fileDir.Replace("@Version", "test");
                }

                if (Directory.Exists(fileDir))
                {
                    List <string> ignoreFileTypeList = new List <string>();
                    ignoreFileTypeList.Add(".meta");
                    MyFileUtil.GetFileList(fileDir, ref fileList, zipConfig.listResSuffix, ignoreFileTypeList);
                }
            }

            //特殊文件
            foreach (string specialResPath in zipConfig.listSpecialResPath)
            {
                string newFilePath = rootDir + specialResPath;
                if (File.Exists(newFilePath))
                {
                    fileList.Add(newFilePath);
                }
            }

            if (fileList.Count == 0)
            {
                continue;
            }

            //zip中不记录文件的时间
            string zipResFilePath;
            // if (PackageWizard.m_wizard)
            // {
            //     zipResFilePath = rootDir + "Publish/" +
            //     MyUnityEditorTool.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget)
            //     + "/" + PackageWizard.m_wizard.version + "/" + zipConfig.resZipName;
            // }
            // else
            // {
            zipResFilePath = rootDir + "Publish/" +
                             MyUnityEditorTool.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget)
                             + "/" + zipConfig.resZipName;
            // }
            ZIPTool.CompressFiles(fileList, dirRemove, zipResFilePath, 0, false, true);

            //资源信息
            ResInfo resInfo = new ResInfo();
            resInfo.resName      = zipConfig.resZipName;
            resInfo.resMD5       = MD5Tool.GetByFilePath(zipResFilePath);
            resInfo.resSize      = (int)MyFileUtil.GetFileSize(zipResFilePath);
            resInfo.resRequireID = zipConfig.resRequireID;
            // if (PackageWizard.m_wizard)
            // {
            //     resInfo.resURL = PackageWizard.m_wizard.serverAddress + resInfo.resName;
            // }
            // else
            // {
            resInfo.resURL = resInfo.resName;
            // }

            listResInfo.Add(resInfo);
        }

        //----------------------------------------------------//
        //写到发布目录
        string xmlContent = VersionInfo.SerializeInEditor(listResInfo);
        string xmlFilePath;

        // if (PackageWizard.m_wizard)
        // {
        //     xmlFilePath = rootDir + "Publish/" +
        //     MyUnityEditorTool.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget)
        //     + "/" + PackageWizard.m_wizard.version + "/VersionInfo.xml";
        // }
        // else
        // {
        xmlFilePath = rootDir + "Publish/" +
                      MyUnityEditorTool.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget) + "/VersionInfo.xml";
        // }

        File.WriteAllText(xmlFilePath, xmlContent);

        listResInfo.RemoveAll(r => r.resRequireID > 0);
        xmlContent = VersionInfo.SerializeInEditor(listResInfo);
        //写到工程目录
        string xmlFileInProjectPath = rootDir + "Assets/StreamingAssets/Config/" + VersionManager.VersionInfoFilePath + MyFileUtil.EncryptXMLFileSuffix;

        byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(xmlContent);
        data = MyFileUtil.EncryptData(data);
        File.WriteAllBytes(xmlFileInProjectPath, data);
        Debug.Log("生成资源包结束");
    }
コード例 #8
0
    static void EncryptLuaCodeImp(LuaEncryptType type)
    {
        ClearCurrentProjectLuaRes();

        //编译Lua代码为bytecode
        if (SystemConfig.Instance.IsUseLuaBytecode)
        {
            List <string> luaFileList = new List <string>();
            MyFileUtil.GetFileList(ResourcesManager.LuaDirForBuild, ref luaFileList, ".lua");

            foreach (string filePath in luaFileList)
            {
                string newFilePath = filePath.Replace(".lua", MyLuaResLoader.LuaByteCodeFileSuffix);

                switch (type)
                {
                case LuaEncryptType.Auto:
                    ///ios 为64位
                    if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS)
                    {
                        newFilePath = filePath.Replace(".lua", MyLuaResLoader.X64LuaByteCodeFileSuffix);
                    }
                    EncodeLuaFile(filePath, newFilePath, EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS);
                    break;

                case LuaEncryptType.WindowsEditor: EncodeLuaFileForEditor(filePath, newFilePath, RuntimePlatform.WindowsEditor); break;

                case LuaEncryptType.MacEditor: EncodeLuaFileForEditor(filePath, newFilePath, RuntimePlatform.OSXEditor); break;
                }
            }
            AssetDatabase.Refresh();

            // if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS)
            // {
            //     foreach (string filePath in luaFileList)
            //     {
            //         string newFilePath = filePath.Replace(".lua", MyLuaResLoader.X64LuaByteCodeFileSuffix);
            //         EncodeLuaFile(filePath, newFilePath, EditorUserBuildSettings.activeBuildTarget, true);
            //     }
            // }
        }

        //将lua代码打包为zip
        List <string> luaCodeFileList = new List <string>();

        if (SystemConfig.Instance.IsUseLuaBytecode)
        {
            MyFileUtil.GetFileList(ResourcesManager.LuaDirForBuild, ref luaCodeFileList, ".bytes");
        }
        else
        {
            MyFileUtil.GetFileList(ResourcesManager.LuaDirForBuild, ref luaCodeFileList, ".lua");
        }

        ZIPTool.CompressFiles(luaCodeFileList, MyFileUtil.GetParentDir(ResourcesManager.LuaDirForBuild), ResourcesManager.LuaZipFileFullPath, 0, true, true);

        //加密lua代码
        if (SystemConfig.Instance.IsEncryptLuaCode)
        {
            ResourcesManager.EncryptLuaCode(ResourcesManager.LuaZipFileFullPath);
        }

        AssetDatabase.Refresh();
        Debug.Log("加密Lua结束");
    }