public void CheckVersion(bool auto = true)
{
Task.Factory.StartNew<bool?>(() =>
{
try
{
using (var Client = new WebClient())
{
byte[] dl = Client.DownloadData("http://www.binaryconstruct.com/downloads/teditversion.txt");
string vers = Encoding.Unicode.GetString(dl);
string[] verstrimmed = vers.Split('v');
if (verstrimmed.Length != 2) return null;
string[] split = verstrimmed[1].Split('.');
if (split.Length < 3) return null; // SBLogic -- accept revision part if present
int major;
int minor;
int build;
int revis = -1;
if (!int.TryParse(split[0], out major)) return null;
if (!int.TryParse(split[1], out minor)) return null;
if (!int.TryParse(split[2], out build)) return null;
if ((split.Length == 4) && (split[3].Length > 0) && (!int.TryParse(split[3], out revis))) return null;
if (major > App.Version.ProductMajorPart) return true;
if (minor > App.Version.ProductMinorPart) return true;
if (build > App.Version.ProductBuildPart) return true;
// ignore revision, build should be enough
// if ((revis != -1) && (revis > App.Version.ProductPrivatePart)) return true;
}
}
catch (Exception)
{
return null;
}
return false;
}).ContinueWith(t =>
{
bool? isoutofdate = t.Result;
if (isoutofdate == null)
{
MessageBox.Show("Unable to check version.", "Update Check Failed");
}
else if (isoutofdate == true)
{
if (MessageBox.Show("You are using an outdated version of TEdit. Do you wish to download the update?", "Update?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
try
{
Process.Start("http://www.binaryconstruct.com/downloads/");
}
catch { }
}
}
else
{
if (!auto)
MessageBox.Show("TEdit is up to date.", "Update");
}
}, TaskFactoryHelper.UiTaskScheduler);
}