예제 #1
0
        public static UserSettingsUpgradeStep Create(Type settingsClass)
        {
            //Important: this line first so we can't get into infinite recursion issues with trying
            //to migrate the UpgradeSettings class on first access (SettingsStoreSettingsProvider does that).
            if (!ApplicationSettingsHelper.IsUserSettingsMigrationEnabled(settingsClass))
            {
                return(null);
            }

            if (!new SettingsGroupDescriptor(settingsClass).HasUserScopedSettings)
            {
                return(null);                //no point
            }
            if (!UpgradeSettings.IsUserUpgradeEnabled())
            {
                return(null);
            }

            if (UpgradeSettings.Default.IsUserUpgradeStepCompleted(settingsClass.FullName))
            {
                return(null);
            }

            ApplicationSettingsBase settings = ApplicationSettingsHelper.GetSettingsClassInstance(settingsClass);

            return(new UserSettingsUpgradeStep(settings));
        }
예제 #2
0
        public ICollection <UserUpgradeStep> CreateSteps()
        {
            var upgradeSteps = new List <UserUpgradeStep>();

            if (UpgradeSettings.IsUserUpgradeEnabled())
            {
                foreach (var group in SettingsGroupDescriptor.ListInstalledSettingsGroups())
                {
                    try
                    {
                        UserSettingsUpgradeStep step = UserSettingsUpgradeStep.Create(group);
                        if (step != null)
                        {
                            upgradeSteps.Add(step);
                        }
                    }
                    catch (Exception e)
                    {
                        Platform.Log(LogLevel.Warn, e, "Unable to migrate user settings: {0}", group.Name);
                    }
                }
            }

            return(upgradeSteps);
        }
예제 #3
0
        public static IUserUpgradeStrategy Create()
        {
            if (!UpgradeSettings.IsUserUpgradeEnabled())
            {
                return(null);
            }

            ICollection <UserUpgradeStep> steps = UserUpgradeStep.CreateAll();

            if (steps.Count == 0)
            {
                return(null);
            }

            return(new UserUpgradeStrategy(steps));
        }
예제 #4
0
        public bool Run()
        {
            UpgradeSettings.CheckUserUpgradeEnabled();

            if (IsInProgress || IsCompleted)
            {
                return(false);
            }

            StepsInProgress.Push(Identifier);

            try
            {
                bool success = PerformUpgrade();
                OnCompleted();
                return(success);
            }
            finally
            {
                StepsInProgress.Pop();
            }
        }