private static void GetUpdateNodes() { IEnumerable <string> XMLUpdateFiles = Directory.EnumerateFiles("Albo1125.Common/UpdateInfo", "*.xml"); foreach (string xmlnode in XMLUpdateFiles) { XDocument xdoc = XDocument.Load(xmlnode); if (IsUpdateNodeValid(xdoc.Root)) { if (File.Exists(XmlConvert.DecodeName(xdoc.Root.Element("Path").Value.Trim()))) { AllUpdateEntries.Add(new UpdateEntry() { Name = XmlConvert.DecodeName(xdoc.Root.Element("Name").Value.Trim()), FileID = xdoc.Root.Element("FileID").Value.Trim(), DownloadLink = XmlConvert.DecodeName(xdoc.Root.Element("DownloadLink").Value.Trim()), Path = XmlConvert.DecodeName(xdoc.Root.Element("Path").Value.Trim()), }); } } xdoc = null; } }
public static void InitialiseUpdateCheckingProcess() { Game.LogTrivial("Albo1125.Common " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + ", developed by Albo1125. Starting update checks."); Directory.CreateDirectory("Albo1125.Common/UpdateInfo"); if (!File.Exists("Albo1125.Common/CommonVariables.xml")) { new XDocument( new XElement("CommonVariables") ) .Save("Albo1125.Common/CommonVariables.xml"); } try { XDocument CommonVariablesDoc = XDocument.Load("Albo1125.Common/CommonVariables.xml"); if (CommonVariablesDoc.Root.Element("NextUpdateCheckDT") == null) { CommonVariablesDoc.Root.Add(new XElement("NextUpdateCheckDT")); } if (!string.IsNullOrWhiteSpace((string)CommonVariablesDoc.Root.Element("NextUpdateCheckDT"))) { try { if (CommonVariablesDoc.Root.Element("NextUpdateCheckDT").Value == Assembly.GetExecutingAssembly().GetName().Version.ToString()) { Game.LogTrivial("Albo1125.Common update checking has been disabled. Skipping checks."); Game.LogTrivial("Albo1125.Common note: please do not request support for old versions."); return; } DateTime UpdateCheckDT = DateTime.FromBinary(long.Parse(CommonVariablesDoc.Root.Element("NextUpdateCheckDT").Value)); if (DateTime.Now < UpdateCheckDT) { Game.LogTrivial("Albo1125.Common " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + ", developed by Albo1125. Not checking for updates until " + UpdateCheckDT.ToString()); return; } } catch (Exception e) { Game.LogTrivial(e.ToString()); Game.LogTrivial("Albo1125.Common handled exception. #1"); } } DateTime NextUpdateCheckDT = DateTime.Now.AddDays(1); if (CommonVariablesDoc.Root.Element("NextUpdateCheckDT") == null) { CommonVariablesDoc.Root.Add(new XElement("NextUpdateCheckDT")); } CommonVariablesDoc.Root.Element("NextUpdateCheckDT").Value = NextUpdateCheckDT.ToBinary().ToString(); CommonVariablesDoc.Save("Albo1125.Common/CommonVariables.xml"); CommonVariablesDoc = null; GameFiber.StartNew(delegate { GetUpdateNodes(); foreach (UpdateEntry entry in AllUpdateEntries.ToArray()) { CheckForModificationUpdates(entry.Name, new Version(FileVersionInfo.GetVersionInfo(entry.Path).FileVersion), entry.FileID, entry.DownloadLink); } if (PluginsDownloadLink.Count > 0) { DisplayUpdates(); } Game.LogTrivial("Albo1125.Common " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + ", developed by Albo1125. Update checks complete."); }); } catch (System.Xml.XmlException e) { Game.LogTrivial(e.ToString()); Game.DisplayNotification("Error while processing XML files. To fix this, please delete the following folder and its contents: Grand Theft Auto V/Albo1125.Common"); Albo1125.Common.CommonLibrary.ExtensionMethods.DisplayPopupTextBoxWithConfirmation("Albo1125.Common", "Error while processing XML files. To fix this, please delete the following folder and its contents: Grand Theft Auto V/Albo1125.Common", false); throw e; } }