Inproved code quality a bit
This commit is contained in:
parent
0dccd546ee
commit
51e8706bee
|
@ -41,6 +41,5 @@ namespace UpTool2
|
||||||
private void progressChanged(object sender, DownloadProgressChangedEventArgs e) => progressBar.Value = e.ProgressPercentage;
|
private void progressChanged(object sender, DownloadProgressChangedEventArgs e) => progressBar.Value = e.ProgressPercentage;
|
||||||
|
|
||||||
private void DownloadDialog_FormClosing(object sender, FormClosingEventArgs e) => e.Cancel = !close;
|
private void DownloadDialog_FormClosing(object sender, FormClosingEventArgs e) => e.Cancel = !close;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,43 +13,20 @@ using System.Xml.Linq;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
namespace UpTool2
|
namespace UpTool2
|
||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
public static Form splash;
|
public static Form splash;
|
||||||
|
public static bool online;
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
splash = new Form
|
showSplash();
|
||||||
{
|
|
||||||
StartPosition = FormStartPosition.CenterScreen,
|
|
||||||
FormBorderStyle = FormBorderStyle.None,
|
|
||||||
ControlBox = false,
|
|
||||||
MaximizeBox = false,
|
|
||||||
MinimizeBox = false,
|
|
||||||
ShowIcon = false,
|
|
||||||
ShowInTaskbar = false,
|
|
||||||
Size = new Size(700, 400),
|
|
||||||
ForeColor = Color.Green,
|
|
||||||
TopMost = true
|
|
||||||
};
|
|
||||||
splash.MaximumSize = splash.Size;
|
|
||||||
splash.MinimumSize = splash.Size;
|
|
||||||
Label splashL = new Label
|
|
||||||
{
|
|
||||||
AutoSize = false,
|
|
||||||
Dock = DockStyle.Fill,
|
|
||||||
TextAlign = ContentAlignment.MiddleCenter,
|
|
||||||
Text = "Loading",
|
|
||||||
Font = new Font(FontFamily.GenericSansSerif, 40)
|
|
||||||
};
|
|
||||||
splash.Controls.Add(splashL);
|
|
||||||
splash.Show();
|
|
||||||
splash.BringToFront();
|
|
||||||
string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();
|
string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();
|
||||||
string mutexId = string.Format("Global\\{{{0}}}", appGuid);
|
string mutexId = string.Format("Global\\{{{0}}}", appGuid);
|
||||||
bool createdNew;
|
bool createdNew;
|
||||||
|
@ -80,49 +57,10 @@ namespace UpTool2
|
||||||
if (!Directory.Exists(dir + @"\Apps"))
|
if (!Directory.Exists(dir + @"\Apps"))
|
||||||
Directory.CreateDirectory(dir + @"\Apps");
|
Directory.CreateDirectory(dir + @"\Apps");
|
||||||
string xml = dir + @"\info.xml";
|
string xml = dir + @"\info.xml";
|
||||||
|
fixXML(xml);
|
||||||
string metaXml = "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Meta.xml";
|
string metaXml = "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Meta.xml";
|
||||||
if ((!File.Exists(xml)) || XDocument.Load(xml).Element("meta") == null)
|
|
||||||
new XElement("meta", new XElement("Version", 0), new XElement("Repos", new XElement("Repo", new XElement("Name", "UpTool2 official Repo"), new XElement("Link", "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml"))), new XElement("LocalRepo")).Save(xml);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
XDocument x = XDocument.Load(xml);
|
|
||||||
XElement meta = x.Element("meta");
|
|
||||||
if (XDocument.Load(xml).Element("meta").Element("Repos") == null || XDocument.Load(xml).Element("meta").Element("Repos").Elements("Repo").Count() == 0)
|
|
||||||
{
|
|
||||||
meta.Add(new XElement("Repos", new XElement("Repo", new XElement("Name", "UpTool2 official Repo"), new XElement("Link", "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml"))));
|
|
||||||
meta.Add(new XElement("LocalRepo"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
XElement repos = meta.Element("Repos");
|
|
||||||
IEnumerable<XElement> reposa = repos.Elements("Repo");
|
|
||||||
reposa.Select(s => s.Element("Link")).Where(s => s.Value == "https://github.com/CreepyCrafter24/UpTool2/releases/download/Repo/Repo.xml").ToList().ForEach(s => s.Value = "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml");
|
|
||||||
}
|
|
||||||
x.Save(xml);
|
|
||||||
}
|
|
||||||
online = Ping(metaXml);
|
online = Ping(metaXml);
|
||||||
if (online)
|
if (!online || updateCheck(dir, xml, metaXml))
|
||||||
{
|
|
||||||
XElement meta = XDocument.Load(metaXml).Element("meta");
|
|
||||||
int version = int.Parse(meta.Element("Version").Value);
|
|
||||||
if (int.Parse(XDocument.Load(xml).Element("meta").Element("Version").Value) < version)
|
|
||||||
{
|
|
||||||
if (new DownloadDialog(meta.Element("File").Value, dir + @"\update.exe").ShowDialog() != DialogResult.OK)
|
|
||||||
throw new Exception("Failed to update");
|
|
||||||
using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider())
|
|
||||||
{
|
|
||||||
string pkghash = BitConverter.ToString(sha256.ComputeHash(File.ReadAllBytes(dir + @"\update.exe"))).Replace("-", string.Empty).ToUpper();
|
|
||||||
if (pkghash != meta.Element("Hash").Value.ToUpper())
|
|
||||||
throw new Exception("The hash is not equal to the one stored in the repo:\r\nPackage: " + pkghash + "\r\nOnline: " + meta.Element("Hash").Value.ToUpper());
|
|
||||||
}
|
|
||||||
new XElement("meta", new XElement("Version", version)).Save(xml);
|
|
||||||
splash.Hide();
|
|
||||||
Process.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C timeout /t 2 & copy /b/v/y \"" + dir + @"\update.exe" + "\" \"" + Application.ExecutablePath + "\" & \"" + Application.ExecutablePath + "\"", CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden });
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Application.Run(new MainForm());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Application.Run(new MainForm());
|
Application.Run(new MainForm());
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
}
|
}
|
||||||
|
@ -139,6 +77,88 @@ namespace UpTool2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void showSplash()
|
||||||
|
{
|
||||||
|
splash = new Form
|
||||||
|
{
|
||||||
|
StartPosition = FormStartPosition.CenterScreen,
|
||||||
|
FormBorderStyle = FormBorderStyle.None,
|
||||||
|
ControlBox = false,
|
||||||
|
MaximizeBox = false,
|
||||||
|
MinimizeBox = false,
|
||||||
|
ShowIcon = false,
|
||||||
|
ShowInTaskbar = false,
|
||||||
|
Size = new Size(700, 400),
|
||||||
|
ForeColor = Color.Green,
|
||||||
|
TopMost = true
|
||||||
|
};
|
||||||
|
splash.MaximumSize = splash.Size;
|
||||||
|
splash.MinimumSize = splash.Size;
|
||||||
|
Label splashL = new Label
|
||||||
|
{
|
||||||
|
AutoSize = false,
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Text = "Loading",
|
||||||
|
Font = new Font(FontFamily.GenericSansSerif, 40)
|
||||||
|
};
|
||||||
|
splash.Controls.Add(splashL);
|
||||||
|
splash.Show();
|
||||||
|
splash.BringToFront();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void fixXML(string xml)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ((!File.Exists(xml)) || XDocument.Load(xml).Element("meta") == null)
|
||||||
|
new XElement("meta", new XElement("Version", 0), new XElement("Repos", new XElement("Repo", new XElement("Name", "UpTool2 official Repo"), new XElement("Link", "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml"))), new XElement("LocalRepo")).Save(xml);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XDocument x = XDocument.Load(xml);
|
||||||
|
XElement meta = x.Element("meta");
|
||||||
|
if (XDocument.Load(xml).Element("meta").Element("Repos") == null || XDocument.Load(xml).Element("meta").Element("Repos").Elements("Repo").Count() == 0)
|
||||||
|
{
|
||||||
|
meta.Add(new XElement("Repos", new XElement("Repo", new XElement("Name", "UpTool2 official Repo"), new XElement("Link", "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml"))));
|
||||||
|
meta.Add(new XElement("LocalRepo"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XElement repos = meta.Element("Repos");
|
||||||
|
IEnumerable<XElement> reposa = repos.Elements("Repo");
|
||||||
|
reposa.Select(s => s.Element("Link")).Where(s => s.Value == "https://github.com/CreepyCrafter24/UpTool2/releases/download/Repo/Repo.xml").ToList().ForEach(s => s.Value = "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml");
|
||||||
|
}
|
||||||
|
x.Save(xml);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (XmlException)
|
||||||
|
{
|
||||||
|
new XElement("meta", new XElement("Version", 0), new XElement("Repos", new XElement("Repo", new XElement("Name", "UpTool2 official Repo"), new XElement("Link", "https://raw.githubusercontent.com/CreepyCrafter24/UpTool2/master/Repo.xml"))), new XElement("LocalRepo")).Save(xml);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool updateCheck(string dir, string xml, string metaXml)
|
||||||
|
{
|
||||||
|
XElement meta = XDocument.Load(metaXml).Element("meta");
|
||||||
|
int version = int.Parse(meta.Element("Version").Value);
|
||||||
|
if (int.Parse(XDocument.Load(xml).Element("meta").Element("Version").Value) < version)
|
||||||
|
{
|
||||||
|
if (new DownloadDialog(meta.Element("File").Value, dir + @"\update.exe").ShowDialog() != DialogResult.OK)
|
||||||
|
throw new Exception("Failed to update");
|
||||||
|
using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider())
|
||||||
|
{
|
||||||
|
string pkghash = BitConverter.ToString(sha256.ComputeHash(File.ReadAllBytes(dir + @"\update.exe"))).Replace("-", string.Empty).ToUpper();
|
||||||
|
if (pkghash != meta.Element("Hash").Value.ToUpper())
|
||||||
|
throw new Exception("The hash is not equal to the one stored in the repo:\r\nPackage: " + pkghash + "\r\nOnline: " + meta.Element("Hash").Value.ToUpper());
|
||||||
|
}
|
||||||
|
new XElement("meta", new XElement("Version", version)).Save(xml);
|
||||||
|
splash.Hide();
|
||||||
|
Process.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C timeout /t 2 & copy /b/v/y \"" + dir + @"\update.exe" + "\" \"" + Application.ExecutablePath + "\" & \"" + Application.ExecutablePath + "\"", CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static bool Ping(string url)
|
public static bool Ping(string url)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -158,6 +178,5 @@ namespace UpTool2
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static bool online;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue
Block a user