예제 #1
0
 void NewPackage()
 {
     this.Text           = Program.AppTitle + " (Untitled)";
     CurrentFile         = "";
     Package             = new PKGRootData();
     Package.Folders     = new List <PKGFolder>();
     Package.Files       = new List <PKGFile>();
     Package.Description = "";
     Package.Title       = "new package";
     Package.HeaderID    = "FoxPackageScriptV1";
     Package.Outputfile  = "New Package.foxpkg";
     Package.Script      = Resources.PackageScriptTemplate;
     Package.PackageID   = Guid.NewGuid().ToString();
     Package.NoReceipt   = false;
     Package.VersionID   = 1;
     PackageDataUtilities.AddNewFolder(Package, "%SYSTEMROOT%");
     PackageDataUtilities.AddNewFolder(Package, "%SYSTEMROOT%\\SYSTEM32");
     PackageDataUtilities.AddNewFolder(Package, "%USERPROFILE%");
     PackageDataUtilities.AddNewFolder(Package, "%TEMP%");
     PackageDataUtilities.AddNewFolder(Package, "%PUBLIC%");
     PackageDataUtilities.AddNewFolder(Package, "%PROGRAMFILES%");
     PackageDataUtilities.AddNewFolder(Package, "%PROGRAMDATA%");
     PackageDataUtilities.AddNewFolder(Package, "%LOCALAPPDATA%");
     PackageDataUtilities.AddNewFolder(Package, "%APPDATA%");
     PackageDataUtilities.AddNewFolder(Package, "%COMMONPROGRAMFILES%");
     PackageDataUtilities.AddNewFolder(Package, "%INSTALLPATH%");
     Directory.SetCurrentDirectory(Program.AppPath);
 }
예제 #2
0
 public static PKGFolder Findfolder(PKGRootData Package, string Folder)
 {
     foreach (PKGFolder fldr in Package.Folders)
     {
         if (fldr.FolderName.ToLower() == Folder.ToLower())
         {
             return(fldr);
         }
     }
     return(null);
 }
예제 #3
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (AskSave() == false)
            {
                return;
            }

            OpenFileDialog cmdlg = new OpenFileDialog();

            cmdlg.Title           = "Open Package Script";
            cmdlg.Filter          = "Fox Package Script|*.foxps";
            cmdlg.DefaultExt      = ".foxps";
            cmdlg.CheckPathExists = true;
            cmdlg.CheckFileExists = true;
            if (cmdlg.ShowDialog(this) != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            string data = "";

            try
            {
                data = File.ReadAllText(cmdlg.FileName, Encoding.UTF8);
                Directory.SetCurrentDirectory(Path.GetDirectoryName(cmdlg.FileName));
            }
            catch (Exception ee)
            {
                MessageBox.Show(this, "Cannot read the file \n" + cmdlg.FileName + "\n" + ee.Message, Program.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            try
            {
                PKGRootData r = JsonConvert.DeserializeObject <PKGRootData>(data);
                if (r.HeaderID != "FoxPackageScriptV1")
                {
                    MessageBox.Show(this, "The file " + cmdlg.FileName + " is not a valid Package Script", Program.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                Package     = r;
                CurrentFile = cmdlg.FileName;
                this.Text   = Program.AppTitle + " (" + CurrentFile + ")";
                LoadPackage();
            }
            catch (Exception ee)
            {
                Debug.WriteLine(ee.ToString());
                MessageBox.Show(this, "The file " + cmdlg.FileName + " cannot be parsed.", Program.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
        }
예제 #4
0
        public static void AddNewFile(PKGRootData Package, PKGFile file)
        {
            if (file.FileName.Trim() == "")
            {
                return;
            }

            if (file.SrcFile.Trim() == "")
            {
                return;
            }

            if (file.FolderName.EndsWith("\\") == false)
            {
                file.FolderName += "\\";
            }

            AddNewFolder(Package, file.FolderName);
            Package.Files.Add(file);
        }
예제 #5
0
        public static void AddNewFolder(PKGRootData Package, string FullFoldername)
        {
            if (FullFoldername.EndsWith("\\") == false)
            {
                FullFoldername += "\\";
            }

            foreach (PKGFolder f in Package.Folders)
            {
                if (f.FolderName.Trim().ToLower() == FullFoldername.Trim().ToLower())
                {
                    return;
                }
            }

            Debug.WriteLine("MKDIR: " + FullFoldername);
            PKGFolder nf = new PKGFolder();

            nf.FolderName = FullFoldername.Trim();
            Package.Folders.Add(nf);
        }
예제 #6
0
        public static void DeleteFolder(PKGRootData Package, string FullFoldername)
        {
            Debug.WriteLine("DELTREE: " + FullFoldername);
            if (FullFoldername.EndsWith("\\") == false)
            {
                FullFoldername += "\\";
            }

            List <PKGFolder> RM  = new List <PKGFolder>();
            List <PKGFile>   RM2 = new List <PKGFile>();

            foreach (PKGFolder f in Package.Folders)
            {
                if (f.FolderName.ToLower().StartsWith(FullFoldername.ToLower()) == true)
                {
                    RM.Add(f);
                }
            }

            foreach (PKGFile f in Package.Files)
            {
                if (f.FolderName.ToLower().StartsWith(FullFoldername.ToLower()) == true)
                {
                    RM2.Add(f);
                }
            }

            foreach (PKGFolder f in RM)
            {
                Package.Folders.Remove(f);
            }

            foreach (PKGFile f in RM2)
            {
                Package.Files.Remove(f);
            }
        }
예제 #7
0
        public static void RenameFolder(PKGRootData Package, string FullFoldername, string NewName)
        {
            Debug.WriteLine("REN: " + FullFoldername + " => " + NewName);
            if (FullFoldername.EndsWith("\\") == true)
            {
                FullFoldername = FullFoldername.Substring(0, FullFoldername.Length - 1);
            }
            string FullNewName = "";

            if (FullFoldername.LastIndexOf("\\") == -1)
            {
                FullNewName = NewName;
            }
            else
            {
                FullNewName = FullFoldername.Substring(0, FullFoldername.LastIndexOf("\\")) + "\\" + NewName;
            }

            Debug.WriteLine("RENF: " + FullFoldername + " => " + FullNewName);

            foreach (PKGFolder f in Package.Folders)
            {
                if (f.FolderName.StartsWith(FullFoldername) == true)
                {
                    f.FolderName = FullNewName + f.FolderName.Substring(FullFoldername.Length, f.FolderName.Length - FullFoldername.Length);
                }
            }

            foreach (PKGFile f in Package.Files)
            {
                if (f.FolderName.StartsWith(FullFoldername) == true)
                {
                    f.FolderName = FullNewName + f.FolderName.Substring(FullFoldername.Length, f.FolderName.Length - FullFoldername.Length);
                }
            }
        }
예제 #8
0
 public frmCompilePackage(PKGRootData package)
 {
     Package = package;
     InitializeComponent();
 }