Files
PCK-Studio/nobleUpdater/FormMain.cs
Felix Miller b99d23fa81 6.1
2021-10-07 10:09:15 -04:00

181 lines
4.4 KiB
C#

using System;
using System.Xml;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Net;
using System.Threading;
using System.Windows.Forms;
namespace nobleUpdater
{
public partial class FormMain : Form
{
public FormMain()
{
this.InitializeComponent();
}
private void updateTool()
{
try
{
if (!Directory.Exists(this.appData + "backup\\"))
{
Directory.CreateDirectory(this.appData + "backup\\");
}
if (File.Exists(this.appData + "backup\\" + Path.GetFileName(this.localFile)))
{
File.Delete(this.appData + "backup\\" + Path.GetFileName(this.localFile));
}
try
{
File.Copy(this.localFile, this.appData + "backup\\" + Path.GetFileName(this.localFile));
}
catch (Exception)
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
Application.Exit();
}
using (WebClient webClient = new WebClient())
{
webClient.DownloadFileCompleted += this.Completed;
webClient.DownloadProgressChanged += this.ProgressChanged;
try
{
webClient.DownloadFileAsync(new Uri(this.serverFile), this.localFile);
}
catch (Exception ex2)
{
MessageBox.Show(ex2.ToString());
Application.Exit();
}
}
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
this.progressBarUpdate.Value = e.ProgressPercentage;
this.labelProgress.Text = string.Format("{0} MB's / {1} MB's", ((double)e.BytesReceived / 1024.0 / 1024.0).ToString("0.00"), ((double)e.TotalBytesToReceive / 1024.0 / 1024.0).ToString("0.00"));
}
private void Completed(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
{
MessageBox.Show("Download has been canceled.");
}
else
{
this.progressBarUpdate.Maximum = this.progressBarUpdate.Value;
this.labelProgress.Text = "Download Complete";
}
new Process
{
StartInfo =
{
FileName = this.localFile
}
}.Start();
Application.Exit();
}
private string serverFile = "http://www.pckstudio.xyz/programs/PCKSTUDIO_Update.exe";
private string ServerXML = "http://www.pckstudio.xyz/studio/PCK/update.xml";
private string appData = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\PCK Studio\\";
private string localFile = Environment.CurrentDirectory + "\\PCK Studio.exe";
private Thread thread;
private WebClient webClient;
private void FormMain_Load(object sender, EventArgs e)
{
Console.WriteLine(new WebClient().DownloadString(new Uri("http://www.pckstudio.xyz/studio/PCK/update.xml")));
downloadUpdate();
}
public void downloadUpdate()
{
try
{
foreach (Process proc in Process.GetProcessesByName("PCK Studio"))
{
proc.Kill();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
catch { }
string TryXMLDl = new WebClient().DownloadString(ServerXML);
string[] raw = TryXMLDl.Split(new[] { "\n", "\r\n" }, StringSplitOptions.None);
XmlTextReader reader = new XmlTextReader(ServerXML);
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name + " || " + reader.LineNumber);
Console.WriteLine(">");
if (reader.Name == "FileUpdateTask")
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(Environment.CurrentDirectory + raw[reader.LineNumber - 1].Replace(" <FileUpdateTask localPath=\"", "").Replace("\">", "").Replace("/", "\\")));
string url = ServerXML.Replace(".xml", "") + raw[reader.LineNumber - 1].Replace(" <FileUpdateTask localPath=\"", "").Replace("\">", "");
new WebClient().DownloadFile(url, Environment.CurrentDirectory + raw[reader.LineNumber - 1].Replace(" <FileUpdateTask localPath=\"", "").Replace("\">", "").Replace("/", "\\"));
}
catch { }
}
break;
}
}
new Process
{
StartInfo =
{
FileName = this.localFile
}
}.Start();
Application.Exit();
}
public void mainus()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int num = 0;
for (; ; )
{
if (num % 100000 == 0)
{
stopwatch.Stop();
if (stopwatch.ElapsedMilliseconds > 5000L)
{
break;
}
stopwatch.Start();
}
num++;
}
this.updateTool();
}
private void progressBarUpdate_Click(object sender, EventArgs e)
{
}
}
}