Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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)();
                }
            }
        }