コード例 #1
0
ファイル: DynamoMigrator.cs プロジェクト: zjloscar/Dynamo
        /// <summary>
        /// Given a root user data directory, this migrates user preferences,
        /// packages and custom node definition files from one installed version
        /// into another
        /// </summary>
        /// <param name="fromVersion"> source Dynamo version from which to migrate </param>
        /// <param name="toVersion"> target Dynamo version into which to migrate </param>
        /// <returns> new migrator instance after migration, null if there's no migration </returns>
        internal static DynamoMigratorBase Migrate(FileVersion fromVersion, FileVersion toVersion)
        {
            // Create concrete DynamoMigratorBase object using previousVersion and reflection
            var sourceMigrator = CreateMigrator(fromVersion);

            Debug.Assert(sourceMigrator != null);

            // get migrator object for current version
            var targetMigrator = CreateMigrator(toVersion);

            Debug.Assert(targetMigrator != null);

            bool isPackagesDirectoryEmpty    = !Directory.EnumerateFileSystemEntries(targetMigrator.PackagesDirectory).Any();
            bool isDefinitionsDirectoryEmpty = !Directory.EnumerateFileSystemEntries(targetMigrator.DefinitionsDirectory).Any();

            // Migrate only if both packages and definitions directories are empty
            if (isPackagesDirectoryEmpty && isDefinitionsDirectoryEmpty)
            {
                DynamoModel.OnRequestMigrationStatusDialog(new SettingsMigrationEventArgs(
                                                               SettingsMigrationEventArgs.EventStatusType.Begin));

                return(targetMigrator.MigrateFrom(sourceMigrator));
            }
            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Migrates preference settings and copies packages and custom node
        /// definitions from the last but one version to the currently installed Dynamo version
        /// </summary>
        /// <param name="pathManager"></param>
        /// <param name="pathResolver"></param>
        /// <returns>new migrator instance after migration</returns>
        public static DynamoMigratorBase MigrateBetweenDynamoVersions(IPathManager pathManager, IPathResolver pathResolver)
        {
            // No migration required if the current version is <= version 0.7
            if (pathManager.MajorFileVersion == 0 &&
                pathManager.MinorFileVersion <= 7)
            {
                return(null);
            }

            var userDataDir = Path.GetDirectoryName(pathManager.UserDataDirectory);
            var versions    = GetInstalledVersions(userDataDir).ToList();

            if (versions.Count() < 2)
            {
                return(null); // No need for migration
            }
            DynamoModel.OnRequestMigrationStatusDialog(new SettingsMigrationEventArgs(
                                                           SettingsMigrationEventArgs.EventStatusType.Begin));

            var previousVersion = versions[1];
            var currentVersion  = versions[0];

            Debug.Assert(currentVersion.MajorPart == pathManager.MajorFileVersion &&
                         currentVersion.MinorPart == pathManager.MinorFileVersion);

            return(Migrate(pathResolver, previousVersion, currentVersion));
        }
コード例 #3
0
 void UsageReportingPromptLoaded(object sender, RoutedEventArgs e)
 {
     DynamoModel.OnRequestMigrationStatusDialog(new SettingsMigrationEventArgs(
                                                    SettingsMigrationEventArgs.EventStatusType.End));
 }