83 lines
2.7 KiB
C#
83 lines
2.7 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Net;
|
|
using System.Net.Cache;
|
|
using System.Reflection;
|
|
using System.Windows.Forms;
|
|
|
|
|
|
namespace GayMaker_Studio
|
|
{
|
|
public partial class DownloadingUpdate : Form
|
|
{
|
|
public DownloadingUpdate()
|
|
{
|
|
//Bypass Windows DPI Scaling
|
|
Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void startDownload()
|
|
{
|
|
WebClient wc = new WebClient();
|
|
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
|
|
String UpdateString = wc.DownloadString("https://bitbucket.org/SilicaAndPina/gaymaker-studio/raw/master/latest.md");
|
|
String[] Data = UpdateString.Split('~');
|
|
String UpdateUrl = Data[1];
|
|
wc.Dispose();
|
|
|
|
WebClient client = new WebClient();
|
|
client.Headers.Add("pragma", "no-cache");
|
|
|
|
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
|
|
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
|
|
client.DownloadFileAsync(new Uri(UpdateUrl), "upgrade.zip");
|
|
}
|
|
|
|
private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
|
|
{
|
|
|
|
label1.Text = "Extracting...";
|
|
Application.DoEvents();
|
|
|
|
String EXEPath = Assembly.GetExecutingAssembly().Location;
|
|
|
|
File.Move(EXEPath, Path.ChangeExtension(EXEPath, ".old"));
|
|
|
|
ZipArchive archive = new ZipArchive(File.OpenRead("upgrade.zip"));
|
|
|
|
foreach (ZipArchiveEntry file in archive.Entries)
|
|
{
|
|
if (File.Exists(file.FullName))
|
|
{
|
|
File.Delete(file.FullName);
|
|
}
|
|
}
|
|
|
|
archive.Dispose();
|
|
|
|
ZipFile.ExtractToDirectory("upgrade.zip", Path.GetDirectoryName(EXEPath));
|
|
|
|
File.Delete("upgrade.zip");
|
|
|
|
Application.Restart();
|
|
|
|
}
|
|
|
|
private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
|
{
|
|
DownloadProgress.Value = e.ProgressPercentage;
|
|
label1.Text = "Downloading: " + e.ProgressPercentage + "%";
|
|
}
|
|
|
|
|
|
private void DownloadingUpdate_Load(object sender, EventArgs e)
|
|
{
|
|
startDownload();
|
|
}
|
|
}
|
|
}
|