private static MigrationFlowData BuildMigrationData(OperationModeEnum operationMode, IFileSystemHelper fileSystemHelper, bool addToBootManager) { MigrationFlowData migrationData = new MigrationFlowData(); IDriveInfo systemDriveInfo = fileSystemHelper.GetSystemDriveInfo(); migrationData.OperatingSystemDriveLetter = systemDriveInfo.Name.First(); migrationData.TemporaryVhdFileMaxSize = systemDriveInfo.TotalSize + (200 << 20) /*200MB*/; migrationData.VhdFileName = "VHDNBOM_System_Image.vhdx"; migrationData.VhdFileType = Logic.Models.Enums.VhdType.VhdxDynamic; migrationData.VhdFileTemporaryFolder = vhdTemporaryFolderPath ?? fileSystemHelper.FindBestLocationForVhdTemporaryFolder(); migrationData.AddVhdToBootManager = addToBootManager; if (operationMode == OperationModeEnum.MigrateCurrentOsToVhd) { migrationData.DeleteTemporaryVhdFile = true; migrationData.DestinationVhdMaxFileSize = (systemDriveInfo.AvailableFreeSpace - Constants.FiveGigs + Constants.OneGig) + (200 << 20); migrationData.DesiredTempVhdShrinkSize = (systemDriveInfo.TotalSize - (systemDriveInfo.AvailableFreeSpace - Constants.FiveGigs)); migrationData.VhdFileDestinationFolder = $"{migrationData.OperatingSystemDriveLetter}:\\VHD_Boot"; } return(migrationData); }