mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-06-08 23:19:14 +08:00
Add New Version Check
This commit is contained in:
parent
daeb0d516e
commit
193cef5b2c
@ -10,27 +10,30 @@
|
|||||||
</startup>
|
</startup>
|
||||||
<userSettings>
|
<userSettings>
|
||||||
<GrasscutterTools.Properties.Settings>
|
<GrasscutterTools.Properties.Settings>
|
||||||
<setting name="AutoCopy" serializeAs="String">
|
<setting name="AutoCopy" serializeAs="String">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="Uid" serializeAs="String">
|
<setting name="Uid" serializeAs="String">
|
||||||
<value>10001</value>
|
<value>10001</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="DefaultLanguage" serializeAs="String">
|
<setting name="DefaultLanguage" serializeAs="String">
|
||||||
<value>zh-CN</value>
|
<value>zh-CN</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="ResourcesDirPath" serializeAs="String">
|
<setting name="ResourcesDirPath" serializeAs="String">
|
||||||
<value />
|
<value />
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="TextMapFileName" serializeAs="String">
|
<setting name="TextMapFileName" serializeAs="String">
|
||||||
<value>TextMapCHS</value>
|
<value>TextMapCHS</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="RemoteUid" serializeAs="String">
|
<setting name="RemoteUid" serializeAs="String">
|
||||||
<value>10001</value>
|
<value>10001</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="Host" serializeAs="String">
|
<setting name="Host" serializeAs="String">
|
||||||
<value>https://127.0.0.1</value>
|
<value>https://127.0.0.1</value>
|
||||||
</setting>
|
</setting>
|
||||||
</GrasscutterTools.Properties.Settings>
|
<setting name="CheckedLastVersion" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
</GrasscutterTools.Properties.Settings>
|
||||||
</userSettings>
|
</userSettings>
|
||||||
</configuration>
|
</configuration>
|
@ -40,17 +40,18 @@ namespace GrasscutterTools
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Icon = Resources.IconGrasscutter;
|
Icon = Resources.IconGrasscutter;
|
||||||
|
LoadVersion();
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
LoadUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FormMain_Load(object sender, EventArgs e)
|
private void FormMain_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
MultiLanguage.LoadLanguage(this, typeof(FormMain));
|
MultiLanguage.LoadLanguage(this, typeof(FormMain));
|
||||||
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
Text += " - by jie65535 - v" + version.ToString(3) + "-debug";
|
Text += " - by jie65535 - v" + AppVersion.ToString(3) + "-debug";
|
||||||
#else
|
#else
|
||||||
Text += " - by jie65535 - v" + version.ToString(3);
|
Text += " - by jie65535 - v" + AppVersion.ToString(3);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GameData.LoadResources();
|
GameData.LoadResources();
|
||||||
@ -75,6 +76,13 @@ namespace GrasscutterTools
|
|||||||
private readonly string[] LanguageNames = new string[] { "简体中文", "English" };
|
private readonly string[] LanguageNames = new string[] { "简体中文", "English" };
|
||||||
private readonly string[] Languages = new string[] { "zh-CN", "en-US" };
|
private readonly string[] Languages = new string[] { "zh-CN", "en-US" };
|
||||||
|
|
||||||
|
|
||||||
|
private Version AppVersion;
|
||||||
|
private void LoadVersion()
|
||||||
|
{
|
||||||
|
AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadSettings()
|
private void LoadSettings()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -116,6 +124,42 @@ namespace GrasscutterTools
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LoadUpdate()
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var info = Github.ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator").Result;
|
||||||
|
if (Version.TryParse(info.TagName.Substring(1), out Version lastestVersion) && AppVersion < lastestVersion)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Settings.Default.CheckedLastVersion)
|
||||||
|
&& Version.TryParse(Settings.Default.CheckedLastVersion, out Version checkedVersion)
|
||||||
|
&& checkedVersion >= lastestVersion)
|
||||||
|
return;
|
||||||
|
BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
var r = MessageBox.Show(
|
||||||
|
string.Format(Resources.NewVersionInfo, info.Name, info.CraeteTime, info.Body),
|
||||||
|
Resources.CheckToNewVersion,
|
||||||
|
MessageBoxButtons.YesNo,
|
||||||
|
MessageBoxIcon.Information);
|
||||||
|
if (r == DialogResult.Yes)
|
||||||
|
System.Diagnostics.Process.Start(info.Url);
|
||||||
|
else if (r == DialogResult.No)
|
||||||
|
Settings.Default.CheckedLastVersion = lastestVersion.ToString();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
throw;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#endregion - 初始化 -
|
#endregion - 初始化 -
|
||||||
|
|
||||||
#region - 主页 -
|
#region - 主页 -
|
||||||
|
46
Source/GrasscutterTools/Github/ReleaseAPI.cs
Normal file
46
Source/GrasscutterTools/Github/ReleaseAPI.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using System;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using GrasscutterTools.Utils;
|
||||||
|
|
||||||
|
namespace GrasscutterTools.Github
|
||||||
|
{
|
||||||
|
public static class ReleaseAPI
|
||||||
|
{
|
||||||
|
public static async Task<ReleaseInfo> GetReleasesLastest(string username, string repo)
|
||||||
|
{
|
||||||
|
var headerValue = new ProductInfoHeaderValue("GrasscutterTools", "1");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpHelper.HttpClient.DefaultRequestHeaders.UserAgent.Add(headerValue);
|
||||||
|
var r = await HttpHelper.GetAsync<dynamic>($"https://api.github.com/repos/{username}/{repo}/releases/latest");
|
||||||
|
return new ReleaseInfo
|
||||||
|
{
|
||||||
|
TagName = r.tag_name,
|
||||||
|
Url = r.html_url,
|
||||||
|
CraeteTime = r.created_at,
|
||||||
|
Name = r.name,
|
||||||
|
Body = r.body
|
||||||
|
};
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
HttpHelper.HttpClient.DefaultRequestHeaders.UserAgent.Remove(headerValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ReleaseInfo
|
||||||
|
{
|
||||||
|
public string TagName { get; set; }
|
||||||
|
|
||||||
|
public string Url { get; set; }
|
||||||
|
|
||||||
|
public DateTime CraeteTime { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public string Body { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -222,6 +222,7 @@
|
|||||||
<Compile Include="Game\ItemMap.cs" />
|
<Compile Include="Game\ItemMap.cs" />
|
||||||
<Compile Include="Game\SetStatsCommand.cs" />
|
<Compile Include="Game\SetStatsCommand.cs" />
|
||||||
<Compile Include="Game\TextMapData.cs" />
|
<Compile Include="Game\TextMapData.cs" />
|
||||||
|
<Compile Include="Github\ReleaseAPI.cs" />
|
||||||
<Compile Include="OpenCommand\OpenCommandAPI.cs" />
|
<Compile Include="OpenCommand\OpenCommandAPI.cs" />
|
||||||
<Compile Include="MultiLanguage.cs" />
|
<Compile Include="MultiLanguage.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
|
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
|||||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||||
//通过使用 "*",如下所示:
|
//通过使用 "*",如下所示:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0")]
|
[assembly: AssemblyVersion("1.1.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0")]
|
@ -403,6 +403,15 @@ namespace GrasscutterTools.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 检查到新版本 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string CheckToNewVersion {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("CheckToNewVersion", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 无,晴天,多云,雨天,雷暴,雪天,雾天 的本地化字符串。
|
/// 查找类似 无,晴天,多云,雨天,雷暴,雪天,雾天 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -715,6 +724,15 @@ namespace GrasscutterTools.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 版本名:{0}\n更新时间:{1}\n更新内容:\n{2}\n\n是否查看更新?选择否将不再提醒该版本。 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string NewVersionInfo {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("NewVersionInfo", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 1: (test)蒙德城主$UNRELEASED
|
/// 查找类似 1: (test)蒙德城主$UNRELEASED
|
||||||
///2: (test)哥哥$UNRELEASED
|
///2: (test)哥哥$UNRELEASED
|
||||||
|
@ -148,6 +148,9 @@
|
|||||||
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
||||||
<value>The browser failed to open. You can manually access the following address:</value>
|
<value>The browser failed to open. You can manually access the following address:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CheckToNewVersion" xml:space="preserve">
|
||||||
|
<value>Check to new version</value>
|
||||||
|
</data>
|
||||||
<data name="ClimateType" xml:space="preserve">
|
<data name="ClimateType" xml:space="preserve">
|
||||||
<value>None,Sunny,Partly cloudy,Rain,Thunderstorm,Snow,Fog</value>
|
<value>None,Sunny,Partly cloudy,Rain,Thunderstorm,Snow,Fog</value>
|
||||||
</data>
|
</data>
|
||||||
@ -196,6 +199,9 @@
|
|||||||
<data name="Monster" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Monster" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\en-us\Monster.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
<value>..\Resources\en-us\Monster.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NewVersionInfo" xml:space="preserve">
|
||||||
|
<value>Name : {0}\nUpdate time : {1}\nUpdate info : \n{2}\n\nDo you want to check for updates? Selecting No will no longer remind you of this version.</value>
|
||||||
|
</data>
|
||||||
<data name="NPC" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="NPC" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\en-us\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
<value>..\Resources\en-us\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -148,6 +148,9 @@
|
|||||||
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
||||||
<value>浏览器打开失败,你可以通过以下链接手动访问:</value>
|
<value>浏览器打开失败,你可以通过以下链接手动访问:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CheckToNewVersion" xml:space="preserve">
|
||||||
|
<value>检查到新版本</value>
|
||||||
|
</data>
|
||||||
<data name="ClimateType" xml:space="preserve">
|
<data name="ClimateType" xml:space="preserve">
|
||||||
<value>无,晴天,多云,雨天,雷暴,雪天,雾天</value>
|
<value>无,晴天,多云,雨天,雷暴,雪天,雾天</value>
|
||||||
</data>
|
</data>
|
||||||
@ -199,6 +202,9 @@
|
|||||||
<data name="Monster" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Monster" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\zh-cn\Monster.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
<value>..\Resources\zh-cn\Monster.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NewVersionInfo" xml:space="preserve">
|
||||||
|
<value>版本名:{0}\n更新时间:{1}\n更新内容:\n{2}\n\n是否查看更新?选择否将不再提醒该版本。</value>
|
||||||
|
</data>
|
||||||
<data name="NPC" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="NPC" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\zh-cn\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
<value>..\Resources\zh-cn\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -106,5 +106,17 @@ namespace GrasscutterTools.Properties {
|
|||||||
this["Host"] = value;
|
this["Host"] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string CheckedLastVersion {
|
||||||
|
get {
|
||||||
|
return ((string)(this["CheckedLastVersion"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["CheckedLastVersion"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,5 +23,8 @@
|
|||||||
<Setting Name="Host" Type="System.String" Scope="User">
|
<Setting Name="Host" Type="System.String" Scope="User">
|
||||||
<Value Profile="(Default)">https://127.0.0.1</Value>
|
<Value Profile="(Default)">https://127.0.0.1</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
|
<Setting Name="CheckedLastVersion" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
@ -28,7 +28,10 @@ namespace GrasscutterTools.Utils
|
|||||||
{
|
{
|
||||||
public static class HttpHelper
|
public static class HttpHelper
|
||||||
{
|
{
|
||||||
private static readonly HttpClient httpClient = new HttpClient();
|
public static readonly HttpClient HttpClient = new HttpClient
|
||||||
|
{
|
||||||
|
Timeout = TimeSpan.FromSeconds(30),
|
||||||
|
};
|
||||||
|
|
||||||
static HttpHelper()
|
static HttpHelper()
|
||||||
{
|
{
|
||||||
@ -39,7 +42,7 @@ namespace GrasscutterTools.Utils
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var responseMessage = await httpClient.GetAsync(url);
|
var responseMessage = await HttpClient.GetAsync(url);
|
||||||
if (responseMessage.IsSuccessStatusCode)
|
if (responseMessage.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
||||||
@ -63,7 +66,7 @@ namespace GrasscutterTools.Utils
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
|
var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
|
||||||
var responseMessage = await httpClient.PostAsync(url, content);
|
var responseMessage = await HttpClient.PostAsync(url, content);
|
||||||
if (responseMessage.IsSuccessStatusCode)
|
if (responseMessage.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
||||||
|
Loading…
Reference in New Issue
Block a user