Added version checking

This commit is contained in:
gardient
2015-08-29 11:35:00 +03:00
parent fbf9a6e95c
commit 616e32654c
9 changed files with 152 additions and 32 deletions

View File

@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="RedditRandomNumberGiveawayHelper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup>
<applicationSettings>
<RedditRandomNumberGiveawayHelper.Properties.Settings>
<setting name="Version" serializeAs="String">
<value>V0.2.0</value>
</setting>
</RedditRandomNumberGiveawayHelper.Properties.Settings>
</applicationSettings>
</configuration>

View File

@@ -35,13 +35,17 @@
this.button1 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.checkForUpdatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.randomMax)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 15);
this.label1.Location = new System.Drawing.Point(11, 41);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 13);
this.label1.TabIndex = 0;
@@ -49,14 +53,14 @@
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(118, 12);
this.textBox1.Location = new System.Drawing.Point(117, 38);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(463, 20);
this.textBox1.TabIndex = 1;
//
// randomMax
//
this.randomMax.Location = new System.Drawing.Point(118, 39);
this.randomMax.Location = new System.Drawing.Point(117, 65);
this.randomMax.Maximum = new decimal(new int[] {
100000,
0,
@@ -79,7 +83,7 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 41);
this.label2.Location = new System.Drawing.Point(11, 67);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(57, 13);
this.label2.TabIndex = 3;
@@ -87,7 +91,7 @@
//
// button1
//
this.button1.Location = new System.Drawing.Point(239, 38);
this.button1.Location = new System.Drawing.Point(238, 64);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(342, 23);
this.button1.TabIndex = 4;
@@ -97,7 +101,7 @@
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(13, 95);
this.textBox2.Location = new System.Drawing.Point(12, 121);
this.textBox2.Multiline = true;
this.textBox2.Name = "textBox2";
this.textBox2.ReadOnly = true;
@@ -107,17 +111,42 @@
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(268, 79);
this.label3.Location = new System.Drawing.Point(267, 105);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(37, 13);
this.label3.TabIndex = 6;
this.label3.Text = "Result";
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(593, 24);
this.menuStrip1.TabIndex = 7;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.checkForUpdatesToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// checkForUpdatesToolStripMenuItem
//
this.checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem";
this.checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(170, 22);
this.checkForUpdatesToolStripMenuItem.Text = "Check for updates";
this.checkForUpdatesToolStripMenuItem.Click += new System.EventHandler(this.checkForUpdatesToolStripMenuItem_Click);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(593, 247);
this.ClientSize = new System.Drawing.Size(593, 273);
this.Controls.Add(this.label3);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1);
@@ -125,10 +154,14 @@
this.Controls.Add(this.randomMax);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.menuStrip1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MainMenuStrip = this.menuStrip1;
this.Name = "MainForm";
this.Text = "Reddit random giveaway helper";
((System.ComponentModel.ISupportInitialize)(this.randomMax)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -143,6 +176,9 @@
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem checkForUpdatesToolStripMenuItem;
}
}

View File

@@ -12,6 +12,7 @@ using RedditSharp.Things;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using Octokit;
namespace RedditRandomNumberGiveawayHelper
{
@@ -119,5 +120,34 @@ namespace RedditRandomNumberGiveawayHelper
diff
);
}
private async void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
{
var github = new GitHubClient(new ProductHeaderValue("RedditRandomNumberGiveawayHelper"));
var releases = await github.Release.GetAll("gardient", "RedditRandomNumberGiveawayHelper");
var newestRelease = releases.OrderByDescending(x => x.Id).FirstOrDefault();
var versionRegex = new Regex(@"^v(?<major>\d+)\.(?<minor>\d+)(\.(?<patch>\d+))?$", RegexOptions.IgnoreCase);
var tagMatch = versionRegex.Match(newestRelease.TagName);
if (tagMatch.Success)
{
var versionMatch = versionRegex.Match(Properties.Settings.Default.Version);
if (versionMatch.Success)
{
if (int.Parse(versionMatch.Result("${major}")) >= int.Parse(tagMatch.Result("${major}"))
&& int.Parse(versionMatch.Result("${minor}")) >= int.Parse(tagMatch.Result("${minor}"))
&& int.Parse(versionMatch.Result("${patch}") == "" ? "0" : versionMatch.Result("${patch}")) >= int.Parse(tagMatch.Result("${patch}") == "" ? "0" : tagMatch.Result("${patch}")))
{
MessageBox.Show("You have the latest version");
return;
}
else
{
MessageBox.Show("There is a new verion available");
System.Diagnostics.Process.Start(newestRelease.HtmlUrl);
return;
}
}
}
}
}
}

View File

@@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -1,30 +1,35 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace RedditRandomNumberGiveawayHelper.Properties
{
namespace RedditRandomNumberGiveawayHelper.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("V0.2.0")]
public string Version {
get {
return ((string)(this["Version"]));
}
}
}
}

View File

@@ -1,7 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="RedditRandomNumberGiveawayHelper.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Version" Type="System.String" Scope="Application">
<Value Profile="(Default)">V0.2.0</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -34,6 +34,10 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Octokit, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octokit.0.14.0\lib\net45\Octokit.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net.Http" />
@@ -109,8 +113,7 @@
<Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System" />
<Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System.IO" />
<Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System.Xml.Linq" />
<Code xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Type="Fragment" Language="cs">
<![CDATA[
<Code xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Type="Fragment" Language="cs"><![CDATA[
var config = XElement.Load(Config.ItemSpec).Elements("Costura").FirstOrDefault();
if (config == null) return true;
@@ -129,8 +132,8 @@ var filesToCleanup = Files.Select(f => f.ItemSpec).Where(f => !excludedAssemblie
foreach (var item in filesToCleanup)
File.Delete(item);
]]>
</Code></Task>
]]></Code>
</Task>
</UsingTask>
<Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild;NonWinFodyTarget">
<CosturaCleanup Config="FodyWeavers.xml" Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />

View File

@@ -0,0 +1,28 @@
namespace RedditRandomNumberGiveawayHelper.Properties {
// This class allows you to handle specific events on the settings class:
// The SettingChanging event is raised before a setting's value is changed.
// The PropertyChanged event is raised after a setting's value is changed.
// The SettingsLoaded event is raised after the setting values are loaded.
// The SettingsSaving event is raised before the setting values are saved.
internal sealed partial class Settings {
public Settings() {
// // To add event handlers for saving and changing settings, uncomment the lines below:
//
// this.SettingChanging += this.SettingChangingEventHandler;
//
// this.SettingsSaving += this.SettingsSavingEventHandler;
//
}
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
// Add code to handle the SettingChangingEvent event here.
}
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
// Add code to handle the SettingsSaving event here.
}
}
}

View File

@@ -2,4 +2,5 @@
<packages>
<package id="Costura.Fody" version="1.3.3.0" targetFramework="net451" developmentDependency="true" />
<package id="Fody" version="1.28.3" targetFramework="net451" developmentDependency="true" />
<package id="Octokit" version="0.14.0" targetFramework="net451" />
</packages>