public static bool IsApplied(string exeFileName, Patch patch) { if (exeFileName == null) { throw new ArgumentNullException("exeFileName"); } if (patch == null) { throw new ArgumentNullException("patch"); } using (FileStream file = File.Open(exeFileName, FileMode.Open, FileAccess.Read)) { Patcher.FileVerifyExeVersion(file); foreach (var item in patch.Items) { if (!Patcher.FileCheckBytes(file, item.Offset, item.NewValues)) { return false; } } } return true; }
public Patch ToPatch() { var patch = new Patch(); patch.Name = this.Name; patch.Description = this.Description; foreach (var item in this.Items) { patch.Items.Add(new PatchItem { Offset = item.Offset, OldValues = item.OldValues, NewValues = item.NewValues }); } return patch; }
public static Patcher Read(string fileName) { Patcher patcher = new Patcher(); XmlDocument document = new XmlDocument(); document.Load(fileName); foreach (XmlNode patchNode in document.SelectNodes("/ArrayOfPatch/Patch")) { XmlNode node; Patch patch = new Patch(); patch.Name = patchNode.Attributes.GetNamedItem("Name").Value; node = patchNode.Attributes.GetNamedItem("Description"); patch.Description = node != null ? node.Value : null; foreach (XmlNode itemNode in patchNode.SelectNodes("Item")) { patch.Items.Add(new PatchItem { OffsetString = itemNode.Attributes.GetNamedItem("Offset").Value, OldValuesString = itemNode.Attributes.GetNamedItem("From").Value, NewValuesString = itemNode.Attributes.GetNamedItem("To").Value }); } patcher.Patches.Add(patch); } return patcher; }