diff --git a/HaRepacker/GUI/MainForm.cs b/HaRepacker/GUI/MainForm.cs index aec9c8f3..1fed0954 100644 --- a/HaRepacker/GUI/MainForm.cs +++ b/HaRepacker/GUI/MainForm.cs @@ -384,12 +384,19 @@ private void RemoveSelectedNodes() private void RunWzFilesExtraction(object param) { ChangeApplicationState(false); + string[] wzFilesToDump = (string[])((object[])param)[0]; string baseDir = (string)((object[])param)[1]; WzMapleVersion version = (WzMapleVersion)((object[])param)[2]; IWzFileSerializer serializer = (IWzFileSerializer)((object[])param)[3]; UpdateProgressBar(MainPanel.mainProgressBar, 0, false, true); UpdateProgressBar(MainPanel.mainProgressBar, wzFilesToDump.Length, true, true); + + if (!Directory.Exists(baseDir)) + { + Directory.CreateDirectory(baseDir); + } + foreach (string wzpath in wzFilesToDump) { if (WzTool.IsListFile(wzpath)) diff --git a/MapleLib/WzLib/WzSerializer.cs b/MapleLib/WzLib/WzSerializer.cs index 4d236ebd..f7ba8664 100644 --- a/MapleLib/WzLib/WzSerializer.cs +++ b/MapleLib/WzLib/WzSerializer.cs @@ -440,13 +440,15 @@ private void exportXmlInternal(WzImage img, string path) bool parsed = img.Parsed || img.Changed; if (!parsed) img.ParseImage(); curr++; - TextWriter tw = new StreamWriter(path); - tw.Write("" + lineBreak); - tw.Write("" + lineBreak); - foreach (WzImageProperty property in img.WzProperties) - WritePropertyToXML(tw, indent, property); - tw.Write("" + lineBreak); - tw.Close(); + + using (TextWriter tw = new StreamWriter(File.Create(path))) + { + tw.Write("" + lineBreak); + tw.Write("" + lineBreak); + foreach (WzImageProperty property in img.WzProperties) + WritePropertyToXML(tw, indent, property); + tw.Write("" + lineBreak); + } if (!parsed) img.UnparseImage();