154 lines
4.8 KiB
C#
154 lines
4.8 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Ultron.Update
|
|
{
|
|
public partial class UpdateForm : Form
|
|
{
|
|
public string ExecuteFile { get; set; }
|
|
|
|
public UpdateForm()
|
|
{
|
|
InitializeComponent();
|
|
|
|
string fileVersion;
|
|
if (File.Exists("uNgrok.exe"))
|
|
{
|
|
try
|
|
{
|
|
FileVersionInfo file1 = FileVersionInfo.GetVersionInfo("uNgrok.exe");
|
|
fileVersion = string.Format("{0}.{1}.{2}.{3}", file1.FileMajorPart, file1.FileMinorPart, file1.FileBuildPart, file1.FilePrivatePart);
|
|
string checkUrl = "https://blog.wixy.cn/api/release/Ultron.Ngrok/" + fileVersion;
|
|
HttpGet(checkUrl);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
fileVersion = "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
label1.Visible = false;
|
|
label2.Visible = true;
|
|
label2.Text = "未检测到uNgrok";
|
|
}
|
|
}
|
|
|
|
public UpdateForm(string[] args)
|
|
{
|
|
string[] startParams = args[0].Split(' ');
|
|
|
|
if(startParams.Length < 2)
|
|
{
|
|
MessageBox.Show("启动参数出错");
|
|
return;
|
|
}
|
|
|
|
InitializeComponent();
|
|
|
|
ExecuteFile = startParams[1];
|
|
|
|
string updateFile = Directory.GetCurrentDirectory() + @"\"+ ExecuteFile;
|
|
|
|
Thread.Sleep(800);
|
|
|
|
if (File.Exists(updateFile))
|
|
File.Delete(updateFile);
|
|
if (File.Exists(Directory.GetCurrentDirectory() + @"\ngrok_x64.exe"))
|
|
File.Delete(Directory.GetCurrentDirectory() + @"\ngrok_x64.exe");
|
|
if (File.Exists(Directory.GetCurrentDirectory() + @"\ngrok_x86.exe"))
|
|
File.Delete(Directory.GetCurrentDirectory() + @"\ngrok_x86.exe");
|
|
|
|
DownLoadFile(startParams[0], startParams[1]);
|
|
}
|
|
|
|
|
|
public void HttpGet(string url)
|
|
{
|
|
WebClient wc = new WebClient();
|
|
Uri uri = new Uri(url, UriKind.RelativeOrAbsolute);
|
|
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
|
|
wc.OpenReadAsync(uri);
|
|
}
|
|
|
|
public void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
|
|
{
|
|
StreamReader read = new StreamReader(e.Result);
|
|
string str = read.ReadToEnd();
|
|
if (str.Contains("\"code\":1"))
|
|
{
|
|
label1.Visible = false;
|
|
label2.Visible = true;
|
|
label2.Text = "未检测到新版本";
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
label2.Visible = false;
|
|
label1.Visible = true;
|
|
if (MessageBox.Show("检测到新版本,立即更新?", "版本更新", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
int verStart = str.IndexOf("\"version\":\"") + 11;
|
|
int verEnd = str.IndexOf("\",\"title\"");
|
|
string version = str.Substring(verStart, verEnd - verStart);
|
|
|
|
DownLoadFile("https://cloud-disk-1251608065.cos.ap-guangzhou.myqcloud.com/uNgrok_" + version + ".exe", "uNgrok.exe");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void DownLoadFile(string fileUrl,string fileName)
|
|
{
|
|
WebClient wc = new WebClient();
|
|
wc.DownloadProgressChanged += wc_DownloadProgressChanged;
|
|
wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
|
|
wc.DownloadFileAsync(new Uri(fileUrl), fileName);
|
|
}
|
|
|
|
private void Wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
|
{
|
|
label1.Text = "完成";
|
|
RunNewApp();
|
|
}
|
|
|
|
// int index = 0;
|
|
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
Action act = () =>
|
|
{
|
|
progressBar1.Value = e.ProgressPercentage;
|
|
label1.Text = e.ProgressPercentage + "%";
|
|
};
|
|
Invoke(act);
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
public void RunNewApp()
|
|
{
|
|
try
|
|
{
|
|
ProcessStartInfo startInfo = new ProcessStartInfo();
|
|
startInfo.FileName = "uNgrok.exe";
|
|
startInfo.WindowStyle = ProcessWindowStyle.Normal;
|
|
Process.Start(startInfo);
|
|
Application.Exit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|