/// <summary> /// Adds a package to the AddOn package list. /// </summary> /// <param name="packageFileName">The file path of the AddOn package file.</param> public void AddPackage(string packageFileName) { //Prepare... AddOnPackageFile package = new AddOnPackageFile(); package.DecompressData += Program.Package_DecompressData; //Load try { package.Load(packageFileName); } catch { } //Extract try { if (package.Entries.Count > 0 && package.Entries.ContainsFilename("Manifest.xml")) { //Load Manifest AddOnManifest manifest = new AddOnManifest(); manifest.LoadXml(package.LoadFile("Manifest.xml")); //Create AddOn addOn = new AddOn(package, manifest); //Add to list... addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true); } } catch (Exception) { } }
/// <summary> /// Adds a package to the AddOn package list. /// </summary> /// <param name="package">The AddOn package file.</param> /// <param name="manifest">The AddOn maniest.</param> public void AddPackage(AddOnPackageFile package, AddOnManifest manifest) { //Create AddOn addOn = new AddOn(package, manifest); //Add to list... addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true); }
private void addPackageButton_Click(object sender, EventArgs e) { //Prepare string filename = string.Empty; bool open = false; //Initialize using (OpenFileDialog openDlg = new OpenFileDialog()) { //Setup openDlg.Filter = "Abide AddOn Packages (*.aao)|*.aao"; openDlg.Title = "Add AddOn Package..."; if (openDlg.ShowDialog() == DialogResult.OK) { filename = openDlg.FileName; open = true; } } //Check if (open) { //Prepare... AddOnPackageFile package = new AddOnPackageFile(); package.DecompressData += Program.Package_DecompressData; //Load try { package.Load(filename); } catch { } //Extract try { if (package.Entries.Count > 0 && package.Entries.ContainsFilename("Manifest.xml")) { //Load Manifest AddOnManifest manifest = new AddOnManifest(); manifest.LoadXml(package.LoadFile("Manifest.xml")); //Create AddOn addOn = new AddOn(package, manifest); //Add to list... addOnsListBox.SetItemChecked(addOnsListBox.Items.Add(addOn), true); } } catch (Exception) { } } }
void newButton_Click(object sender, EventArgs e) { try { using (var fileDialog = new OpenFileDialog()) { fileDialog.Filter = "Zitationsstil-Element (*.xml)|*.xml|Citavi AddOn (*.dll)|*.dll"; if (fileDialog.ShowDialog(this) == DialogResult.OK) { if (fileDialog.FileName.EndsWith(".xml")) { Manifest = new CitationStyleElementManifest(); var doc = XDocument.Load(File.OpenRead(fileDialog.FileName)); Manifest.Id = new Guid(doc.Root.Attributes("id").First().Value); if (doc.Root.Name == "BibliographyGroupingSet") { Manifest.Name = doc.Root.Elements("Name").First().Value; } ManifestPath = Path.Combine(Path.GetDirectoryName(fileDialog.FileName), Path.GetFileNameWithoutExtension(fileDialog.FileName) + ".json"); } else { ManifestPath = Path.Combine(Path.GetDirectoryName(fileDialog.FileName), "manifest.json"); Manifest = new AddOnManifest(); ((AddOnManifest)Manifest).EntryPoint = Path.GetFileName(fileDialog.FileName); var asm = Assembly.LoadFrom(fileDialog.FileName); Manifest.Id = new Guid(((GuidAttribute)asm.GetCustomAttributes(typeof(GuidAttribute), true).First()).Value); ((AddOnManifest)Manifest).SummaryLocalized = new Dictionary <string, string>(); } Manifest.NameLocalized = new Dictionary <string, string>(); Manifest.DescriptionLocalized = new Dictionary <string, string>(); Manifest.Version = new Version(1, 0, 0, 0); Manifest.CitaviMinVersion = new Version(5, 8, 0, 0); Manifest.ManifestVersion = 1; Init(); newButton.Hide(); loadButton.Enabled = false; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void createButton_Click(object sender, EventArgs e) { //Check if (!File.Exists(Path.Combine(root, primaryAssembly))) { return; } if (string.IsNullOrEmpty(nameTextBox.Text)) { return; } if (string.IsNullOrEmpty(root)) { return; } if (!Directory.Exists(root)) { return; } //Prepare AddOnManifest manifest = new AddOnManifest(); string[] files = node_GetFiles(filesTreeView.Nodes); manifest.PrimaryAssemblyFile = primaryAssembly; manifest.Name = nameTextBox.Text; //Loop foreach (string file in files) { //Split... string[] parts = file.Replace(root, string.Empty).Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); manifest.Add(string.Join("\\", parts)); } //Create Package AddOnPackageFile package = new AddOnPackageFile(); package.CompressData += Package_CompressData; //Write using (MemoryStream manifestStream = new MemoryStream()) { //Save manifest.SaveXml(manifestStream); //Create File Entry FileEntry manifestEntry = new FileEntry(manifestStream.ToArray()); manifestEntry.Filename = "Manifest.xml"; manifestEntry.Compression = "GZIP"; manifestEntry.Created = DateTime.Now; manifestEntry.Modified = DateTime.Now; manifestEntry.Accessed = DateTime.Now; //Add Manifest package.Entries.Add(manifestEntry); } //Add foreach (string targetFile in manifest) { package.AddFile(Path.Combine(root, targetFile), targetFile, "GZIP"); } //Save using (SaveFileDialog saveDlg = new SaveFileDialog()) { //Setup saveDlg.Filter = "Abide AddOn Package Files (*.aao)|*.aao"; saveDlg.FileName = manifest.Name; //Show if (saveDlg.ShowDialog() == DialogResult.OK) { package.Save(saveDlg.FileName); } } //OK DialogResult = DialogResult.OK; }
/// <summary> /// Initializes a new <see cref="AddOn"/> instance using the supplied package and AddOn manifest instances. /// </summary> /// <param name="package">The AddOn package file.</param> /// <param name="manifest">The AddOn manifest.</param> public AddOn(AddOnPackageFile package, AddOnManifest manifest) { this.package = package; this.manifest = manifest; }