public void LoadBase(string path)
        {
            NUSContent.Format format = NUSContent.GetFormat(path);

            if (format == NUSContent.Format.Decrypted)
            {
                ValidateBase(path);

                if (Directory.Exists(BasePath))
                {
                    Directory.Delete(BasePath, true);
                    Base = null;
                }

                if (Useful.DirectoryCopy(path, BasePath, true))
                {
                    Base = GetLoadedBase();
                }
                else
                {
                    throw new Exception("Could not load base \"" + path + "\".");
                }
            }
            else if (format == NUSContent.Format.Encrypted)
            {
                ValidateEncryptedBase(path);

                if (Directory.Exists(BasePath))
                {
                    Directory.Delete(BasePath, true);
                    Base = null;
                }

                Directory.CreateDirectory(BasePath);
                NUSContent.Decrypt(path, BasePath);
                Base = GetLoadedBase();
            }
            else
            {
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.AppendLine("The folder not contains a valid NUS content.");
                strBuilder.AppendLine("If it is an unpackaged (decrypted) NUS content, then:");
                strBuilder.AppendLine("The \"" + path + "\\code\" folder not exist.");
                strBuilder.AppendLine("Or \"" + path + "\\content\" folder not exist.");
                strBuilder.AppendLine("Or \"" + path + "\\meta\" folder not exist.");
                strBuilder.AppendLine("If it is an packaged (encrypted) NUS content, then:");
                strBuilder.AppendLine("The \"" + path + "\\title.tmd\" file not exist.");
                strBuilder.AppendLine("Or \"" + path + "\\title.tik\" file not exist.");
                strBuilder.AppendLine("Or \"" + path + "\\title.cert\" file not exist.");
                throw new Exception(strBuilder.ToString());
            }
        }
        protected string GetAppFileName(string path)
        {
            string unpackPath = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NUSConverter"), "unpack");

            if (File.Exists(Path.Combine(unpackPath, "cos.xml")))
            {
                File.Delete(Path.Combine(unpackPath, "cos.xml"));
            }

            NUSContent.Decrypt(path, "code\\cos.xml", Path.Combine(unpackPath, "cos.xml"));

            if (!File.Exists(Path.Combine(unpackPath, "cos.xml")))
            {
                throw new Exception("The NUS content does not contains \"code\\cos.xml\" file.");
            }

            XmlDocument xmlCos = new XmlDocument();

            xmlCos.Load(Path.Combine(unpackPath, "cos.xml"));
            XmlNode cos_argstr = xmlCos.SelectSingleNode("app/argstr");

            return(cos_argstr.InnerText);
        }