public VersionControl(string name, Version server, Version local, ModuleUpdateInfo info) { this.local = local; this.info = info; // select update item by version numbers infoItem = null; bool merged = false; do { merged = false; foreach (ModuleUpdateInfoItem item in info.Items) { if (infoItem == null && item.Base == local) { infoItem = item; merged = true; break; } // make sure update is not higher than the requested version else if (infoItem != null && item.Version <= server && item.Base == infoItem.Version) { // merge infoItem = new ModuleUpdateInfoItem(infoItem, item); merged = true; break; } } // no update for our version found, fallback to full update if (infoItem == null) { foreach (ModuleUpdateInfoItem item in info.Items) { if (item.Base == null && item.Version <= server) { infoItem = item; merged = true; break; } } } } while (merged); }
/// <summary> /// Get latest version of one file. /// </summary> /// <param name="fileName">file name</param> /// <returns>file path with version directory</returns> public ModuleUpdateFilePath GetLatestVersion(string fileName) { // download update info if not already downloaded if (!GetUpdateInfo()) { return(null); } string moduleName = Path.GetFileNameWithoutExtension(fileName); if (updates.Modules.ContainsKey(moduleName)) { ModuleUpdateInfo info = updates.Modules[moduleName]; return(new ModuleUpdateFilePath(info.Stable, info.Base == "" ? info.Name : info.Base, fileName)); } return(null); }
public VersionControl CheckForUpdates(PackageInfo info) { if (info.GameName == "launcher") { // set current engine version number engineVersion = info.Version; } // download update info if not already downloaded if (!GetUpdateInfo()) { return(null); } // cut .pak from package string package = Path.GetFileNameWithoutExtension(info.Package); // check only supported files if (!updates.Modules.ContainsKey(package)) { return(null); } ModuleUpdateInfo moduleUpdateInfo = updates.Modules[package]; // get versions Version localVersion = info.Version; Version serverVersion = useUnstableVersion ? moduleUpdateInfo.Unstable : moduleUpdateInfo.Stable; // return null if not updateable if (serverVersion <= localVersion) { return(null); } return(new VersionControl(info.Package, serverVersion, localVersion, moduleUpdateInfo)); }