File size: 4,329 Bytes
e26fba6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using BlueTube.Viewer.Properties;
using System.Collections.Specialized;
using System.Reflection;
using System.IO;
using System.Windows.Forms;
using Ionic.Zip;
using System.Diagnostics;
namespace BlueTube.Viewer
{
public class UpdaterService
{
static UpdaterService()
{
}
public Version GetLatestAppVersion()
{
try
{
string result;
if (GetResource(UrlConstants.AppVersionCheckUrl, out result))
{
var version = new Version(result);
return version;
}
}
catch { }
return Constants.AppVersion;
}
public bool DownloadAppUpdate()
{
var file = Path.Combine(Application.StartupPath, "_app.zip");
if (File.Exists(file))
File.Delete(file);
try
{
var version = GetLatestAppVersion();
if (version > Constants.AppVersion)
{
if (Download(UrlConstants.AppDownloadUrl, file))
{
using (ZipFile zip1 = ZipFile.Read(file))
{
if (Directory.Exists(Constants.UpdaterFolder))
Directory.Delete(Constants.UpdaterFolder, true);
Directory.CreateDirectory(Constants.UpdaterFolder);
zip1.ExtractAll(Constants.UpdaterFolder, ExtractExistingFileAction.OverwriteSilently);
var path = Path.Combine(Constants.UpdaterFolder, Constants.AppExecutableName);
return File.Exists(path) && Constants.AppVersion < AssemblyName.GetAssemblyName(path).Version;
}
}
}
}
catch { }
finally
{
try
{
if (File.Exists(file))
File.Delete(file);
}
catch { }
}
return false;
}
public bool ExecuteUpdater()
{
try
{
var path = Path.Combine(Constants.UpdaterFolder, Constants.AppExecutableName);
if(File.Exists(path) && Constants.AppVersion < AssemblyName.GetAssemblyName(path).Version)
{
var process = Process.Start(Constants.UpdaterProgram);
return true;
}
}
catch { }
return false;
}
private bool Download(string url, string filePath)
{
using (var client = new WebClient())
{
try
{
url = url + "?uid=" + Constants.UniqueId.ToString();
client.DownloadFile(url, filePath);
}
catch { return false; }
}
return true;
}
private bool PostResource(string url, NameValueCollection data, out string result)
{
result = null;
try
{
using (var client = new WebClient())
{
data.Add("uid", Constants.UniqueId.ToString());
byte[] responsebytes = client.UploadValues(url, "POST", data);
result = Encoding.UTF8.GetString(responsebytes);
}
}
catch { return false; }
return true;
}
private bool GetResource(string url, out string result)
{
result = null;
try
{
url = url + "?uid=" + Constants.UniqueId.ToString();
using (var client = new WebClient())
{
result= client.DownloadString(url);
}
}
catch { return false; }
return true;
}
}
}
|