[#] 完善了补丁更新机制

This commit is contained in:
huiyadanli 2019-10-06 13:19:15 +08:00
parent b1b339ac63
commit 8ae2607d7b
9 changed files with 117 additions and 213 deletions

View File

@ -5,6 +5,8 @@ VisualStudioVersion = 15.0.28010.2016
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RevokeMsgPatcher", "RevokeMsgPatcher\RevokeMsgPatcher.csproj", "{977BF781-CED8-4389-9404-0FA08FDF21DF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RevokeMsgPatcher.Assistant", "RevokeMsgPatcher.Assistant\RevokeMsgPatcher.Assistant.csproj", "{6992004F-17E6-45BF-8D72-180A31E9C23C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -15,6 +17,10 @@ Global
{977BF781-CED8-4389-9404-0FA08FDF21DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{977BF781-CED8-4389-9404-0FA08FDF21DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{977BF781-CED8-4389-9404-0FA08FDF21DF}.Release|Any CPU.Build.0 = Release|Any CPU
{6992004F-17E6-45BF-8D72-180A31E9C23C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6992004F-17E6-45BF-8D72-180A31E9C23C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6992004F-17E6-45BF-8D72-180A31E9C23C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6992004F-17E6-45BF-8D72-180A31E9C23C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -116,9 +116,9 @@
// lblUpdatePachJson
//
this.lblUpdatePachJson.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblUpdatePachJson.Location = new System.Drawing.Point(312, 89);
this.lblUpdatePachJson.Location = new System.Drawing.Point(166, 89);
this.lblUpdatePachJson.Name = "lblUpdatePachJson";
this.lblUpdatePachJson.Size = new System.Drawing.Size(162, 12);
this.lblUpdatePachJson.Size = new System.Drawing.Size(308, 12);
this.lblUpdatePachJson.TabIndex = 9;
this.lblUpdatePachJson.Text = "[ 获取最新补丁信息中... ]";
this.lblUpdatePachJson.TextAlign = System.Drawing.ContentAlignment.TopRight;

View File

@ -6,21 +6,33 @@ using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Windows.Forms;
namespace RevokeMsgPatcher
{
public partial class FormMain : Form
{
AppModifier modifier = null;
// 当前使用的修改者
private AppModifier modifier = null;
private WechatModifier wechatModifier = null;
private QQModifier qqModifier = null;
private TIMModifier timModifier = null;
private string thisVersion;
private bool needUpdate = false;
public void InitModifier()
{
Bag bag = new JsonData().Bag();
// 从配置文件中读取配置
JavaScriptSerializer serializer = new JavaScriptSerializer();
Bag bag = serializer.Deserialize<Bag>(Properties.Resources.PatchJson);
WechatModifier wechatModifier = new WechatModifier(bag.Apps["Wechat"]);
QQModifier qqModifier = new QQModifier(bag.Apps["QQ"]);
TIMModifier timModifier = new TIMModifier(bag.Apps["TIM"]);
// 初始化每个应用对应的修改者
wechatModifier = new WechatModifier(bag.Apps["Wechat"]);
qqModifier = new QQModifier(bag.Apps["QQ"]);
timModifier = new TIMModifier(bag.Apps["TIM"]);
rbtWechat.Tag = wechatModifier;
rbtQQ.Tag = qqModifier;
@ -39,7 +51,8 @@ namespace RevokeMsgPatcher
string currentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
if (currentVersion.Length > 3)
{
currentVersion = " v" + currentVersion.Substring(0, 3);
thisVersion = currentVersion.Substring(0, 3);
currentVersion = " v" + thisVersion;
}
this.Text += currentVersion;
@ -158,7 +171,25 @@ namespace RevokeMsgPatcher
// 异步获取最新的补丁信息
Task<string> t = new Task<string>(() =>
{
return new WebClient().DownloadString("https://huiyadanli.coding.me/i/patch.json");
string downStr = null;
WebClient wc = new WebClient();
try
{
downStr = wc.DownloadString("https://huiyadanli.coding.me/i/revokemsg/05.json");
}
catch (Exception ex1)
{
Console.WriteLine(ex1.Message);
try
{
downStr = wc.DownloadString("https://www.huiyadan.com/i/revokemsg/05.json");
}
catch (Exception ex2)
{
Console.WriteLine(ex2.Message);
}
}
return downStr;
});
t.Start();
string json = await t;
@ -169,19 +200,51 @@ namespace RevokeMsgPatcher
}
else
{
//patcher.SetNewPatchJson(json);
lblUpdatePachJson.Text = "[ 获取成功 ]";
try
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
Bag bag = serializer.Deserialize<Bag>(json);
wechatModifier.Config = bag.Apps["Wechat"];
qqModifier.Config = bag.Apps["QQ"];
timModifier.Config = bag.Apps["TIM"];
if (Convert.ToDecimal(bag.LatestVersion) > Convert.ToDecimal(thisVersion))
{
needUpdate = true;
lblUpdatePachJson.Text = $"[ 请到软件主页下载最新版本 {bag.LatestVersion} ]";
}
else
{
needUpdate = false;
lblUpdatePachJson.Text = "[ 获取成功 ]";
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
lblUpdatePachJson.Text = "[ 更换新配置时异常 ]";
}
}
}
private void lblUpdatePachJson_Click(object sender, EventArgs e)
{
string versions = "";
//patcher.TargetFiles.ForEach(t =>
//{
// versions += t.Version + Environment.NewLine;
//});
MessageBox.Show("当前所支持的微信版本:" + Environment.NewLine + versions);
string tips = "";
if(needUpdate)
{
tips += "【当前存在最新版本,点击确定进入软件主页下载最新版本。】" + Environment.NewLine + Environment.NewLine;
}
tips += "支持以下版本" +Environment.NewLine;
tips += " ➯ 微信:" + wechatModifier.Config.GetSupportVersionStr() + Environment.NewLine;
tips += " ➯ QQ" + qqModifier.Config.GetSupportVersionStr() + Environment.NewLine;
tips += " ➯ TIM" + timModifier.Config.GetSupportVersionStr() + Environment.NewLine;
DialogResult dr = MessageBox.Show(tips, "当前支持防撤回的版本", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK && needUpdate)
{
System.Diagnostics.Process.Start("https://github.com/huiyadanli/RevokeMsgPatcher/releases");
}
}
private void radioButtons_CheckedChanged(object sender, EventArgs e)

View File

@ -1,192 +0,0 @@
using RevokeMsgPatcher.Model;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace RevokeMsgPatcher
{
public class JsonData
{
public Bag Bag()
{
return new Bag
{
Apps = AppConfig(),
LatestVersion = "0.5",
Notice = "公告"
};
}
public string BagJson()
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(Bag());
}
public Dictionary<string, App> AppConfig()
{
return new Dictionary<string, App>
{
{ "Wechat" , Wechat() },
{ "QQ" , QQ() },
{ "TIM" , TIM() }
};
}
public string AppConfigJson()
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(AppConfig());
}
public App Wechat()
{
return new App
{
Name = "Wechat",
FileTargetInfos = new Dictionary<string, TargetInfo>
{
{
"WeChatWin.dll",
new TargetInfo
{
Name = "WeChatWin.dll",
RelativePath = "WeChatWin.dll"
}
}
},
FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
{
{
"WeChatWin.dll",
new List<ModifyInfo>
{
new ModifyInfo {
Name="WeChatWin.dll",
Version="2.7.1.65",
SHA1Before="8346b97d264725da924d240c6eb77df3e693385e",
SHA1After="42bab2c9c79ef4f2088c00ea6d817973e14a5e6e",
Changes = new List<Change>
{
new Change
{
Position =2495545,
Content =new byte[] { 235}
}
}
},
new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.59",SHA1Before="df954d403edaca89cd5394927a325a0023e93281",SHA1After="6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0",Changes = new List<Change> { new Change {Position=2496073,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.43",SHA1Before="39cd9e09e1a3eac09e6808749bff525c9e3216ce",SHA1After="7b829f1ff0217e346a80f9510fdd7634ddd49445",Changes = new List<Change> { new Change {Position=2494169,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.70",SHA1Before="3b0601864aff3c1d792f812ad1ca05f02aa761e3",SHA1After="1e8734d32b0a8c12758e30f99c77f729991fb071",Changes = new List<Change> { new Change {Position=2475657,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.65",SHA1Before="063c2e05a0df1bdb8987c2d978d93499bd2052ba",SHA1After="5ed4c09a4f18643b967f063a824d7e65d0567f8a",Changes = new List<Change> { new Change {Position=2475449,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.68",SHA1Before="2e9417f4276b12fe32ca7b4fee49272a4a2af334",SHA1After="699602ee3cbb9ae5714f6e6ebc658c875a6c66e6",Changes = new List<Change> { new Change {Position=2454006,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.65",SHA1Before="e01f6855a96c12c30808960903ed199a33e4952c",SHA1After="d9120569cfd0433aebea107d7b90805cbbac7518",Changes = new List<Change> { new Change {Position=2454265,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.52",SHA1Before="88131302f664df6a657c9ca49d152da536fe5729",SHA1After="8d1454b73831644181e962c1fa0ea4e2da4124a3",Changes = new List<Change> { new Change {Position=2453049,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.51",SHA1Before="d0a5517b1292a751501b00b4b1f0702db2d9fc30",SHA1After="53e7b1525d49bf2c3250a8131ff0ba2510779b78",Changes = new List<Change> { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.37",SHA1Before="7e01f8b04a158a4a50bc5a6e67c2fb8b02233170",SHA1After="a1895004415fe9bcd7e690bd6e482b833b515599",Changes = new List<Change> { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.57",SHA1Before="80a91aaf941bcb1c24a7d672838ac73e9ebb2e40",SHA1After="a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4",Changes = new List<Change> { new Change {Position=2433413,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.40",SHA1Before="04bd0cb28df6630b518f42a3f9c2caa4a9359fbc",SHA1After="13c91cf1d4609959771fd137b9a86a5ca365e1b6",Changes = new List<Change> { new Change {Position=2432934,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.32",SHA1Before="a02519c1007ee6723947c262c720d63c619f633e",SHA1After="f3007471ca8734c29783c25f0bb49949a783a44",Changes = new List<Change> { new Change {Position=2432806,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.6.28",SHA1Before="0b19cb17a62c3ea0efce0fb675a1d3b17845cba3",SHA1After="260948656725446b818ea668273ceff02ddfb44d",Changes = new List<Change> { new Change {Position=2401678,Content=new byte[] { 116} } } }
}
}
}
};
}
public App QQ()
{
return new App
{
Name = "QQ",
FileTargetInfos = new Dictionary<string, TargetInfo>
{
{
"IM.dll",
new TargetInfo
{
Name = "IM.dll",
RelativePath = @"Bin\IM.dll"
}
}
},
FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
{
{
"IM.dll",
new List<ModifyInfo>
{
new ModifyInfo
{
Name = "IM.dll",
Version = "9.1.7.25980",
SHA1Before = "c6632339fbe675312a70ae4620e70699c258cd36",
SHA1After = "e9ddc5cc681950796fc8fe4c55f580428c890b51",
Changes = new List<Change>
{
new Change
{
Position = 0x0005009F,
Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 }
},
new Change
{
Position = 0x000502BC,
Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 }
},
new Change
{
Position = 0x0005046C,
Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
}
}
}
}
}
}
};
}
public App TIM()
{
return new App
{
Name = "TIM",
FileTargetInfos = new Dictionary<string, TargetInfo>
{
{
"IM.dll",
new TargetInfo
{
Name = "IM.dll",
RelativePath = @"Bin\IM.dll"
}
}
},
FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
{
{
"IM.dll",
new List<ModifyInfo>
{
new ModifyInfo
{
Name = "IM.dll",
Version = "2.3.2.21173",
SHA1Before = "ecf3e69f3fb100ffe2fee095ffded591b9781024",
SHA1After = "0514d1304e7ac46b4d33386ec3313888f5ae7171",
Changes = new List<Change>
{
new Change
{
Position = 0x0004D78A,
Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 }
},
new Change
{
Position = 0x0004D9A7,
Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 }
},
new Change
{
Position = 0x0004DB57,
Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
}
}
}
}
}
}
};
}
}
}

View File

@ -13,5 +13,33 @@ namespace RevokeMsgPatcher.Model
public Dictionary<string, TargetInfo> FileTargetInfos { get; set; }
public Dictionary<string, List<ModifyInfo>> FileModifyInfos { get; set; }
public HashSet<string> GetSupportVersions()
{
// 使用 HashSet 防重
HashSet<string> versions = new HashSet<string>();
foreach (List<ModifyInfo> modifyInfos in FileModifyInfos.Values)
{
foreach (ModifyInfo modifyInfo in modifyInfos)
{
versions.Add(modifyInfo.Version);
}
}
return versions;
}
public string GetSupportVersionStr()
{
string str = "";
foreach (string v in GetSupportVersions())
{
str += v + "、";
}
if (str.Length > 1)
{
str = str.Substring(0, str.Length - 1);
}
return str;
}
}
}

View File

@ -19,7 +19,7 @@ namespace RevokeMsgPatcher.Modifier
{
protected App config;
public App Config { set { config = value; } }
public App Config { set { config = value; } get { return config; } }
protected List<FileHexEditor> editors;

View File

@ -61,7 +61,7 @@ namespace RevokeMsgPatcher.Properties {
}
/// <summary>
/// 查找类似 [{&quot;FileName&quot;:&quot;WeChatWin.dll&quot;,&quot;Version&quot;:&quot;2.6.8.65&quot;,&quot;SHA1Before&quot;:&quot;e01f6855a96c12c30808960903ed199a33e4952c&quot;,&quot;SHA1After&quot;:&quot;d9120569cfd0433aebea107d7b90805cbbac7518&quot;,&quot;Position&quot;:2454265,&quot;Content&quot;:117},{&quot;FileName&quot;:&quot;WeChatWin.dll&quot;,&quot;Version&quot;:&quot;2.6.8.52&quot;,&quot;SHA1Before&quot;:&quot;88131302f664df6a657c9ca49d152da536fe5729&quot;,&quot;SHA1After&quot;:&quot;8d1454b73831644181e962c1fa0ea4e2da4124a3&quot;,&quot;Position&quot;:2453049,&quot;Content&quot;:117},{&quot;FileName&quot;:&quot;WeChatWin.dll&quot;,&quot;Version&quot;:&quot;2.6.8.51&quot;,&quot;SHA1Before&quot;:&quot;d0a5517b1292a751501b00b4b1f0702db2d9fc30&quot;,&quot;SHA1After&quot;:&quot;53e7b [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// 查找类似 {&quot;Apps&quot;:{&quot;Wechat&quot;:{&quot;Name&quot;:&quot;Wechat&quot;,&quot;FileTargetInfos&quot;:{&quot;WeChatWin.dll&quot;:{&quot;Name&quot;:&quot;WeChatWin.dll&quot;,&quot;RelativePath&quot;:&quot;WeChatWin.dll&quot;,&quot;Memo&quot;:null}},&quot;FileModifyInfos&quot;:{&quot;WeChatWin.dll&quot;:[{&quot;Name&quot;:&quot;WeChatWin.dll&quot;,&quot;Version&quot;:&quot;2.7.1.65&quot;,&quot;SHA1Before&quot;:&quot;8346b97d264725da924d240c6eb77df3e693385e&quot;,&quot;SHA1After&quot;:&quot;42bab2c9c79ef4f2088c00ea6d817973e14a5e6e&quot;,&quot;Changes&quot;:[{&quot;Position&quot;:2495545,&quot;Content&quot;:[235]}]},{&quot;Name&quot;:&quot;WeChatWin.dll&quot;,&quot;Version&quot;:&quot;2.7.1.59&quot;,&quot;SHA1Before&quot;:&quot;df954d403edaca89cd5394927a325a0023e93281&quot;,&quot;SHA1After&quot;:&quot;6aa22460c91bb5c5e [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string PatchJson {
get {

View File

@ -118,6 +118,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PatchJson" xml:space="preserve">
<value>[{"FileName":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Position":2454265,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Position":2453049,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Position":2452614,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Position":2452614,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Position":2433413,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Position":2432934,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Position":2432806,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Position":2401678,"Content":116}]</value>
<value>{"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0","Changes":[{"Position":2496073,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.43","SHA1Before":"39cd9e09e1a3eac09e6808749bff525c9e3216ce","SHA1After":"7b829f1ff0217e346a80f9510fdd7634ddd49445","Changes":[{"Position":2494169,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.70","SHA1Before":"3b0601864aff3c1d792f812ad1ca05f02aa761e3","SHA1After":"1e8734d32b0a8c12758e30f99c77f729991fb071","Changes":[{"Position":2475657,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.65","SHA1Before":"063c2e05a0df1bdb8987c2d978d93499bd2052ba","SHA1After":"5ed4c09a4f18643b967f063a824d7e65d0567f8a","Changes":[{"Position":2475449,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.68","SHA1Before":"2e9417f4276b12fe32ca7b4fee49272a4a2af334","SHA1After":"699602ee3cbb9ae5714f6e6ebc658c875a6c66e6","Changes":[{"Position":2454006,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Changes":[{"Position":2454265,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Changes":[{"Position":2453049,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Changes":[{"Position":2433413,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Changes":[{"Position":2432934,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Changes":[{"Position":2432806,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Changes":[{"Position":2401678,"Content":[116]}]}]}},"QQ":{"Name":"QQ","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"9.1.7.25980","SHA1Before":"c6632339fbe675312a70ae4620e70699c258cd36","SHA1After":"e9ddc5cc681950796fc8fe4c55f580428c890b51","Changes":[{"Position":327839,"Content":[235,144,144,144,144]},{"Position":328380,"Content":[235,144,144,144,144]},{"Position":328812,"Content":[235,8,144,144,144,144]}]}]}},"TIM":{"Name":"TIM","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"2.3.2.21173","SHA1Before":"ecf3e69f3fb100ffe2fee095ffded591b9781024","SHA1After":"0514d1304e7ac46b4d33386ec3313888f5ae7171","Changes":[{"Position":317322,"Content":[235,144,144,144,144]},{"Position":317863,"Content":[235,144,144,144,144]},{"Position":318295,"Content":[235,8,144,144,144,144]}]}]}}},"LatestVersion":"0.5","Notice":"公告"}</value>
</data>
</root>

View File

@ -69,7 +69,6 @@
<Compile Include="Utils\PathUtil.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="JsonData.cs" />
<EmbeddedResource Include="FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>