89 lines
3.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |