private void OnUpdateError(LocalRunInfo localRunInfo, Exception ex) { this.Invoke((Action)(() => { LogHelper.LogError("更新出错", ex); _frmProgress.Hide(); if (MessageBox.Show(string.Format("{0}\r\n是否继续运行?", ex.Message), "错误", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (string.IsNullOrEmpty(localRunInfo.AppRunCmd)) { InputStartApp(localRunInfo); } else { UpdateHelper.RunMainApp(localRunInfo); } } else { Exit(localRunInfo); } })); }
private void InputStartApp(LocalRunInfo localRunInfo) { FrmInput frm = new FrmInput("输入启动程序:", localRunInfo.AppRunCmd); if (frm.ShowDialog() == DialogResult.OK) { localRunInfo.AppRunCmd = frm.Value; UpdateHelper.RunMainApp(localRunInfo); } else { Exit(localRunInfo); } }
/// <summary> /// 所有主程序关闭事件 /// </summary> /// <param name="detector"></param> private void OnMainAppsClose(MainAppStateDetector detector, LocalRunInfo localRunInfo) { this.Invoke((Action)(() => { if (!this._config.KeepUpdaterRunning) { Exit(null); } else if (this._config.KeepAppRunning) { if (!UpdateHelper.IsAppRunning(_mainAppPath)) { UpdateHelper.RunMainApp(localRunInfo, "由更新程序启动"); } } })); }
/// <summary> /// 运行服务端命令 /// </summary> /// <param name="cmd"></param> /// <param name="localRunInfo"></param> private void OnServerCommandRequest(ClientCommand cmd, LocalRunInfo localRunInfo) { switch (cmd.Type) { case ClientCommandType.Start: if (!UpdateHelper.IsAppRunning(_mainAppPath)) { UpdateHelper.RunMainApp(localRunInfo, "由服务端启动"); } break; case ClientCommandType.Stop: if (UpdateHelper.IsAppRunning(_mainAppPath)) { UpdateHelper.KillRunningApps(_mainAppPath); } break; default: break; } }
private void OnUpdateComplete( LocalRunInfo localRunInfo, IEnumerable <UpdateRunFile> fileDiff, List <string> failedUpdateFiles, List <string> failedDeleteFiles, bool initStart, bool runBat, string msg) { this.Invoke((Action)(() => { _frmProgress.Hide(); Show(); OnUpdateStatus("正在保存配置信息..."); UpdateHelper.SaveLocalRunInfo(localRunInfo); if (runBat) { OnUpdateStatus("正在做初始化工作..."); UpdateHelper.RunBat(); } if (!initStart && fileDiff.Count() > 0) { // 由于首次运行的时候更新的文件较多,不写更新日志 OnUpdateStatus("正在写更新日志..."); LogHelper.WriteUpdateLog(localRunInfo.Ver, fileDiff, failedUpdateFiles, failedDeleteFiles); } OnUpdateStatus("正在启动主程序..."); if (string.IsNullOrEmpty(localRunInfo.AppRunCmd)) { InputStartApp(localRunInfo); } else { UpdateHelper.RunMainApp(localRunInfo, msg); } })); }