mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-06-07 22:59:14 +08:00
Add New Version Check
This commit is contained in:
parent
daeb0d516e
commit
193cef5b2c
@ -10,27 +10,30 @@
|
||||
</startup>
|
||||
<userSettings>
|
||||
<GrasscutterTools.Properties.Settings>
|
||||
<setting name="AutoCopy" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Uid" serializeAs="String">
|
||||
<value>10001</value>
|
||||
</setting>
|
||||
<setting name="DefaultLanguage" serializeAs="String">
|
||||
<value>zh-CN</value>
|
||||
</setting>
|
||||
<setting name="ResourcesDirPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="TextMapFileName" serializeAs="String">
|
||||
<value>TextMapCHS</value>
|
||||
</setting>
|
||||
<setting name="RemoteUid" serializeAs="String">
|
||||
<value>10001</value>
|
||||
</setting>
|
||||
<setting name="Host" serializeAs="String">
|
||||
<value>https://127.0.0.1</value>
|
||||
</setting>
|
||||
</GrasscutterTools.Properties.Settings>
|
||||
<setting name="AutoCopy" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Uid" serializeAs="String">
|
||||
<value>10001</value>
|
||||
</setting>
|
||||
<setting name="DefaultLanguage" serializeAs="String">
|
||||
<value>zh-CN</value>
|
||||
</setting>
|
||||
<setting name="ResourcesDirPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="TextMapFileName" serializeAs="String">
|
||||
<value>TextMapCHS</value>
|
||||
</setting>
|
||||
<setting name="RemoteUid" serializeAs="String">
|
||||
<value>10001</value>
|
||||
</setting>
|
||||
<setting name="Host" serializeAs="String">
|
||||
<value>https://127.0.0.1</value>
|
||||
</setting>
|
||||
<setting name="CheckedLastVersion" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
</GrasscutterTools.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
@ -40,17 +40,18 @@ namespace GrasscutterTools
|
||||
{
|
||||
InitializeComponent();
|
||||
Icon = Resources.IconGrasscutter;
|
||||
LoadVersion();
|
||||
LoadSettings();
|
||||
LoadUpdate();
|
||||
}
|
||||
|
||||
private void FormMain_Load(object sender, EventArgs e)
|
||||
{
|
||||
MultiLanguage.LoadLanguage(this, typeof(FormMain));
|
||||
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||
#if DEBUG
|
||||
Text += " - by jie65535 - v" + version.ToString(3) + "-debug";
|
||||
Text += " - by jie65535 - v" + AppVersion.ToString(3) + "-debug";
|
||||
#else
|
||||
Text += " - by jie65535 - v" + version.ToString(3);
|
||||
Text += " - by jie65535 - v" + AppVersion.ToString(3);
|
||||
#endif
|
||||
|
||||
GameData.LoadResources();
|
||||
@ -75,6 +76,13 @@ namespace GrasscutterTools
|
||||
private readonly string[] LanguageNames = new string[] { "简体中文", "English" };
|
||||
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()
|
||||
{
|
||||
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 - 初始化 -
|
||||
|
||||
#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\SetStatsCommand.cs" />
|
||||
<Compile Include="Game\TextMapData.cs" />
|
||||
<Compile Include="Github\ReleaseAPI.cs" />
|
||||
<Compile Include="OpenCommand\OpenCommandAPI.cs" />
|
||||
<Compile Include="MultiLanguage.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
|
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0")]
|
||||
[assembly: AssemblyVersion("1.1.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>
|
||||
@ -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>
|
||||
/// 查找类似 1: (test)蒙德城主$UNRELEASED
|
||||
///2: (test)哥哥$UNRELEASED
|
||||
|
@ -148,6 +148,9 @@
|
||||
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
||||
<value>The browser failed to open. You can manually access the following address:</value>
|
||||
</data>
|
||||
<data name="CheckToNewVersion" xml:space="preserve">
|
||||
<value>Check to new version</value>
|
||||
</data>
|
||||
<data name="ClimateType" xml:space="preserve">
|
||||
<value>None,Sunny,Partly cloudy,Rain,Thunderstorm,Snow,Fog</value>
|
||||
</data>
|
||||
@ -196,6 +199,9 @@
|
||||
<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>
|
||||
</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">
|
||||
<value>..\Resources\en-us\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
|
@ -148,6 +148,9 @@
|
||||
<data name="BrowserOpenFailedTip" xml:space="preserve">
|
||||
<value>浏览器打开失败,你可以通过以下链接手动访问:</value>
|
||||
</data>
|
||||
<data name="CheckToNewVersion" xml:space="preserve">
|
||||
<value>检查到新版本</value>
|
||||
</data>
|
||||
<data name="ClimateType" xml:space="preserve">
|
||||
<value>无,晴天,多云,雨天,雷暴,雪天,雾天</value>
|
||||
</data>
|
||||
@ -199,6 +202,9 @@
|
||||
<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>
|
||||
</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">
|
||||
<value>..\Resources\zh-cn\NPC.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
|
@ -106,5 +106,17 @@ namespace GrasscutterTools.Properties {
|
||||
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">
|
||||
<Value Profile="(Default)">https://127.0.0.1</Value>
|
||||
</Setting>
|
||||
<Setting Name="CheckedLastVersion" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@ -28,7 +28,10 @@ namespace GrasscutterTools.Utils
|
||||
{
|
||||
public static class HttpHelper
|
||||
{
|
||||
private static readonly HttpClient httpClient = new HttpClient();
|
||||
public static readonly HttpClient HttpClient = new HttpClient
|
||||
{
|
||||
Timeout = TimeSpan.FromSeconds(30),
|
||||
};
|
||||
|
||||
static HttpHelper()
|
||||
{
|
||||
@ -39,7 +42,7 @@ namespace GrasscutterTools.Utils
|
||||
{
|
||||
try
|
||||
{
|
||||
var responseMessage = await httpClient.GetAsync(url);
|
||||
var responseMessage = await HttpClient.GetAsync(url);
|
||||
if (responseMessage.IsSuccessStatusCode)
|
||||
{
|
||||
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
||||
@ -63,7 +66,7 @@ namespace GrasscutterTools.Utils
|
||||
try
|
||||
{
|
||||
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)
|
||||
{
|
||||
var responseString = await responseMessage.Content.ReadAsStringAsync();
|
||||
|
Loading…
Reference in New Issue
Block a user