internal static void CraeteNspd(Option option) { CreateNspdOption createNspd = option.CreateNspd; Program.DeleteIncludingJunctionDirectory(createNspd.OutputDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory, (string)null); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/program0.ncd", (string)null); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/program0.ncd/code", createNspd.CodeDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/program0.ncd/data", createNspd.DataDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/program0.ncd/logo", createNspd.LogoDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/htmlDocument0.ncd", (string)null); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/htmlDocument0.ncd/htmlDocument", createNspd.HtmlDocumentDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/htmlDocument0.ncd/accessibleUrls", createNspd.AccessibleUrlsDirectory); Program.EnsureDirectoryWithJunction(createNspd.OutputDirectory + "/legalInformation0.ncd", createNspd.LegalInformationDirectory); string path1 = createNspd.OutputDirectory + "/control0.ncd"; string str = path1 + "/data"; Program.EnsureDirectoryWithJunction(path1, (string)null); Program.EnsureDirectoryWithJunction(str, createNspd.ControlDirectory); ApplicationControl.Generate(createNspd.MetaFilePath, createNspd.IconFileList, createNspd.NxIconFileList, createNspd.NxIconMaxSize, str, false); string path2 = createNspd.OutputDirectory + "/meta0.ncd/data"; Directory.CreateDirectory(path2); NintendoContentMetaBase nintendoContentMetaBase = new NintendoContentMetaBase(new List <Tuple <ISource, NintendoContentInfo> >(), createNspd.MetaType, createNspd.MetaFilePath); using (FileStream fileStream = Program.OpenNewFileStream(path2 + "/" + nintendoContentMetaBase.GetEntryName(), FileOptions.RandomAccess)) { byte[] bytes = nintendoContentMetaBase.GetBytes(); fileStream.Write(bytes, 0, bytes.Length); } string path2_1 = Path.GetFileNameWithoutExtension(createNspd.OutputDirectory) + ".nspd_root"; using (File.Create(Path.Combine(Path.GetDirectoryName(createNspd.OutputDirectory), path2_1))) ; }
internal static void CraeteNspMeta(Option option) { CreateNspMetaOption createNspMeta = option.CreateNspMeta; if (createNspMeta.MetaType == "Application" || createNspMeta.MetaType == "Patch") { string outputDirectoryPath = createNspMeta.OutputDirectory + "/control0.ncd/data"; ApplicationControl.Generate(createNspMeta.MetaFilePath, createNspMeta.IconFileList, createNspMeta.NxIconFileList, createNspMeta.NxIconMaxSize, outputDirectoryPath, true); } string path = createNspMeta.OutputDirectory + "/meta0.ncd/data"; Directory.CreateDirectory(path); NintendoContentMetaBase nintendoContentMetaBase = new NintendoContentMetaBase(new List <Tuple <ISource, NintendoContentInfo> >(), createNspMeta.MetaType, createNspMeta.MetaFilePath); using (FileStream fileStream = Program.OpenNewFileStream(path + "/" + nintendoContentMetaBase.GetEntryName(), FileOptions.RandomAccess)) { byte[] bytes = nintendoContentMetaBase.GetBytes(); fileStream.Write(bytes, 0, bytes.Length); } }