diff --git a/ModVersionChecker/Main.cs b/ModVersionChecker/Main.cs
index b78b93d..ea304b6 100644
--- a/ModVersionChecker/Main.cs
+++ b/ModVersionChecker/Main.cs
@@ -38,6 +38,10 @@ namespace ModVersionChecker
{
Console.WriteLine("Application is shutting down...");
});
+ lifetime.ApplicationStopping.Register(() =>
+ {
+ Console.WriteLine("Application is shutting down...");
+ });
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
@@ -78,7 +82,13 @@ namespace ModVersionChecker
var contextMenu = new ContextMenuStrip();
contextMenu.Items.Add("Configure", null, openFormHandler);
- contextMenu.Items.Add("Exit", null, (s, e) => Application.Exit());
+ contextMenu.Items.Add("Exit", null, (s, e) =>
+ {
+ notifyIcon.Visible = false;
+ Application.Exit();
+ lifetime.StopApplication();
+ //host.StopAsync().GetAwaiter().GetResult();
+ });
notifyIcon.ContextMenuStrip = contextMenu;
notifyIcon.DoubleClick += openFormHandler;
@@ -117,23 +127,16 @@ namespace ModVersionChecker
};
}
}
-
- // Add to startup
- // AddToStartup();
+
+ host.Start();
Application.Run(); // Keep app running for tray icon
+
+ host.StopAsync().GetAwaiter().GetResult();
}
- host.RunAsync().GetAwaiter().GetResult();
- }
-
- static void AddToStartup()
- {
- using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true))
- {
- key?.SetValue("XintanalabsUpdateChecker", $"\"{Application.ExecutablePath}\"");
- }
+
}
}
diff --git a/ModVersionChecker/ModVersionChecker.csproj b/ModVersionChecker/ModVersionChecker.csproj
index 1cbc4c4..9174edd 100644
--- a/ModVersionChecker/ModVersionChecker.csproj
+++ b/ModVersionChecker/ModVersionChecker.csproj
@@ -6,6 +6,7 @@
enable
true
enable
+ Resources\MVC-Icon.ico
diff --git a/ModVersionChecker/VersionChecker.cs b/ModVersionChecker/VersionChecker.cs
index 68a1aec..514e8e4 100644
--- a/ModVersionChecker/VersionChecker.cs
+++ b/ModVersionChecker/VersionChecker.cs
@@ -1,10 +1,7 @@
using ModVersionChecker.data.model;
-using ModVersionChecker.forms;
using ModVersionChecker.managers.interfaces;
using ModVersionChecker.utils;
using NuGet.Versioning;
-using OpenQA.Selenium.BiDi.Script;
-using System.Windows.Forms;
namespace ModVersionChecker
diff --git a/ModVersionChecker/data/model/GlobalConfig.cs b/ModVersionChecker/data/model/GlobalConfig.cs
index 4267932..498bb0a 100644
--- a/ModVersionChecker/data/model/GlobalConfig.cs
+++ b/ModVersionChecker/data/model/GlobalConfig.cs
@@ -17,5 +17,8 @@ namespace ModVersionChecker.data.model
[JsonPropertyName("checkOnStartup")]
public bool CheckOnStartup { get; set; } = true;
+
+ [JsonPropertyName("runOnStartup")]
+ public bool RunOnStartup { get; set; } = false;
}
}
diff --git a/ModVersionChecker/forms/GlobalConfigForm.cs b/ModVersionChecker/forms/GlobalConfigForm.cs
index cdc2004..059856d 100644
--- a/ModVersionChecker/forms/GlobalConfigForm.cs
+++ b/ModVersionChecker/forms/GlobalConfigForm.cs
@@ -8,9 +8,9 @@ namespace ModVersionChecker.forms
private IConfigManager _configManager;
private GlobalConfig _config;
- private Label _millislabel, _checkStartupLabel;
+ private Label _millislabel, _checkStartupLabel, _runOnStartupLabel;
private TrackBar _millisField;
- private CheckBox _checkStartupField;
+ private CheckBox _checkStartupField, _runOnStartupField;
private Button _saveButton, _cancelButton;
private TableLayoutPanel _mainLayout, _configsPanel;
private FlowLayoutPanel _buttonPanel;
@@ -54,8 +54,10 @@ namespace ModVersionChecker.forms
{
_config.IntervalMinutes = _millisField.Value;
_config.CheckOnStartup = _checkStartupField.Checked;
+ _config.RunOnStartup = _runOnStartupField.Checked;
_configManager.Save(_config);
DialogResult = DialogResult.OK;
+ UpdateStartupSetting(_config.RunOnStartup);
Close();
};
_cancelButton = new Button { Text = "Cancel", AutoSize = true };
@@ -90,13 +92,17 @@ namespace ModVersionChecker.forms
_millisField.Scroll += (sender, e) => { millisValue.Text = _millisField.Value.ToString() + " minutes"; };
- _checkStartupLabel = new Label { Text = "Check on Startup:", Width = 150 };
+ _checkStartupLabel = new Label { Text = "Check on Application Start:", Width = 150 };
_checkStartupField = new CheckBox { Checked = _config.CheckOnStartup };
+ _runOnStartupLabel= new Label { Text = "Run on Windows Startup:", Width = 150 };
+ _runOnStartupField = new CheckBox { Checked = _config.RunOnStartup };
configsPanel.Controls.Add(_millislabel, 0, 0);
configsPanel.Controls.Add(millisPanel, 1, 0);
configsPanel.Controls.Add(_checkStartupLabel, 0, 1);
configsPanel.Controls.Add(_checkStartupField, 1, 1);
+ configsPanel.Controls.Add(_runOnStartupLabel, 0, 2);
+ configsPanel.Controls.Add(_runOnStartupField, 1, 2);
return configsPanel;
}
@@ -116,6 +122,20 @@ namespace ModVersionChecker.forms
return mainLayout;
}
+ private void UpdateStartupSetting(bool runOnStartup)
+ {
+ using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true))
+ {
+ if (runOnStartup)
+ {
+ key?.SetValue("XintanalabsUpdateChecker", $"\"{Application.ExecutablePath}\"");
+ }
+ else
+ {
+ key?.DeleteValue("XintanalabsUpdateChecker", false); // Remove if unchecked
+ }
+ }
+ }
// Add methods and properties for global configuration management here
}