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();