diff --git a/ShareX.HelpersLib/ShareX.HelpersLib.csproj b/ShareX.HelpersLib/ShareX.HelpersLib.csproj
index 021c56f18..c943d42f3 100644
--- a/ShareX.HelpersLib/ShareX.HelpersLib.csproj
+++ b/ShareX.HelpersLib/ShareX.HelpersLib.csproj
@@ -399,6 +399,7 @@
MyPictureBox.cs
+
Form
diff --git a/ShareX/UpdateManager.cs b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs
similarity index 59%
rename from ShareX/UpdateManager.cs
rename to ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs
index 978fdd5be..b53caa0c4 100644
--- a/ShareX/UpdateManager.cs
+++ b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs
@@ -23,39 +23,48 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3)
-using ShareX.HelpersLib;
using System;
using System.Windows.Forms;
using Timer = System.Threading.Timer;
-namespace ShareX
+namespace ShareX.HelpersLib
{
- public class UpdateManager : IDisposable
+ public class GitHubUpdateManager : IDisposable
{
- public double UpdateCheckInterval { get; private set; } = 1; // Hour
+ public bool AutoUpdateEnabled { get; set; } // ConfigureAutoUpdate function must be called after change this
+ public TimeSpan UpdateCheckInterval { get; private set; } = TimeSpan.FromHours(1);
+ public TimeSpan UpdateReCheckInterval { get; private set; } = TimeSpan.FromHours(24); // If "No" button pressed in update message box then this interval will be used
+ public string GitHubOwner { get; set; }
+ public string GitHubRepo { get; set; }
+ public bool IsBeta { get; set; } // If current build is beta and latest stable release is same version as current build then it will be downloaded
+ public bool IsPortable { get; set; } // If current build is portable then download URL will be opened in browser instead of downloading it
+ public bool CheckPreReleaseUpdates { get; set; }
private bool firstUpdateCheck = true;
private Timer updateTimer = null;
private readonly object updateTimerLock = new object();
- public UpdateManager()
+ public GitHubUpdateManager(string owner, string repo)
{
+ GitHubOwner = owner;
+ GitHubRepo = repo;
}
- public UpdateManager(double updateCheckInterval)
+ public GitHubUpdateManager(string owner, string repo, bool beta, bool portable) : this(owner, repo)
{
- UpdateCheckInterval = updateCheckInterval;
+ IsBeta = beta;
+ IsPortable = portable;
}
public void ConfigureAutoUpdate()
{
lock (updateTimerLock)
{
- if (Program.Settings.AutoCheckUpdate && !Program.PortableApps)
+ if (AutoUpdateEnabled)
{
if (updateTimer == null)
{
- updateTimer = new Timer(state => CheckUpdate(), null, TimeSpan.Zero, TimeSpan.FromHours(UpdateCheckInterval));
+ updateTimer = new Timer(state => CheckUpdate(), null, TimeSpan.Zero, UpdateCheckInterval);
}
}
else
@@ -74,21 +83,20 @@ private void CheckUpdate()
if (UpdateMessageBox.Start(updateChecker, firstUpdateCheck) != DialogResult.Yes)
{
- TimeSpan interval = TimeSpan.FromHours(24);
- updateTimer.Change(interval, interval);
+ updateTimer.Change(UpdateReCheckInterval, UpdateReCheckInterval);
}
firstUpdateCheck = false;
}
}
- public static UpdateChecker CreateUpdateChecker()
+ public GitHubUpdateChecker CreateUpdateChecker()
{
- return new GitHubUpdateChecker("ShareX", "ShareX")
+ return new GitHubUpdateChecker(GitHubOwner, GitHubRepo)
{
- IsBeta = Program.Beta,
- IsPortable = Program.Portable,
- IncludePreRelease = Program.Settings.CheckPreReleaseUpdates,
+ IsBeta = IsBeta,
+ IsPortable = IsPortable,
+ IncludePreRelease = CheckPreReleaseUpdates,
Proxy = HelpersOptions.CurrentProxy.GetWebProxy()
};
}
diff --git a/ShareX/Forms/AboutForm.cs b/ShareX/Forms/AboutForm.cs
index 5fe2e39af..10af3314b 100644
--- a/ShareX/Forms/AboutForm.cs
+++ b/ShareX/Forms/AboutForm.cs
@@ -52,7 +52,7 @@ public AboutForm()
if (!Program.PortableApps)
{
- UpdateChecker updateChecker = UpdateManager.CreateUpdateChecker();
+ UpdateChecker updateChecker = Program.UpdateManager.CreateUpdateChecker();
uclUpdate.CheckUpdate(updateChecker);
}
else
diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs
index 1a96d5494..d80ec2bec 100644
--- a/ShareX/Forms/MainForm.cs
+++ b/ShareX/Forms/MainForm.cs
@@ -45,7 +45,6 @@ public partial class MainForm : HotkeyForm
private bool forceClose, trayMenuSaveSettings = true;
private UploadInfoManager uim;
private ToolStripDropDownItem tsmiImageFileUploaders, tsmiTrayImageFileUploaders, tsmiTextFileUploaders, tsmiTrayTextFileUploaders;
- private UpdateManager updateManager;
public MainForm()
{
@@ -180,8 +179,6 @@ private void InitializeControls()
ExportImportControl.UploadRequested += json => UploadManager.UploadText(json);
- updateManager = new UpdateManager();
-
HandleCreated += MainForm_HandleCreated;
}
@@ -670,7 +667,9 @@ private void AfterSettingsJobs()
TaskManager.RecentManager.MaxCount = Program.Settings.RecentTasksMaxCount;
#if RELEASE
- updateManager.ConfigureAutoUpdate();
+ Program.UpdateManager.AutoUpdateEnabled = Program.Settings.AutoCheckUpdate && !Program.PortableApps;
+ Program.UpdateManager.CheckPreReleaseUpdates = Program.Settings.CheckPreReleaseUpdates;
+ Program.UpdateManager.ConfigureAutoUpdate();
#endif
}
diff --git a/ShareX/Program.cs b/ShareX/Program.cs
index 9a4765d04..2542a3afe 100644
--- a/ShareX/Program.cs
+++ b/ShareX/Program.cs
@@ -92,6 +92,7 @@ public static string Title
public static Stopwatch StartTimer { get; private set; }
public static HotkeyManager HotkeyManager { get; set; }
public static WatchFolderManager WatchFolderManager { get; set; }
+ public static GitHubUpdateManager UpdateManager { get; set; }
public static CLIManager CLI { get; private set; }
private static bool restarting;
@@ -341,6 +342,8 @@ private static void Run()
HotkeySettingsResetEvent = new ManualResetEvent(false);
TaskEx.Run(LoadSettings);
+ UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Beta, Portable);
+
LanguageHelper.ChangeLanguage(Settings.Language);
DebugHelper.WriteLine("MainForm init started");
diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj
index 2f088041b..53e59a9f0 100644
--- a/ShareX/ShareX.csproj
+++ b/ShareX/ShareX.csproj
@@ -276,7 +276,6 @@
-