private void addOnsListBox_DragDrop(object sender, DragEventArgs e) { //Prepare AddOnPackageFile package = new AddOnPackageFile(); string[] files = null; FileInfo info = null; //Check if (e.Data.GetDataPresent(DataFormats.FileDrop)) { //Get Files files = (string[])e.Data.GetData(DataFormats.FileDrop); //Loop foreach (string file in files) { //Get Info info = new FileInfo(file); //Check if (info.Extension == ".aao") { AddPackage(file); } } } }
/// <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) { } } }
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; }
private static void Main_Continue() { //Prepare AddOnInstaller addOnInstaller = null; FileInfo info = null; //Loop through files foreach (string filename in files) { //Initialize info = new FileInfo(filename); if (info.Extension == ".aao") //Check Extension { //Prepare... AddOnPackageFile package = new AddOnPackageFile(); package.DecompressData += Package_DecompressData; //Load try { package.Load(filename); } catch { } //Extract try { if (package.Entries.Count > 0 && package.Entries.ContainsFilename("Manifest.xml")) { //Create? if (addOnInstaller == null) { addOnInstaller = new AddOnInstaller(); } //Load Manifest AddOnManifest manifest = new AddOnManifest(); manifest.LoadXml(package.LoadFile("Manifest.xml")); //Add addOnInstaller.AddPackage(package, manifest); } } catch (Exception) { } } } //Check... if (addOnInstaller != null) { mainForm = addOnInstaller; } else { foreach (string assembly in addOnAssemblies) { if (safeMode) { addOns.AddAssemblySafe(assembly); } else { addOns.AddAssembly(assembly); } } } //Check Main Form if (mainForm == null) { mainForm = new Main(); } //Run Main App Application.Run(mainForm); }