Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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;
        }