private VZ_AppHelper() { String jsonStr = readJson(AppDomain.CurrentDomain.BaseDirectory + "\\Datas\\ConfigInfo.json"); systemInfo = JsonHelper.DeserializeJsonToObject <VZ_SystemInfo>(jsonStr); jsonStr = readJson(AppDomain.CurrentDomain.BaseDirectory + "\\Datas\\app.json"); appList = JsonHelper.DeserializeJsonToList <VZ_AppInfo>(jsonStr); foreach (VZ_AppInfo info in appList) { info.appImgPath = AppDomain.CurrentDomain.BaseDirectory + "Apps\\" + info.appImgPath; info.appPath = AppDomain.CurrentDomain.BaseDirectory + "Apps\\" + info.appPath; info.bgPath = AppDomain.CurrentDomain.BaseDirectory + "Apps\\" + info.bgPath; info.moviePath = AppDomain.CurrentDomain.BaseDirectory + "Apps\\" + info.moviePath; } int counter = appList.Count; for (int i = counter - 1; i >= 0; i--) { if (!File.Exists(appList[i].appImgPath)) { appList.RemoveAt(i); } } getServerInfo(); timer = new Timer(systemInfo.frequencyOfRequest * 1000); timer.Elapsed += Timer_Elapsed; timer.AutoReset = true; timer.Start(); }
void saveBuildInfo() { VZ_SystemInfo info = VZ_AppHelper.GetInstance().systemInfo; String newConfig = JsonHelper.SerializeObject(info); VZMethods.saveFile(AppDomain.CurrentDomain.BaseDirectory + "\\Datas\\ConfigInfo.json", newConfig); }
void update() { String updatePath = AppDomain.CurrentDomain.BaseDirectory + @"Update\" + versionInfo.build + @"\"; if (Directory.Exists(updatePath)) { //检查数据完整性 addLog("数据完整性", "检查中"); String md5FilePath = AppDomain.CurrentDomain.BaseDirectory + @"Update\" + versionInfo.build + ".json"; String str = VZ_UpdateMethods.readFileToString(md5FilePath); md5List = JsonHelper.DeserializeJsonToList <VZ_FileInfos>(str); String dirPath = AppDomain.CurrentDomain.BaseDirectory + @"Update\" + versionInfo.build + @"\"; int i = 0; bool isMD5ok = true; foreach (VZ_FileInfos infos in md5List) { String filePath = dirPath + infos.path; if (!File.Exists(filePath) && !File.Exists(AppDomain.CurrentDomain.BaseDirectory + infos.path)) { addLog("数据完整性", filePath + " 没找到"); isMD5ok = false; updateProgress(++i, md5List.Count); continue; } if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + infos.path) && !File.Exists(filePath)) { updateProgress(++i, md5List.Count); continue; } try { String md5 = VZ_UpdateMethods.GetMD5HashFromFile(filePath); if (!md5.Equals(infos.md5)) { //clearDirtyDatas(); addLog("数据完整性", filePath + " md5校验错误"); isMD5ok = false; File.Delete(filePath); } } catch (Exception ex) { } updateProgress(++i, md5List.Count); } if (!isMD5ok) { //有个别文件有问题,删除 MessageBox.Show("校验失败"); runVRZone(); return; } addLog("数据完整性", "检查完毕"); addLog("软件更新", "拷贝数据"); i = 0; // 执行拷贝: String objPath = AppDomain.CurrentDomain.BaseDirectory; foreach (VZ_FileInfos infos in md5List) { try { String path = System.IO.Path.GetDirectoryName(objPath + infos.path); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (File.Exists(dirPath + infos.path)) { File.Copy(dirPath + infos.path, objPath + infos.path, true); } } catch { addLog("软件更新", objPath + infos.path + "目标拷贝失败"); continue; } updateProgress(++i, md5List.Count); } addLog("软件更新", "更新完毕"); // 清理旧数据 addLog("更新缓存", "清理中"); clearDirtyDatas(); addLog("更新缓存", "清理完毕"); //生成新的MD5 addLog("生成新的文件索引", "进行中"); String indexPath = AppDomain.CurrentDomain.BaseDirectory + @"Update\current.json"; List <VZ_FileInfos> newList = getFull(AppDomain.CurrentDomain.BaseDirectory); String newListJson = JsonHelper.SerializeObject(newList); VZ_UpdateMethods.saveFile(indexPath, newListJson); addLog("生成新的文件索引", "生成完毕"); // 更新版本信息 addLog("更新版本信息", "更新中"); String configPath = AppDomain.CurrentDomain.BaseDirectory + @"Datas\ConfigInfo.json"; VZ_SystemInfo info = JsonHelper.DeserializeJsonToObject <VZ_SystemInfo>(VZ_UpdateMethods.readFileToString(configPath)); info.build = versionInfo.build; info.onlineBuild = versionInfo.build; info.updateBuild = versionInfo.build; info.version = versionInfo.version; String newConfig = JsonHelper.SerializeObject(info); VZ_UpdateMethods.saveFile(configPath, newConfig); addLog("更新版本信息", "更新完毕"); //finish addLog("升级完毕", "Version " + info.version); } else { MessageBox.Show("升级失败,未找到升级目录"); } runVRZone(); }