Add project files.
This commit is contained in:
114
GUIUpdate.cs
Normal file
114
GUIUpdate.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using File = System.IO.File;
|
||||
|
||||
namespace AiQ_GUI
|
||||
{
|
||||
internal class GUIUpdate
|
||||
{
|
||||
public static string GUIVerShort = "";
|
||||
|
||||
public static string FindGUIVersion()
|
||||
{
|
||||
string GUIVersion = Convert.ToString(Assembly.GetExecutingAssembly().GetName().Version);
|
||||
int dotLocation = GUIVersion.IndexOf('.'); // Find the first dot location
|
||||
|
||||
// If there is no dot in the version string, return the version as is
|
||||
if (dotLocation < 0)
|
||||
{
|
||||
return GUIVersion;
|
||||
}
|
||||
|
||||
// Check if the next character after the dot is "0"
|
||||
if (dotLocation + 1 < GUIVersion.Length && GUIVersion[dotLocation + 1] == '0')
|
||||
{
|
||||
return GUIVersion.Substring(0, dotLocation); // If it's "0", remove everything after the first dot
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise, trim the version to the second dot (if it exists)
|
||||
int secondDotLocation = GUIVersion.IndexOf('.', dotLocation + 1);
|
||||
|
||||
if (secondDotLocation >= 0)
|
||||
{
|
||||
return GUIVersion.Substring(0, secondDotLocation);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If there's no second dot, return the version up to the first dot
|
||||
return GUIVersion.Substring(0, dotLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Checks if the version in the model info spreadsheet is newer than the one installed and goes to update path if so and opens file
|
||||
// Because it has the same application name Windows treats it as an update and installs it as the same program, therefore no need for acrhive folder
|
||||
// It will install as 1 program as not to fill up the PC with lots of different apps
|
||||
public static void UpdateGUI()
|
||||
{
|
||||
if (ComapreVersions()) // Checks if the current version is older than the latest version
|
||||
{
|
||||
string GUIPath = $"{GoogleAPI.DrivePath}AiQ\\GUI's\\AiQ_Final_Test\\AiQ_GUI.application";
|
||||
|
||||
// Check if path is real
|
||||
if (!File.Exists(GUIPath))
|
||||
{
|
||||
MainForm.Instance.AddToActionsList("Error finding new app version in Google Drive.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Brings up messagebox to ask user if they want to update
|
||||
DialogResult result = MessageBox.Show(
|
||||
$"Do you want to update to version {UniversalData.LatestVersion}?",
|
||||
"Update Available",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly
|
||||
);
|
||||
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
ProcessStartInfo psi = new()
|
||||
{
|
||||
FileName = GUIPath,
|
||||
UseShellExecute = true // Lets the OS decide how to open it
|
||||
};
|
||||
|
||||
Logging.LogMessage($"Updating to {UniversalData.LatestVersion} at {GUIPath}");
|
||||
Process.Start(psi);
|
||||
Application.Exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
Logging.LogWarningMessage($"Refused Update to {UniversalData.LatestVersion} at {GUIPath}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static bool ComapreVersions()
|
||||
{
|
||||
// Handles missing dots and patch numbers
|
||||
string[] currentParts = GUIVerShort.Split('.');
|
||||
string[] latestParts = UniversalData.LatestVersion.Split('.');
|
||||
|
||||
int currentMajor = currentParts.Length > 0 && int.TryParse(currentParts[0], out int cm) ? cm : 0;
|
||||
int latestMajor = latestParts.Length > 0 && int.TryParse(latestParts[0], out int lm) ? lm : 0;
|
||||
int currentMinor = currentParts.Length > 1 && int.TryParse(currentParts[1], out int cmi) ? cmi : 0;
|
||||
int latestMinor = latestParts.Length > 1 && int.TryParse(latestParts[1], out int lmi) ? lmi : 0;
|
||||
int currentPatch = currentParts.Length > 2 && int.TryParse(currentParts[2], out int cp) ? cp : 0;
|
||||
int latestPatch = latestParts.Length > 2 && int.TryParse(latestParts[2], out int lp) ? lp : 0;
|
||||
|
||||
if (latestMajor > currentMajor)
|
||||
return true; // Newer major version
|
||||
else if (latestMajor == currentMajor)
|
||||
{
|
||||
if (latestMinor > currentMinor)
|
||||
return true; // Newer minor version
|
||||
else if (latestMinor == currentMinor)
|
||||
{
|
||||
if (latestPatch > currentPatch)
|
||||
return true; // Newer patch version
|
||||
}
|
||||
}
|
||||
return false; // There is not a newer version
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user