Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71fbd6ee80 | ||
|
|
7d236ba9b0 |
+1
-1
@@ -1 +1 @@
|
|||||||
1.0.15
|
1.0.17
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{F3B89316-C38C-4CE6-9D88-0B1373CFBA1A}</ProjectGuid>
|
<ProjectGuid>{F3B89316-C38C-4CE6-9D88-0B1373CFBA1A}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>JiraTimeBotForm</RootNamespace>
|
<RootNamespace>JiraTimeBot</RootNamespace>
|
||||||
<AssemblyName>JiraTimeBotForm</AssemblyName>
|
<AssemblyName>JiraTimeBot</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
@@ -61,6 +61,7 @@
|
|||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.DirectoryServices" />
|
<Reference Include="System.DirectoryServices" />
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
|
<Reference Include="System.IO.Compression.FileSystem" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="System.Security" />
|
<Reference Include="System.Security" />
|
||||||
<Reference Include="System.ServiceModel" />
|
<Reference Include="System.ServiceModel" />
|
||||||
@@ -131,6 +132,7 @@
|
|||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
<EmbeddedResource Include="UI\frmSettings.resx">
|
<EmbeddedResource Include="UI\frmSettings.resx">
|
||||||
<DependentUpon>frmSettings.cs</DependentUpon>
|
<DependentUpon>frmSettings.cs</DependentUpon>
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ using System.Runtime.InteropServices;
|
|||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.15")]
|
[assembly: AssemblyVersion("1.0.17")]
|
||||||
[assembly: AssemblyFileVersion("1.0.15")]
|
[assembly: AssemblyFileVersion("1.0.17")]
|
||||||
[assembly: AssemblyInformationalVersion("1.0.15")]
|
[assembly: AssemblyInformationalVersion("1.0.17")]
|
||||||
|
|||||||
+13
-21
@@ -1,4 +1,4 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Runtime Version:4.0.30319.42000
|
||||||
@@ -8,8 +8,8 @@
|
|||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace JiraTimeBotForm.Properties
|
namespace JiraTimeBot.Properties {
|
||||||
{
|
using System;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -19,32 +19,27 @@ namespace JiraTimeBotForm.Properties
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources
|
internal class Resources {
|
||||||
{
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
internal Resources()
|
internal Resources() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
{
|
get {
|
||||||
get
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
{
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JiraTimeBot.Properties.Resources", typeof(Resources).Assembly);
|
||||||
if ((resourceMan == null))
|
|
||||||
{
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JiraTimeBotForm.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
resourceMan = temp;
|
||||||
}
|
}
|
||||||
return resourceMan;
|
return resourceMan;
|
||||||
@@ -56,14 +51,11 @@ namespace JiraTimeBotForm.Properties
|
|||||||
/// resource lookups using this strongly typed resource class.
|
/// resource lookups using this strongly typed resource class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Globalization.CultureInfo Culture
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
{
|
get {
|
||||||
get
|
|
||||||
{
|
|
||||||
return resourceCulture;
|
return resourceCulture;
|
||||||
}
|
}
|
||||||
set
|
set {
|
||||||
{
|
|
||||||
resourceCulture = value;
|
resourceCulture = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-10
@@ -1,4 +1,4 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Runtime Version:4.0.30319.42000
|
||||||
@@ -8,21 +8,17 @@
|
|||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace JiraTimeBotForm.Properties
|
namespace JiraTimeBot.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", "15.9.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1
-1
@@ -114,7 +114,7 @@
|
|||||||
//
|
//
|
||||||
// tmrUpdate
|
// tmrUpdate
|
||||||
//
|
//
|
||||||
this.tmrUpdate.Interval = 1000;
|
this.tmrUpdate.Interval = 10000;
|
||||||
this.tmrUpdate.Tick += new System.EventHandler(this.tmrUpdate_Tick);
|
this.tmrUpdate.Tick += new System.EventHandler(this.tmrUpdate_Tick);
|
||||||
//
|
//
|
||||||
// frmMain
|
// frmMain
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.IO.Compression;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
@@ -189,23 +190,86 @@ namespace JiraTimeBotForm.UI
|
|||||||
|
|
||||||
private void tmrUpdate_Tick(object sender, EventArgs e)
|
private void tmrUpdate_Tick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
tmrUpdate.Interval = 8 * 60 * 60 * 1000;
|
try
|
||||||
|
|
||||||
var checker = new UpdateChecker();
|
|
||||||
var release = checker.GetRelease();
|
|
||||||
if (release == null)
|
|
||||||
{
|
{
|
||||||
return;
|
tmrUpdate.Interval = 8 * 60 * 60 * 1000;
|
||||||
|
|
||||||
|
var checker = new UpdateChecker();
|
||||||
|
var release = checker.GetRelease();
|
||||||
|
if (release == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var gitVersionStr = checker.GetLatestVersion(release);
|
||||||
|
var gitVersion = new Version(gitVersionStr);
|
||||||
|
var appVersion = new Version(Application.ProductVersion);
|
||||||
|
|
||||||
|
if (gitVersion > appVersion)
|
||||||
|
{
|
||||||
|
var downloadUrl = checker.GetDownloadUrl(release);
|
||||||
|
_log.Info($"Доступна новая версия: {gitVersion} {downloadUrl}");
|
||||||
|
|
||||||
|
var success = checker.DownloadFile(downloadUrl);
|
||||||
|
if (!success)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = InstallUpdate(gitVersion);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//если обновились - отключаем до рестарта
|
||||||
|
tmrUpdate.Enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
var gitVersionStr = checker.GetLatestVersion(release);
|
|
||||||
var gitVersion = new Version(gitVersionStr);
|
|
||||||
var appVersion = new Version(Application.ProductVersion);
|
|
||||||
|
|
||||||
if (gitVersion > appVersion)
|
|
||||||
{
|
{
|
||||||
var downloadUrl = checker.GetDownloadUrl(release);
|
//в процессе обновления ни при каком раскладе мы не должны уложить бота.
|
||||||
_log.Info($"Доступна новая версия: {gitVersion} {downloadUrl}");
|
_log.Error($"Фатальная ошибка в процессе обновления: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool InstallUpdate(Version gitVersion)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_log.Info($"Устанавливаю обновление до версии {gitVersion}.");
|
||||||
|
//Rename he executing file
|
||||||
|
System.IO.FileInfo appFile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||||
|
var bkpDir = Path.Combine(appFile.DirectoryName, "bkp");
|
||||||
|
if (!Directory.Exists(bkpDir))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(bkpDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (ZipArchive archive = ZipFile.OpenRead(Path.Combine(appFile.DirectoryName, "update.zip")))
|
||||||
|
{
|
||||||
|
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||||
|
{
|
||||||
|
var zipEntryPath = Path.Combine(appFile.DirectoryName, entry.FullName);
|
||||||
|
if (File.Exists(zipEntryPath))
|
||||||
|
{
|
||||||
|
System.IO.FileInfo zipEntryFile = new System.IO.FileInfo(zipEntryPath);
|
||||||
|
if (File.Exists(bkpDir + "\\" + zipEntryFile.Name))
|
||||||
|
{
|
||||||
|
File.Delete(bkpDir + "\\" + zipEntryFile.Name);
|
||||||
|
}
|
||||||
|
System.IO.File.Move(zipEntryFile.FullName, bkpDir + "\\" + zipEntryFile.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
entry.ExtractToFile(zipEntryPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_log.Info("Обновление установлено. Перезапустите программу для применения изменений.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
_log.Error($"Что-то пошло не так при обновлении.");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,12 +38,22 @@ namespace JiraTimeBotForm.Update
|
|||||||
return release;
|
return release;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DownloadFile(string url)
|
public bool DownloadFile(string url)
|
||||||
{
|
{
|
||||||
using (var client = new WebClient())
|
try
|
||||||
{
|
{
|
||||||
client.Headers.Add("User-Agent", "Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0");
|
|
||||||
client.DownloadFile(url, "update.zip");
|
using (var client = new WebClient())
|
||||||
|
{
|
||||||
|
client.Headers.Add("User-Agent",
|
||||||
|
"Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0");
|
||||||
|
client.DownloadFile(url, "update.zip");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user