Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <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) { }
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        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) { }
            }
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
 /// <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;
 }
Exemplo n.º 7
0
        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);
        }