private void DownloadAndUpdate(string url)
{
UpdateStatus("downloading new program version", 0);
var wc = new WebClient();
wc.Proxy = null;
var address = new Uri(UpdateChecker.UpdateCheckHost + url);
wc.DownloadProgressChanged += (sender, args) => BeginInvoke((Action)delegate {
UpdateStatus(string.Format("downloading, {0}%", args.ProgressPercentage * 95 / 100), args.ProgressPercentage * 95 / 100);
});
wc.DownloadDataCompleted += (sender, args) => {
UpdateStatus("download complete, running installer", 100);
string appPath = Path.GetTempPath();
string dest = Path.Combine(appPath, "CNCMaps_update");
int suffixNr = 0;
while (File.Exists(dest + (suffixNr > 0 ? suffixNr.ToString() : "") + ".exe"))
suffixNr++;
dest += (suffixNr > 0 ? suffixNr.ToString() : "") + ".exe";
File.WriteAllBytes(dest, args.Result);
// invoke
var psi = new ProcessStartInfo(dest);
psi.Arguments = "/Q";
Process.Start(psi);
Close();
};
// trigger it all
wc.DownloadDataAsync(address);
}