/// <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); }
/// <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)); }
void UsageReportingPromptLoaded(object sender, RoutedEventArgs e) { DynamoModel.OnRequestMigrationStatusDialog(new SettingsMigrationEventArgs( SettingsMigrationEventArgs.EventStatusType.End)); }