public void SaveTree(TreeViewEx srcFileTree, TreeViewEx srcRegTree, TreeViewEx destFileTree, TreeViewEx destRegTree, TreeViewEx appInfoTree, TreeViewEx launchTree) { foreach (TreeNode item in destFileTree.Nodes) { if (item.Text.StartsWith("[")) { Launch.SaveNode(item); } else if (item.Text == "App") { foreach (TreeNode appNode in item.Nodes) { if (appNode.Text != "AppInfo") { SaveFileNode(appNode); } } } } List <string> listOfComFile = new List <string>(); foreach (TreeNode item in destRegTree.Nodes) { Launch.SaveNode(item); if (item.Text == LaunchINI.LaunchINI.RegistryKeys_Tag && IsGenerateRegFile) { GenerateRegFile(item); } else if (item.Text == LaunchINI.LaunchINI.RegistrationFreeCOM_Tag) { foreach (TreeNode subItem in item.Nodes) { INIKeyValuePairBase tempVal = new INIKeyValuePairBase(); tempVal.FullValue = subItem.Text; listOfComFile.Add(tempVal.IniValue); } } } Launch.Save(); AppInfo.Save(); GenerateIcons(); if (listOfComFile.Count > 0 && IsGenerateManifest) { List <string> tempAllFiles = new List <string>(); tempAllFiles.AddRange(Directory.GetFiles(RootFolder, "*.dll", SearchOption.AllDirectories)); tempAllFiles.AddRange(Directory.GetFiles(RootFolder, "*.ocx", SearchOption.AllDirectories)); tempAllFiles.AddRange(Directory.GetFiles(RootFolder, "*.exe", SearchOption.AllDirectories)); Model.COM.ComRegInfo.Inst.Clear(); Model.COM.ComRegInfo.Inst.ParseComInfo(srcRegTree); Model.COM.ComRegInfo.Inst.UpdateTypeInfo(listOfComFile, tempAllFiles); GenerateManifestInternal(Model.ExeFileNameListStringConverter.ExeFileNameList.ToList(), listOfComFile, tempAllFiles); } }
private void GenerateRegFile(TreeNode node) { foreach (TreeNode item in node.Nodes) { if (item.Tag is TreeNode) { try { INIKeyValuePairBase tempVal = new INIKeyValuePairBase(); tempVal.Parse(item.Text); string regFileName = string.Format("{0}\\{1}.reg", _defaultSettings, tempVal.IniKey); string dirName = Path.GetDirectoryName(regFileName); if (!Directory.Exists(dirName)) { Directory.CreateDirectory(dirName); } if (File.Exists(regFileName)) { try { File.Delete(regFileName); } catch (Exception) { } } using (var writer = new StreamWriter(regFileName, false, Encoding.Unicode)) { Parser.RegFileExport parser = new Parser.RegFileExport(); parser.GenerateRegTextFile(item.Tag as TreeNode, writer); } } catch (Exception ex) { ErrorLog.Inst.ShowError("Reg file generation error : {0}", ex.Message); } } } }