private void checkForUpdates(bool silentCheck = false)
{
bool updated = false;
bool newToolVersionAvailable = false;
try
{
string remoteUri = "https://github.com/cadon/ARKStatsExtractor/raw/master/ARKBreedingStats/";
// Create a new WebClient instance.
System.Net.WebClient myWebClient = new System.Net.WebClient();
// first number is stat-version, second is multiplier-version
string[] remoteVers = myWebClient.DownloadString(remoteUri + "ver.txt").Split(',');
// update last updateCheck
Properties.Settings.Default.lastUpdateCheck = DateTime.Now;
if (remoteVers.Length != 2)
{
if (MessageBox.Show("Error while checking for new version, bad remote-format. Try checking for an updated version of this tool. Do you want to visit the homepage of the tool?", "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
System.Diagnostics.Process.Start("https://github.com/cadon/ARKStatsExtractor/releases/latest");
return;
}
// check if a new version of the tool is available
Version localVersion, remoteVersion;
try
{
localVersion = new Version(Application.ProductVersion);
remoteVersion = new Version(remoteVers[1].Trim());
}
catch
{
if (MessageBox.Show("Error while checking for new tool-version, bad remote-format. Try checking for an updated version of this tool. Do you want to visit the homepage of the tool?", "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
System.Diagnostics.Process.Start("https://github.com/cadon/ARKStatsExtractor/releases/latest");
return;
}
if (localVersion.CompareTo(remoteVersion) < 0)
{
if (MessageBox.Show("A new version of ARK Smart Breeding is available. Do you want to visit the homepage to check it out?", "New version available", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
System.Diagnostics.Process.Start("https://github.com/cadon/ARKStatsExtractor/releases/latest");
return;
}
newToolVersionAvailable = true;
}
// check if values.json can be updated
int remoteFileVer;
string filename = "values.json";
remoteFileVer = 0;
if (Int32.TryParse(remoteVers[0], out remoteFileVer) && Values.V.version < remoteFileVer)
{
// backup the current version (to safe user added custom commands)
if (MessageBox.Show("There is a new version of the values-file \"" + filename + "\", do you want to make a backup of the current file?\nThis is recommended if you have changed the file manually and want to keep these changes.", "Backup old file?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
System.IO.File.Copy(filename, filename + "_backup_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".json");
// Download the Web resource and save it into the current filesystem folder.
myWebClient.DownloadFile(remoteUri + filename, filename);
updated = true;
}
}
catch (System.Net.WebException ex)
{
if (!silentCheck)
MessageBox.Show("Error while checking for new version or downloading it:\n\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (updated)
{
if (Values.V.loadValues())
{
applyMultipliersToValues();
updateSpeciesComboboxes();
MessageBox.Show("Download and update of new creature-stats successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
toolStripStatusLabel.Text = creatureCollection.creatures.Count() + " creatures in Library. Version " + Application.ProductVersion + " / " + Values.V.version.ToString();
}
else
MessageBox.Show("Download of new stat successful, but files couldn't be loaded.\nTry again later, revert the backuped files (..._backup_[timestamp].json) or redownload the tool.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (!silentCheck)
{
MessageBox.Show("You already have the newest version of the" + (!newToolVersionAvailable ? " tool and the" : "") + " values-file.\n\nIf your stats are outdated and no new version is available, we probably don't have the new ones either.", "No new Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}