void m_serviceClient_CheckAppVersionCompleted(object sender, CheckAppVersionCompletedEventArgs e) { CPApplication.Current.Browser.LoadingSpin.Hide(); if (e.Error != null) { CPApplication.Current.CurrentPage.Context.Window.MessageBox.Show(e.Error.Message, MessageBoxType.Error); return; } if (e.Result.Faults != null && e.Result.Faults.Count > 0) { CPApplication.Current.CurrentPage.Context.Window.MessageBox.Show(e.Result.Faults[0].ErrorDescription, MessageBoxType.Error); return; } var childWindow = new ChildWindow(); var about = new About { ChildWindow = childWindow, AppVersion = e.Result }; childWindow.Style = Application.Current.Resources["AboutWindowStyle"] as Style; childWindow.Content = about; childWindow.Show(); }
void m_ServiceClient_CheckAppVersionCompleted(object sender, CheckAppVersionCompletedEventArgs e) { try { if (e.Result.Faults != null && e.Result.Faults.Count > 0) { throw new Exception(e.Result.Faults[0].ErrorDescription); } //1. 获得老版本的Xap包的信息 var oldXapVersionList = new List <XapVersion>(); foreach (var xapVersion in this.XapVersionList) { var any = oldXapVersionList.Any(item => string.Equals(xapVersion.XapName, item.XapName, StringComparison.OrdinalIgnoreCase)); if (!any) { oldXapVersionList.Add(xapVersion); } } //2. 获得新版本的Xap包的信息 this.XapVersionList.Clear(); foreach (var xapVersion in e.Result.Body) { var any = this.XapVersionList.Any(item => string.Equals(xapVersion.XapName, item.XapName, StringComparison.OrdinalIgnoreCase)); if (!any) { this.XapVersionList.Add(xapVersion); } } //3. 比较新老版本的版本号,并返回版本号变化的Xap包信息 if (oldXapVersionList.Count > 0 && this.XapVersionList.Count > 0) { var changedXapVersionList = new List <XapVersion>(); #region 框架包的版本比较 var fmXapName = CPApplication.Current.FrameworkXapName; var latestXapInfo = this.XapVersionList.FirstOrDefault(xap => string.Equals(xap.XapName, fmXapName, StringComparison.OrdinalIgnoreCase)); var preXapInfo = oldXapVersionList.FirstOrDefault(xap => string.Equals(xap.XapName, fmXapName, StringComparison.OrdinalIgnoreCase)); if (latestXapInfo != null && preXapInfo != null && latestXapInfo.Version != preXapInfo.Version) { changedXapVersionList.Add(new XapVersion { Title = latestXapInfo.Title, XapName = latestXapInfo.XapName, PublishDate = latestXapInfo.PublishDate, Description = latestXapInfo.Description, Version = latestXapInfo.Version, PreVersion = preXapInfo.Version, UpdateLevel = latestXapInfo.UpdateLevel }); } #endregion #region 业务Domain的版本比较 var modules = ComponentFactory.GetComponent <IModuleManager>().GetAllModuleInfo(); if (modules != null) { foreach (var module in modules) { latestXapInfo = this.XapVersionList.FirstOrDefault(xap => string.Equals(xap.XapName, (module.Name + ".xap"), StringComparison.OrdinalIgnoreCase)); preXapInfo = oldXapVersionList.FirstOrDefault(xap => string.Equals(xap.XapName, (module.Name + ".xap"), StringComparison.OrdinalIgnoreCase)); if (latestXapInfo != null && preXapInfo != null && latestXapInfo.Version != preXapInfo.Version) { changedXapVersionList.Add(new XapVersion { Title = latestXapInfo.Title, XapName = latestXapInfo.XapName, PublishDate = latestXapInfo.PublishDate, Description = latestXapInfo.Description, Version = latestXapInfo.Version, PreVersion = preXapInfo.Version, UpdateLevel = latestXapInfo.UpdateLevel }); } if (preXapInfo == null && latestXapInfo != null) { changedXapVersionList.Add(new XapVersion { Title = latestXapInfo.Title, XapName = latestXapInfo.XapName, PublishDate = latestXapInfo.PublishDate, Description = latestXapInfo.Description, Version = latestXapInfo.Version, PreVersion = preXapInfo.Version, UpdateLevel = latestXapInfo.UpdateLevel }); } } } #endregion if (changedXapVersionList.Count > 0 && XapVersionChangedCompleted != null) { XapVersionChangedCompleted(sender, new CheckXapVersionCompletedEventArgs(ToXapVersionInfo(changedXapVersionList), e.Error, false, e.UserState)); } } } catch (Exception ex) { ComponentFactory.GetComponent <ILog>().LogError(ex, null); } finally { if (e.UserState != null) { ((Action)e.UserState)(); } } }