diff --git a/MPF.Library/Utilities/DumpEnvironment.cs b/MPF.Library/Utilities/DumpEnvironment.cs index ddb82835..15ea49a6 100644 --- a/MPF.Library/Utilities/DumpEnvironment.cs +++ b/MPF.Library/Utilities/DumpEnvironment.cs @@ -102,7 +102,7 @@ namespace MPF.Utilities this.Options = options; // Output paths - (this.OutputDirectory, this.OutputFilename) = NormalizeOutputPaths(outputDirectory, outputFilename); + (this.OutputDirectory, this.OutputFilename) = NormalizeOutputPaths(outputDirectory, outputFilename, options.InternalProgram == InternalProgram.DiscImageCreator); // UI information this.Drive = drive; @@ -232,7 +232,8 @@ namespace MPF.Utilities /// /// Directory name to normalize /// Filename to normalize - public static (string, string) NormalizeOutputPaths(string directory, string filename) + /// True to replace '.' with '_' in filenames, false otherwise + public static (string, string) NormalizeOutputPaths(string directory, string filename, bool replacePeriods) { try { @@ -261,6 +262,8 @@ namespace MPF.Utilities directory = directory.Replace(c, '_'); foreach (char c in Path.GetInvalidFileNameChars()) filename = filename.Replace(c, '_'); + if (replacePeriods) + filename = Path.GetFileNameWithoutExtension(filename).Replace('.', '_') + "." + Path.GetExtension(filename).TrimStart('.'); // If we had a space at the end before, add it again if (endedWithSpace) @@ -1178,7 +1181,7 @@ namespace MPF.Utilities return Result.Failure("Error! Current configuration is not supported!"); // Fix the output paths, just in case - (OutputDirectory, OutputFilename) = NormalizeOutputPaths(OutputDirectory, OutputFilename); + (OutputDirectory, OutputFilename) = NormalizeOutputPaths(OutputDirectory, OutputFilename, Options.InternalProgram == InternalProgram.DiscImageCreator); // Validate that the output path isn't on the dumping drive string fullOutputPath = Path.GetFullPath(Path.Combine(OutputDirectory, OutputFilename)); diff --git a/MPF/Windows/MainWindow.xaml.cs b/MPF/Windows/MainWindow.xaml.cs index c499c720..590da907 100644 --- a/MPF/Windows/MainWindow.xaml.cs +++ b/MPF/Windows/MainWindow.xaml.cs @@ -459,7 +459,7 @@ namespace MPF.Windows string trimmedPath = Env.Parameters.OutputPath?.Trim('"') ?? string.Empty; string outputDirectory = Path.GetDirectoryName(trimmedPath); string outputFilename = Path.GetFileName(trimmedPath); - (outputDirectory, outputFilename) = DumpEnvironment.NormalizeOutputPaths(outputDirectory, outputFilename); + (outputDirectory, outputFilename) = DumpEnvironment.NormalizeOutputPaths(outputDirectory, outputFilename, UIOptions.Options.InternalProgram == InternalProgram.DiscImageCreator); if (!string.IsNullOrWhiteSpace(outputDirectory)) OutputDirectoryTextBox.Text = outputDirectory; else