Ejemplo n.º 1
0
        private void xMLToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                Title = HaRepacker.Properties.Resources.SelectWz, Filter = string.Format("{0}|*.wz", HaRepacker.Properties.Resources.WzFilter), Multiselect = true
            };

            if (dialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            FolderBrowserDialog folderDialog = new FolderBrowserDialog()
            {
                Description = HaRepacker.Properties.Resources.SelectOutDir
            };

            if (folderDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            WzClassicXmlSerializer serializer = new WzClassicXmlSerializer(UserSettings.Indentation, UserSettings.LineBreakType, false);

            threadDone = false;
            new Thread(new ParameterizedThreadStart(RunWzFilesExtraction)).Start((object)new object[] { dialog.FileNames, folderDialog.SelectedPath, encryptionBox.SelectedIndex, serializer });
            new Thread(new ParameterizedThreadStart(ProgressBarThread)).Start(serializer);
        }
Ejemplo n.º 2
0
        private void classicToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string outPath = GetOutputDirectory();

            if (outPath == "")
            {
                return;
            }
            List <WzDirectory> dirs = new List <WzDirectory>();
            List <WzImage>     imgs = new List <WzImage>();

            foreach (WzNode node in MainPanel.DataTree.SelectedNodes)
            {
                if (node.Tag is WzDirectory)
                {
                    dirs.Add((WzDirectory)node.Tag);
                }
                else if (node.Tag is WzImage)
                {
                    imgs.Add((WzImage)node.Tag);
                }
            }
            WzClassicXmlSerializer serializer = new WzClassicXmlSerializer(UserSettings.Indentation, UserSettings.LineBreakType, true);

            threadDone    = false;
            runningThread = new Thread(new ParameterizedThreadStart(RunWzImgDirsExtraction));
            runningThread.Start((object)new object[] { dirs, imgs, outPath, serializer });
            new Thread(new ParameterizedThreadStart(ProgressBarThread)).Start(serializer);
        }
Ejemplo n.º 3
0
        private void RepackerThread()
        {
            Invoke((Action) delegate
            {
                ChangeRepackState("Deleting old backups...");
            });

            // Test for write access
            string rootDir = Path.Combine(Program.WzManager.BaseDir, Program.APP_NAME);
            string testDir = Path.Combine(rootDir, "Test");

            bool bSaveFileInHaCreatorDirectory = false;

            try
            {
                if (!Directory.Exists(testDir))
                {
                    Directory.CreateDirectory(testDir);
                    Directory.Delete(testDir);
                }
            }
            catch (Exception e)
            {
                if (e is UnauthorizedAccessException)
                {
                    bSaveFileInHaCreatorDirectory = true;
                }
            }
            if (bSaveFileInHaCreatorDirectory)
            {
                rootDir = Path.Combine(Directory.GetCurrentDirectory(), Program.APP_NAME);
            }

            // Prepare directories
            string backupDir    = Path.Combine(rootDir, "Backup");
            string orgBackupDir = Path.Combine(rootDir, "Original");
            string XMLDir       = Path.Combine(rootDir, "XML");

            try
            {
                if (!Directory.Exists(backupDir))
                {
                    Directory.CreateDirectory(backupDir);
                }

                if (!Directory.Exists(orgBackupDir))
                {
                    Directory.CreateDirectory(orgBackupDir);
                }

                if (!Directory.Exists(XMLDir))
                {
                    Directory.CreateDirectory(XMLDir);
                }

                foreach (FileInfo fi in new DirectoryInfo(backupDir).GetFiles())
                {
                    fi.Delete();
                }
            }
            catch (Exception e)
            {
                ShowErrorMessageThreadSafe(e, "backup files");
                return;
            }

            // Save XMLs
            // We have to save XMLs first, otherwise the WzImages will already be disposed when we reach this code
            Invoke((Action) delegate
            {
                ChangeRepackState("Saving XMLs...");
            });
            foreach (WzImage img in Program.WzManager.updatedImages)
            {
                try
                {
                    string xmlPath    = Path.Combine(XMLDir, img.FullPath);
                    string xmlPathDir = Path.GetDirectoryName(xmlPath);
                    if (!Directory.Exists(xmlPathDir))
                    {
                        Directory.CreateDirectory(xmlPathDir);
                    }
                    WzClassicXmlSerializer xmlSer = new WzClassicXmlSerializer(0, LineBreak.None, false);
                    xmlSer.SerializeImage(img, xmlPath);
                }
                catch (Exception e)
                {
                    ShowErrorMessageThreadSafe(e, "XMLs");
                    return;
                }
            }

            // Save WZ Files
            foreach (WzFile wzf in toRepack)
            {
                Invoke((Action) delegate
                {
                    ChangeRepackState("Saving " + wzf.Name + "...");
                });
                string orgFile = wzf.FilePath;

                string tmpFile;
                if (!bSaveFileInHaCreatorDirectory)
                {
                    tmpFile = orgFile + "$tmp";
                }
                else
                {
                    string folderPath = Path.Combine(rootDir, "Output");
                    tmpFile = Path.Combine(folderPath, wzf.Name);

                    try
                    {
                        if (!Directory.Exists(folderPath))
                        {
                            Directory.CreateDirectory(folderPath);
                        }

                        if (!File.Exists(tmpFile))
                        {
                            File.Create(tmpFile).Close();
                        }
                    }
                    catch (Exception e)
                    {
                        ShowErrorMessageThreadSafe(e, wzf.Name);
                        return;
                    }
                }

                try
                {
                    wzf.SaveToDisk(tmpFile, null);
                    wzf.Dispose();

                    if (!bSaveFileInHaCreatorDirectory) // only replace the original file if its saving in the maplestory folder
                    {
                        File.Move(tmpFile, orgFile + "_NewCreated.wz");
                    }
                }
                catch (Exception e)
                {
                    ShowErrorMessageThreadSafe(e, wzf.Name);
                    return;
                }
            }

            Invoke((Action) delegate
            {
                ChangeRepackState("Finished");
                FinishSuccess(bSaveFileInHaCreatorDirectory);
            });
        }
