Exemplo n.º 1
0
        /// <summary>
        /// 下载新程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Window_LoadedAsync(object sender, RoutedEventArgs e)
        {
            //创建下载文件存放目录
            //合成目录
            string tempFileDir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "UpdateApp");

            DirectoryInfo directoryInfo = new DirectoryInfo(tempFileDir);

            if (directoryInfo.Exists)
            {
                directoryInfo.Delete(true);
            }
            directoryInfo.Create();
            _CurWinViewModel.DownCount = _CurWinViewModel.NeedDownFiles.Count;
            for (int i = 0; i < _CurWinViewModel.NeedDownFiles.Count; i++)
            {
                _CurWinViewModel.DownFileName = $"{_CurWinViewModel.NeedDownFiles[i]}正在下载...。";

                ProgressMessageHandler DownProgress = new ProgressMessageHandler();
                DownProgress.HttpReceiveProgress += (object sender, HttpProgressEventArgs e) =>
                {
                    _CurWinViewModel.DownIntProgress = e.ProgressPercentage;
                };
                string downFileName = await DataFileUpdateAppRepository.DownLoadNewVerFile(_CurWinViewModel.NeedDownFiles[i], tempFileDir, DownProgress);

                if (!string.IsNullOrWhiteSpace(downFileName))
                {
                    _CurWinViewModel.DownIndex++;
                    _CurWinViewModel.DownFileName = $"{_CurWinViewModel.NeedDownFiles[i]}下载完成。";
                }
                else
                {
                    _CurWinViewModel.DownFileName = $"{_CurWinViewModel.NeedDownFiles[i]}下载失败。";
                }
            }
            this.Btn_Update.IsEnabled = true;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 检查并升级系统
        /// </summary>
        /// <returns></returns>
        private async Task CheckAppUpdateAsync()
        {
            _UpdateAppTimer.Stop();
            //1.检查是否需要更新。
            List <string> NeedUpdateFiles = new List <string>();
            //读取服务器端本系统程序的信息。
            AppUpdateInfo UpdateInfo = await DataFileUpdateAppRepository.GetAppUpdateInfo();

            if (UpdateInfo == null)
            {
                this.notifyIcon.ShowBalloonTip(1000, "错误", "获取程序升级信息时出错...", ToolTipIcon.Error);
                _UpdateAppTimer.Start();
                return;
            }
            //如果服务器程序升级信息比本地记录的晚,则升级之。
            if (UpdateInfo.UpdateDate > AppSet.LocalSetting.AppUpDateTime)
            {
                NeedUpdateFiles = UpdateInfo.UpdateFiles.ToList <string>();
            }
            else
            {
                _UpdateAppTimer.Start();
                return;
            }

            if (NeedUpdateFiles != null && NeedUpdateFiles.Count > 0)
            {
                AppFuns.ShowMessage($"发现新版本程序,点击确定开始升级。", $"新版本[{UpdateInfo.UpdateDate:yyyy-MM-dd HH:mm}]");
                WinUpdateDialog winUpdate = new WinUpdateDialog(NeedUpdateFiles);
                winUpdate.ShowDialog();
                if (!CheckDownResult(UpdateInfo))
                {
                    AppFuns.ShowMessage("下载升级文件不正确,无法更新。", "错误", isErr: true);
                    ShutDownApp();
                    return;
                }
                //升级程序路径。
                string updateProgram = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "UpdateApp.exe");
                if (File.Exists(updateProgram))
                {
                    //下载成功,更新本地时间。
                    AppSet.LocalSetting.AppUpDateTime = UpdateInfo.UpdateDate;
                    if (DataRWLocalFileRepository.SaveObjToFile(AppSet.LocalSetting, AppSet.LocalSettingFileName))
                    {
                        //启动升级程序
                        _ = Task.Run(() =>
                        {
                            int UpdateExitCode = System.Diagnostics.Process.Start(updateProgram).ExitCode;
                        }).ConfigureAwait(false);
                    }
                }
                else
                {
                    AppFuns.ShowMessage("未找到更新程序,请与开发人员联系。", "错误", isErr: true);
                }
                //关闭本程序
                Thread.Sleep(500);
                ShutDownApp();
            }
            else
            {
                _UpdateAppTimer.Start();
            }
        }