2 Commits

Author SHA1 Message Date
gardient
633862e0bb Merge pull request #1 from gardient/update-checker
Added version checking
2015-08-29 11:36:18 +03:00
gardient
616e32654c Added version checking 2015-08-29 11:35:00 +03:00
9 changed files with 152 additions and 32 deletions

View File

@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<configuration> <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> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup> </startup>
<applicationSettings>
<RedditRandomNumberGiveawayHelper.Properties.Settings>
<setting name="Version" serializeAs="String">
<value>V0.2.0</value>
</setting>
</RedditRandomNumberGiveawayHelper.Properties.Settings>
</applicationSettings>
</configuration> </configuration>

View File

@@ -35,13 +35,17 @@
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label(); 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(); ((System.ComponentModel.ISupportInitialize)(this.randomMax)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// label1 // label1
// //
this.label1.AutoSize = true; 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.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 13); this.label1.Size = new System.Drawing.Size(100, 13);
this.label1.TabIndex = 0; this.label1.TabIndex = 0;
@@ -49,14 +53,14 @@
// //
// textBox1 // 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.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(463, 20); this.textBox1.Size = new System.Drawing.Size(463, 20);
this.textBox1.TabIndex = 1; this.textBox1.TabIndex = 1;
// //
// randomMax // 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[] { this.randomMax.Maximum = new decimal(new int[] {
100000, 100000,
0, 0,
@@ -79,7 +83,7 @@
// label2 // label2
// //
this.label2.AutoSize = true; 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.Name = "label2";
this.label2.Size = new System.Drawing.Size(57, 13); this.label2.Size = new System.Drawing.Size(57, 13);
this.label2.TabIndex = 3; this.label2.TabIndex = 3;
@@ -87,7 +91,7 @@
// //
// button1 // 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.Name = "button1";
this.button1.Size = new System.Drawing.Size(342, 23); this.button1.Size = new System.Drawing.Size(342, 23);
this.button1.TabIndex = 4; this.button1.TabIndex = 4;
@@ -97,7 +101,7 @@
// //
// textBox2 // 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.Multiline = true;
this.textBox2.Name = "textBox2"; this.textBox2.Name = "textBox2";
this.textBox2.ReadOnly = true; this.textBox2.ReadOnly = true;
@@ -107,17 +111,42 @@
// label3 // label3
// //
this.label3.AutoSize = true; 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.Name = "label3";
this.label3.Size = new System.Drawing.Size(37, 13); this.label3.Size = new System.Drawing.Size(37, 13);
this.label3.TabIndex = 6; this.label3.TabIndex = 6;
this.label3.Text = "Result"; 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 // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 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.label3);
this.Controls.Add(this.textBox2); this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
@@ -125,10 +154,14 @@
this.Controls.Add(this.randomMax); this.Controls.Add(this.randomMax);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.menuStrip1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MainMenuStrip = this.menuStrip1;
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "Reddit random giveaway helper"; this.Text = "Reddit random giveaway helper";
((System.ComponentModel.ISupportInitialize)(this.randomMax)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.randomMax)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@@ -143,6 +176,9 @@
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label3; 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.Net;
using System.IO; using System.IO;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Octokit;
namespace RedditRandomNumberGiveawayHelper namespace RedditRandomNumberGiveawayHelper
{ {
@@ -119,5 +120,34 @@ namespace RedditRandomNumberGiveawayHelper
diff 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"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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> </root>

View File

@@ -1,30 +1,35 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // 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 // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace RedditRandomNumberGiveawayHelper.Properties namespace RedditRandomNumberGiveawayHelper.Properties {
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default public static Settings Default {
{ get {
get
{
return defaultInstance; 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'?> <?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="RedditRandomNumberGiveawayHelper.Properties" GeneratedClassName="Settings">
<Profiles> <Profiles />
<Profile Name="(Default)" /> <Settings>
</Profiles> <Setting Name="Version" Type="System.String" Scope="Application">
<Settings /> <Value Profile="(Default)">V0.2.0</Value>
</Setting>
</Settings>
</SettingsFile> </SettingsFile>

View File

@@ -34,6 +34,10 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Net.Http" /> <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" />
<Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System.IO" /> <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" /> <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"> <Code xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Type="Fragment" Language="cs"><![CDATA[
<![CDATA[
var config = XElement.Load(Config.ItemSpec).Elements("Costura").FirstOrDefault(); var config = XElement.Load(Config.ItemSpec).Elements("Costura").FirstOrDefault();
if (config == null) return true; if (config == null) return true;
@@ -129,8 +132,8 @@ var filesToCleanup = Files.Select(f => f.ItemSpec).Where(f => !excludedAssemblie
foreach (var item in filesToCleanup) foreach (var item in filesToCleanup)
File.Delete(item); File.Delete(item);
]]> ]]></Code>
</Code></Task> </Task>
</UsingTask> </UsingTask>
<Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild;NonWinFodyTarget"> <Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild;NonWinFodyTarget">
<CosturaCleanup Config="FodyWeavers.xml" Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" /> <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> <packages>
<package id="Costura.Fody" version="1.3.3.0" targetFramework="net451" developmentDependency="true" /> <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="Fody" version="1.28.3" targetFramework="net451" developmentDependency="true" />
<package id="Octokit" version="0.14.0" targetFramework="net451" />
</packages> </packages>