Esempio n. 1
0
        private void BeginUpgrade(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            string text   = button.Content.ToString();

            if (text == Jvedio.Language.Resources.BeginUpgrade)
            {
                button.Content            = Jvedio.Language.Resources.StopUpgrade;
                upgrade                   = new Upgrade();
                upgrade.UpgradeCompleted += (s, _) =>
                {
                    UpgradeLoadingCircle.Visibility = Visibility.Hidden;
                    //执行命令
                    // 我对这个命令有点无语,xcopy直接复制同目录的文件夹竟然不成功,原因是父目录有空格,但是下面这个命令里没有涉及到父目录啊?!
                    // xcopy /y/e Temp %cd%&TIMEOUT /T 1&start \"\" \"jvedio.exe\" &exit
                    // 没办法只能修改成绝对路径了,而且如果放在C盘,也不知道是否需要权限
                    string arg = $"xcopy /y/e \"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Temp")}\" \"{AppDomain.CurrentDomain.BaseDirectory}\"&TIMEOUT /T 1&start \"\" \"jvedio.exe\" &exit";
                    using (StreamWriter sw = new StreamWriter("upgrade.bat"))
                    {
                        sw.Write(arg);
                    }
                    FileHelper.TryOpenFile("upgrade.bat");
                    Application.Current.Shutdown();
                };

                upgrade.onProgressChanged += (s, _) =>
                {
                    ProgressBUpdateEventArgs ev = _ as ProgressBUpdateEventArgs;
                    UpgradeProgressStackPanel.Visibility = Visibility;
                    if (ev.maximum != 0)
                    {
                        UpgradeProgressBar.Value = (int)(ev.value / ev.maximum * 100);
                    }
                };
                button.Style                    = (System.Windows.Style)App.Current.Resources["ButtonDanger"];
                UpgradeProgressBar.Value        = 0;
                UpgradeLoadingCircle.Visibility = Visibility.Visible;
                upgrade.Start();
                UpgradeProgressStackPanel.Visibility = Visibility.Visible;
            }
            else
            {
                button.Content = Jvedio.Language.Resources.BeginUpgrade;
                button.Style   = (System.Windows.Style)App.Current.Resources["ButtonStyleFill"];
                upgrade?.Stop();
                UpgradeProgressStackPanel.Visibility = Visibility.Collapsed;
                UpgradeLoadingCircle.Visibility      = Visibility.Collapsed;
            }
        }
Esempio n. 2
0
        private void BeginUpgrade(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            string text   = button.Content.ToString();

            if (text == Jvedio.Language.Resources.BeginUpgrade)
            {
                button.Content            = Jvedio.Language.Resources.StopUpgrade;
                upgrade                   = new Upgrade();
                upgrade.UpgradeCompleted += (s, _) =>
                {
                    UpgradeLoadingCircle.Visibility = Visibility.Hidden;
                    //执行命令
                    string arg = "xcopy /y/e Temp %cd%&TIMEOUT /T 1&start \"\" \"jvedio.exe\" &exit";
                    using (StreamWriter sw = new StreamWriter("upgrade.bat"))
                    {
                        sw.Write(arg);
                    }
                    System.Diagnostics.Process.Start("upgrade.bat");
                    Application.Current.Shutdown();
                };

                upgrade.onProgressChanged += (s, _) =>
                {
                    ProgressBUpdateEventArgs ev = _ as ProgressBUpdateEventArgs;
                    UpgradeProgressStackPanel.Visibility = Visibility;
                    if (ev.maximum != 0)
                    {
                        UpgradeProgressBar.Value = (int)(ev.value / ev.maximum * 100);
                    }
                };
                button.Style                    = (Style)App.Current.Resources["ButtonDanger"];
                UpgradeProgressBar.Value        = 0;
                UpgradeLoadingCircle.Visibility = Visibility.Visible;
                upgrade.Start();
                UpgradeProgressStackPanel.Visibility = Visibility.Visible;
            }
            else
            {
                button.Content = Jvedio.Language.Resources.BeginUpgrade;
                button.Style   = (Style)App.Current.Resources["ButtonStyleFill"];
                upgrade?.Stop();
                UpgradeProgressStackPanel.Visibility = Visibility.Collapsed;
                UpgradeLoadingCircle.Visibility      = Visibility.Collapsed;
            }
        }
Esempio n. 3
0
        private async void DownLoadFromGithub()
        {
            string temppath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Temp");

            //新建临时文件夹
            if (!Directory.Exists(temppath))
            {
                Directory.CreateDirectory(temppath);
            }
            await GetDownLoadList();

            DownLoadProgress         = new ProgressBUpdateEventArgs();
            DownLoadProgress.maximum = DownLoadList.Count;
            foreach (var item in DownLoadList)
            {
                if (StopUpgrade)
                {
                    return;
                }
                Console.WriteLine(item);
                string filepath = Path.Combine(temppath, item);
                if (!File.Exists(filepath))
                {
                    HttpResult streamResult = await DownLoadFile(file_url + item);

                    //写入本地
                    if (streamResult != null)
                    {
                        WriteFile(streamResult.FileByte, filepath);
                    }
                }
                DownLoadProgress.value += 1;
                if (!StopUpgrade)
                {
                    onProgressChanged?.Invoke(this, DownLoadProgress);
                }
            }

            //复制文件并覆盖 执行 cmd 命令
            UpgradeCompleted?.Invoke(this, null);
        }