Example #1
0
        private void ConfirmButton_Click(object sender, RoutedEventArgs ev)
        {
            var handler = new ProgressHandler();
            var t       = new Thread(delegate()
            {
                var request  = (HttpWebRequest)WebRequest.Create("http://www.modapi.cc/app/archives/" + NewVersion + ".zip");
                var response = (HttpWebResponse)request.GetResponse();
                var s        = response.GetResponseStream();
                var buffer   = new byte[4096];
                var memory   = new MemoryStream();
                var count    = 0;
                long current = 0;
                var progress = 0f;
                handler.Task = "Download";
                while ((count = s.Read(buffer, 0, buffer.Length)) > 0)
                {
                    memory.Write(buffer, 0, count);
                    current         += count;
                    progress         = (float)(((current / (double)response.ContentLength)) * 70.0);
                    handler.Progress = progress;
                }

                memory.Position = 0;
                var zip         = ZipFile.Read(memory);
                var directory   = "./_update";
                var n           = 0;
                handler.Task    = "Extracting";
                foreach (var e in zip)
                {
                    try
                    {
                        e.Extract(directory, ExtractExistingFileAction.OverwriteSilently);
                    }
                    catch (Exception ex3)
                    {
                    }
                    n += 1;
                    handler.Progress = 70f + (n / (float)zip.Count) * 30f;
                }

                var p = new Process();
                p.StartInfo.FileName = "Updater.exe";
                p.StartInfo.Verb     = "runas";
                p.Start();
                Environment.Exit(0);
            });

            var window = new OperationPending("Lang.Windows.OperationPending", "Update", handler);

            if (!window.Completed)
            {
                window.ShowSubWindow();
                window.Show();
                Close();
            }
            t.Start();
        }