Ejemplo n.º 4
0
        private void RepackerThread()
        {
            Invoke((Action) delegate { ChangeRepackState("Deleting old backups..."); });
            // Prepare directories
            string rootDir      = Path.Combine(Program.WzManager.BaseDir, "HaCreator");
            string backupDir    = Path.Combine(rootDir, "Backup");
            string orgBackupDir = Path.Combine(rootDir, "Original");
            string XMLDir       = Path.Combine(rootDir, "XML");

            try
            {
                if (!Directory.Exists(backupDir))
                {
                    Directory.CreateDirectory(backupDir);
                }
                if (!Directory.Exists(orgBackupDir))
                {
                    Directory.CreateDirectory(orgBackupDir);
                }
                if (!Directory.Exists(XMLDir))
                {
                    Directory.CreateDirectory(XMLDir);
                }
                foreach (FileInfo fi in new DirectoryInfo(backupDir).GetFiles())
                {
                    fi.Delete();
                }
            }
            catch (Exception e)
            {
                ShowErrorMessageThreadSafe(e, "backup files");
                return;
            }

            // Save XMLs
            // We have to save XMLs first, otherwise the WzImages will already be disposed when we reach this code
            Invoke((Action) delegate { ChangeRepackState("Saving XMLs..."); });
            foreach (WzImage img in Program.WzManager.updatedImages)
            {
                try
                {
                    string xmlPath    = Path.Combine(XMLDir, img.FullPath);
                    string xmlPathDir = Path.GetDirectoryName(xmlPath);
                    if (!Directory.Exists(xmlPathDir))
                    {
                        Directory.CreateDirectory(xmlPathDir);
                    }
                    WzClassicXmlSerializer xmlSer = new WzClassicXmlSerializer(0, LineBreak.None, false);
                    xmlSer.SerializeImage(img, xmlPath);
                }
                catch (Exception e)
                {
                    ShowErrorMessageThreadSafe(e, "XMLs");
                    return;
                }
            }

            // Save WZ Files
            foreach (WzFile wzf in toRepack)
            {
                Invoke((Action) delegate { ChangeRepackState("Saving " + wzf.Name + "..."); });
                string orgFile = wzf.FilePath;
                string tmpFile = orgFile + "$tmp";
                try
                {
                    wzf.SaveToDisk(tmpFile);
                    wzf.Dispose();
                    string buPath = Path.Combine(orgBackupDir, Path.GetFileName(orgFile));
                    // Try to backup to /Originals/ First, if there is already a file there, we are not original, so just backup to /Backup/
                    if (File.Exists(buPath))
                    {
                        buPath = Path.Combine(backupDir, Path.GetFileName(orgFile));
                    }
                    File.Move(orgFile, buPath);
                    File.Move(tmpFile, orgFile);
                }
                catch (Exception e)
                {
                    ShowErrorMessageThreadSafe(e, wzf.Name);
                    return;
                }
            }

            Invoke((Action) delegate { ChangeRepackState("Finished"); FinishSuccess(); });
        }