static void MakeVersionConfig(string version, string url) { AssetBundle manifestBundle = AssetBundle.LoadFromFile(outputPath + "/" + outputName); AssetBundleManifest manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest"); string[] allBundle = manifest.GetAllAssetBundles(); manifestBundle.Unload(false); VersionRes ver = new VersionRes(); ver.version = version; ver.url = url; { VersionResFile file = new VersionResFile(); file.name = bundleInfoFileName; file.signature = FileChecker.GetFileSignature(outputPath + "/" + bundleInfoFileName); file.compress = "none"; ver.versionResFile.Add(file); } { VersionResFile file = new VersionResFile(); file.name = assetInfoFileName; file.signature = FileChecker.GetFileSignature(outputPath + "/" + assetInfoFileName); file.compress = "none"; ver.versionResFile.Add(file); } for (int i = 0; i < allBundle.Length; ++i) { EditorUtility.DisplayProgressBar("MakeVersionConfig config", "handle...", (float)i / allBundle.Length); VersionResFile file = new VersionResFile(); file.name = allBundle[i]; file.signature = FileChecker.GetFileSignature(outputPath + "/" + allBundle[i]); file.compress = "none"; ver.versionResFile.Add(file); } EditorUtility.ClearProgressBar(); string persistentPath = Application.dataPath + "/../PersistentData/"; SerializeHelper.SaveToFile(ver, persistentPath + "version.json", true); }
void DoCheck() { string verFile = PathUtils.GetVaildFullPath("version.json"); m_verRes = SerializeHelper.LoadFromFile <VersionRes>(verFile); //这个大版本要写在程序里,才能保证获取的本地当前版本是对的!!! string[] programVersion = VersionResDef.version.Split('.'); string[] oldVersion = VersionUpdate.GetIns().GetVersion().Split('.'); string[] newVersion = m_verRes.version.Split('.'); string[] miniVersion = m_verRes.miniVersion.Split('.'); //强制更新apk,ios if (int.Parse(programVersion[0]) < int.Parse(miniVersion[0]) || int.Parse(programVersion[1]) < int.Parse(miniVersion[1]) ) { if (Application.platform == RuntimePlatform.Android) { DownloadMgr.GetInst().CreateTask(m_verRes.apk, m_verRes.apkSignature, DownloadApkResult); } else if (Application.platform == RuntimePlatform.IPhonePlayer) { //todo... } else { //todo... } return; } int oldBigVersion = int.Parse(programVersion[0]); int newBigVersion = int.Parse(newVersion[0]); if (newBigVersion > oldBigVersion) { //todo...可选更新apk,ios } VersionUpdate.GetIns().SetVersion(m_verRes); m_mgr.ChangeNextStatus(); }
public override void OnEnter(Status oldStatus) { LogUtils.Log("enter res file check and update status"); //check VersionRes verRes = VersionUpdate.GetIns().GetVersionRes(); DownloadMgr.GetInst().SetBaseURL(verRes.url); DownloadMgr.GetInst().SetMaxTaskNum(3); m_downloadFile.Clear(); m_downloadSuccFile.Clear(); for (int i = 0; i < verRes.versionResFile.Count; ++i) { VersionResFile resFile = verRes.versionResFile[i]; if (resFile.resType == VersionResType.PreDownload) { string fullPath = PathUtils.GetVaildFullPath(resFile.name); if (fullPath.Length == 0 || !FileChecker.VerifyFileSignature(fullPath, resFile.signature)) { m_downloadFile.Add(resFile.name); DownloadMgr.GetInst().CreateTask(resFile.name, verRes.versionResFile[i].signature, DownloadResult); } } else { string fileName = PathUtils.GetPersistentPath() + resFile.name; if (fileName.Length > 0 && File.Exists(fileName)) { if (!FileChecker.VerifyFileSignature(fileName, resFile.signature)) { File.Delete(fileName); } } } } CheckFinish(); }
public void Init() { m_statusMgr.RegisterStatus(new AppChannelStatus()); m_statusMgr.RegisterStatus(new GameVersionStatus()); m_statusMgr.RegisterStatus(new ResDownloadStatus()); m_statusMgr.RegisterStatus(new GameStatus()); DownloadMgr.GetInst().Init(); m_statusMgr.Init(); string verFile = PathUtils.GetVaildFullPath("version.json"); if (verFile.Length > 0) { m_verRes = SerializeHelper.LoadFromFile <VersionRes>(verFile); } if (m_verRes == null) { LogUtils.LogError("verFile can not find!"); return; } }
public void SetVersion(VersionRes ver) { m_verRes = ver; }