AVS/Updater.cs

89 lines
3.3 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AVS
{
class Updater
{
public string SVNversion;
public string Softwareversion;
SoftwareVersionUtility SoftwareVersionUtility = new SoftwareVersionUtility();
public async Task CheckVersionAsync()
{
// Read version from SVN
SVNversion = await SoftwareVersionUtility.CheckVersion();
// Assembly version in properties
Softwareversion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
// If versions are different, trigger the update
if (SVNversion != Softwareversion)
{
DialogResult dialogResult = MessageBox.Show("A new version is available. Do you want to update now?",
"Update Available", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialogResult == DialogResult.Yes)
{
// Start the update process
await StartUpdateProcessAsync();
}
}
}
public async Task StartUpdateProcessAsync()
{
try
{
string updaterPath = @"\\FileServer\eData\AVS\AVSUpdater.exe";
// Copy the updater executable to a temporary location
//if (!File.Exists(updaterPath))
//{
// using (Stream resourceStream = Assembly.GetExecutingAssembly()
// .GetManifestResourceStream("AVS.Resources.AVSUpdater.exe"))
// {
// if (resourceStream != null)
// {
// using (FileStream fileStream = new FileStream(updaterPath, FileMode.Create, FileAccess.Write))
// {
// await resourceStream.CopyToAsync(fileStream);
// }
// }
// else
// {
// MessageBox.Show("Updater resource not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
// return;
// }
// }
//}
//string sourcePath = @"\\FileServer\eData\AVS";
//string destinationPath = @"C:\Users\Public\Documents\AVS";
// Start the updater process
ProcessStartInfo processStartInfo = new ProcessStartInfo
{
FileName = updaterPath,
//Arguments = $"\"{sourcePath}\" \"{destinationPath}\"",
UseShellExecute = false,
CreateNoWindow = true,
};
Process.Start(processStartInfo);
// Close the current application
await Task.Delay(3000); // Delay to allow the updater to initialize
Environment.Exit(0);
}
catch (Exception ex)
{
MessageBox.Show($"Failed to start the update process: {ex.Message}", "Update Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}