using System; using System.IO; using System.Threading; using System.Windows.Forms; namespace Custom_Installer.Controls { public partial class Install : UserControl { public delegate void FileSecurityEventHandler(String SavePath); public event FileSecurityEventHandler FinishPressed; public String SavePath { get; set; } public Boolean HasDownloaded { get; set; } private Boolean IsDownloading = false; public Install() { InitializeComponent(); } private void Install_Load(Object Sender, EventArgs Arguments) { HasDownloaded = false; if (HasDownloaded) { FileInfo ExtractInfo = new FileInfo(Program.ExtractPath); if (ExtractInfo.Length != Program.Server.FileSize()) { Download(); } else { Download_Text.Text = "No Download Necessary"; Download_Progress.Value = 100; Extract(); } } else { Download(); } } private void Cancel_Click(Object Sender, EventArgs Arguments) { Boolean Answer = false; if (IsDownloading) { Answer = Program.Question("Are You Sure You Want To Close The Installer?{0}Please Remeber That Since You Are Not Done Downloading,{0}The Download Will Start Again When You Start This,{0}Where As If You Wait For Download To Finish,{0}It Will Extract Next Time You Start", Environment.NewLine); } else { Answer = Program.Question("Are You Sure You Want To Close The Installer?{0}Next Time You Start This It Will Finish Installing {1}!", Environment.NewLine, Properties.Settings.Default.Server_Name); } if (Answer) { Program.Shutdown(); } } private void Finish_Click(Object Sender, EventArgs Arguments) { FinishPressed(SavePath); } private void Download() { new Thread(() => { IsDownloading = true; Download StartDownload = new Download(); StartDownload.SavePath = Program.ExtractPath; StartDownload.Address = new Uri(Program.ExtractURL); StartDownload.Progress = Download_Progress; StartDownload.Information = Download_Text; StartDownload.StartDownload(); while (!StartDownload.IsFinished) { Thread.Sleep(1000); } IsDownloading = false; Extract(); }).Start(); } private void Extract() { new Thread(() => { Extract StartExtract = new Extract(); StartExtract.FilePath = Program.ExtractPath; StartExtract.ExtractPath = SavePath; StartExtract.Progress = Install_Progress; StartExtract.Information = Install_Text; StartExtract.StartExtract(); while (!StartExtract.IsFinished) { Thread.Sleep(1000); } Finish.BeginInvoke((Action)(() => { Finish.Enabled = true; })); }).Start(); } private void Download_Text_Click(object sender, EventArgs e) { } private void label3_Click(object sender, EventArgs e) { } } }