/// <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; }
/// <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(); } }