private static ApplicationList FromXml(XmlReader reader)
        {
            ApplicationList list = new ApplicationList();

            // Read through the root node
            reader.ReadStartElement();

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.Name.Equals(Resources.Application) && !reader.IsEmptyElement)
                    {
                        ApplicationItem ai = ApplicationItem.FromXml(reader);
                        list.XmlErrors.AddRange(ai.XmlErrors);
                        list.applicationItems.Add(ai);
                    }
                    else if (reader.Name.Equals(Resources.InstallationOptions) && !reader.IsEmptyElement)
                    {
                        list.installationOptions = InstallationOptions.FromXml(reader);
                        list.XmlErrors.AddRange(list.installationOptions.XmlErrors);
                    }
                    else
                    {
                        list.XmlErrors.Add(String.Format("{0}: \"{1}\"", Resources.AppListXmlUnknown, reader.Name));
                    }
                }
            }
            return(list);
        }
        /// <summary>
        /// Initialize with an application item
        /// </summary>
        /// <param name="item"></param>
        public ApplicationDialog(ApplicationItem item)
        {
            InitializeComponent();
            this.applicationItem       = item;
            this.ApplicationName       = item.Name;
            this.DownloadUrl           = item.DownloadUrl;
            this.DownloadLatestVersion = item.Options.DownloadLatestVersion;
            this.SilentInstall         = item.Options.SilentInstall;
            this.InstallerArguments    = item.Options.InstallerArguments;
            this.Comment          = item.Comment;
            this.CheckedByDefault = item.Options.CheckedByDefault;
            this.InstallationRoot = item.Options.InstallationRoot;

            // if no app specific installation root, default to applist.installationroot.
            if (this.InstallationRoot == null || this.InstallationRoot.Length == 0)
            {
                this.InstallationRoot = InstallPadApp.AppList.InstallationOptions.InstallationRoot;
                // but preferences overrides applist installation options!
                if (InstallPadApp.Preferences.InstallationRoot != string.Empty)
                {
                    this.InstallationRoot = InstallPadApp.Preferences.InstallationRoot;
                }
            }

            Init();
        }
        /// <summary>
        /// Creates a list item and listens to its events
        /// </summary>
        /// <param name="?"></param>
        /// <returns></returns>
        private ApplicationListItem CreateApplicationListItem(ApplicationItem item)
        {
            ApplicationListItem listItem = new ApplicationListItem(item);

            listItem.FinishedDownloading  += new EventHandler(HandleFinishedDownloading);
            listItem.FinishedInstalling   += new EventHandler(HandleFinishedInstalling);
            listItem.FinishedUnInstalling += new EventHandler(HandleFinishedUnInstalling);
            return(listItem);
        }
        private void saveButton_Click(object sender, EventArgs e)
        {
            this.saved = true;

            // If this wasn't used to edit an ApplicationItem, create a new one
            if (this.applicationItem == null)
            {
                this.applicationItem = new ApplicationItem();
            }

            ModifyApplicationItemFromDialog(this.applicationItem);

            this.Close();
        }
Exemple #5
0
        private static string ArgumentsForSilentInstall(ApplicationItem application)
        {
            // Coding in special rules here for apps. Each of these special rules should be moved
            // to another class, or a seperate file. Make sure there is a space before the command line arguments.

            // TODO: externalize this information. Put it in a .ini or .config file accessible by users?
            // Each rule should be on its own line; first, a regex to match the application name, and next to it,
            // the installer arguments that pertain to that app

            if (application.FileName.ToLower().EndsWith(".msi"))
            {
                return("/qn");
            }
            else if (application.FileName.ToLower().Contains("firefox"))
            {
                return("-ms");
            }
            else if (application.FileName.ToLower().Contains("itunessetup"))
            {
                // Args are: /s /v"SILENT_INSTALL=1 ALLUSERS=1 /qb"
                //return "/s /v\"SILENT_INSTALL=1 ALLUSERS=1 /qb\"";

                // Above is for the older iTunes. Newer itunes is just an exe that extracts to an msi.
                return("/qn");
            }
            else if (application.FileName.ToLower().Contains("quicktimeinstaller"))
            {
                // QuickTime is just an MSI, like iTunes
                return("/qn");
            }
            else if (application.FileName.ToLower().Contains("spybot"))
            {
                return("/VERYSILENT");
            }
            else if (application.FileName.ToLower().Contains("adberdr"))
            {
                // Adobe Acrobat Reader. Argh adobe...
                return("/S /w /v\"/qb-! /norestart EULA_ACCEPT=YES\"");
            }
            else
            {
                // This will work for most installers - /S for nullsoft installers, and -s for InstallShield
                return("/S -s");
            }
        }
        public void ModifyApplicationItemFromDialog(ApplicationItem item)
        {
            item.Name        = this.ApplicationName;
            item.DownloadUrl = this.DownloadUrl;
            item.Comment     = this.Comment;
            item.Options.DownloadLatestVersion = this.DownloadLatestVersion;
            item.Options.SilentInstall         = this.SilentInstall;
            item.Options.InstallerArguments    = this.InstallerArguments;
            item.Options.CheckedByDefault      = this.CheckedByDefault;

            item.DetectVersion();

            // Setting InstallationRoot is disabled for now until the rules are decided.
            // Could allow setting Options, but probably wouldn't want to allow setting
            // AppList, and\or Preferences.  Might be confusing either way.

            // Maybe there should be no GUI for installation root except via preferences.
        }
        /// <summary>
        /// Initialize this with the information from an ApplicationItem
        /// </summary>
        /// <param name="application"></param>
        public ApplicationListItem(ApplicationItem application)
            : this()
        {
            this.ApplicationItem = application;
            this.Controls.Add(downloadErrorBox);
            AddErrorBoxes();

            downloader = new FileDownloader();
            ProxyOptions options = InstallPadApp.AppList.InstallationOptions.ProxyOptions;

            if (options != null)
            {
                downloader.Proxy = options.ProxyFromOptions();
            }

            downloader.ProgressChanged  += new DownloadProgressHandler(downloader_ProgressChanged);
            downloader.DownloadComplete += new EventHandler(downloader_DownloadComplete);

            this.Checked = this.ApplicationItem.Options.CheckedByDefault;
            this.labelName.MouseClick += new MouseEventHandler(labelName_MouseClick);
        }
        /// <summary>
        /// Initialize with an application item
        /// </summary>
        /// <param name="item"></param>
        public ApplicationDialog(ApplicationItem item)
        {
            InitializeComponent();
            this.applicationItem = item;
            this.ApplicationName = item.Name;
            this.DownloadUrl = item.DownloadUrl;
            this.DownloadLatestVersion = item.Options.DownloadLatestVersion;
            this.SilentInstall = item.Options.SilentInstall;
            this.InstallerArguments = item.Options.InstallerArguments;
            this.Comment = item.Comment;
            this.CheckedByDefault = item.Options.CheckedByDefault;
            this.InstallationRoot = item.Options.InstallationRoot;

            // if no app specific installation root, default to applist.installationroot.
            if (this.InstallationRoot==null || this.InstallationRoot.Length == 0)
            {
                this.InstallationRoot = InstallPadApp.AppList.InstallationOptions.InstallationRoot;
                // but preferences overrides applist installation options!
                if (InstallPadApp.Preferences.InstallationRoot != string.Empty)
                    this.InstallationRoot = InstallPadApp.Preferences.InstallationRoot;
            }

            Init();
        }
        public static ApplicationItem FromXml(XmlReader reader)
        {
            ApplicationItem item = new ApplicationItem();

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name == Resources.Name)
                    {
                        if (reader.IsEmptyElement == false)
                        {
                            item.Name = reader.ReadString();
                            reader.ReadEndElement();
                        }
                    }
                    else if (reader.Name == Resources.FileUrl)
                    {
                        if (reader.IsEmptyElement == false)
                        {
                            item.DownloadUrl = reader.ReadString();
                            reader.ReadEndElement();
                        }
                    }
                    else if (reader.Name == Resources.Comment)
                    {
                        if (reader.IsEmptyElement == false)
                        {
                            item.Comment = reader.ReadString();
                            reader.ReadEndElement();
                        }
                    }
                    // Get the HomePage URL and link Caption.
                    else if (reader.Name == Resources.HomePageUrl)
                    {
                        if (reader.IsEmptyElement == false)
                        {
                            item.HomePageUrl = reader.ReadString();
                            reader.ReadEndElement();
                        }
                    }
                    else if (reader.Name == Resources.Options)
                    {
                        item.Options = ApplicationItemOptions.FromXml(reader);
                        item.XmlErrors.AddRange(item.options.XmlErrors);
                    }
                    else
                    {
                        item.XmlErrors.Add(
                            String.Format("{0}: \"{1}\"", Resources.AppListUnknownElement, reader.Name));
                    }
                    break;

                case XmlNodeType.EndElement:
                    if (reader.Name == Resources.Application)
                    {
                        item.DetectVersion();
                        return(item);
                    }
                    break;
                }
            }
            item.DetectVersion();
            return(item);
        }
Exemple #10
0
 /// <summary>
 /// Creates a list item and listens to its events
 /// </summary>
 /// <param name="?"></param>
 /// <returns></returns>
 private ApplicationListItem CreateApplicationListItem(ApplicationItem item)
 {
     ApplicationListItem listItem = new ApplicationListItem(item);
     listItem.FinishedDownloading += new EventHandler(HandleFinishedDownloading);
     listItem.FinishedInstalling += new EventHandler(HandleFinishedInstalling);
     listItem.FinishedUnInstalling += new EventHandler(HandleFinishedUnInstalling);
     return listItem;
 }
        public static ApplicationItem FromXml(XmlReader reader)
        {
            ApplicationItem item = new ApplicationItem();

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        if (reader.Name == Resources.Name)
                        {
                            if (reader.IsEmptyElement == false)
                            {
                                item.Name = reader.ReadString();
                                reader.ReadEndElement();
                            }
                        }
                        else if (reader.Name == Resources.FileUrl)
                        {
                            if (reader.IsEmptyElement == false)
                            {
                                item.DownloadUrl = reader.ReadString();
                                reader.ReadEndElement();
                            }
                        }
                        else if (reader.Name == Resources.Comment)
                        {
                            if (reader.IsEmptyElement == false)
                            {
                                item.Comment = reader.ReadString();
                                reader.ReadEndElement();
                            }
                        }
                        // Get the HomePage URL and link Caption.
                        else if (reader.Name == Resources.HomePageUrl)
                        {
                            if (reader.IsEmptyElement == false)
                            {
                                item.HomePageUrl = reader.ReadString();
                                reader.ReadEndElement();
                            }
                        }
                        else if (reader.Name == Resources.Options)
                        {
                            item.Options = ApplicationItemOptions.FromXml(reader);
                            item.XmlErrors.AddRange(item.options.XmlErrors);
                        }
                        else
                        {
                            item.XmlErrors.Add(
                                String.Format("{0}: \"{1}\"", Resources.AppListUnknownElement, reader.Name));
                        }
                        break;
                    case XmlNodeType.EndElement:
                        if (reader.Name == Resources.Application)
                        {
                            item.DetectVersion();
                            return item;
                        }
                        break;
                }
            }
            item.DetectVersion();
            return item;
        }
        public void ModifyApplicationItemFromDialog(ApplicationItem item)
        {
            item.Name = this.ApplicationName;
            item.DownloadUrl = this.DownloadUrl;
            item.Comment = this.Comment;
            item.Options.DownloadLatestVersion = this.DownloadLatestVersion;
            item.Options.SilentInstall = this.SilentInstall;
            item.Options.InstallerArguments = this.InstallerArguments;
            item.Options.CheckedByDefault = this.CheckedByDefault;

            item.DetectVersion();

            // Setting InstallationRoot is disabled for now until the rules are decided.
            // Could allow setting Options, but probably wouldn't want to allow setting
            // AppList, and\or Preferences.  Might be confusing either way.

            // Maybe there should be no GUI for installation root except via preferences.
        }
        private void saveButton_Click(object sender, EventArgs e)
        {
            this.saved = true;

            // If this wasn't used to edit an ApplicationItem, create a new one
            if (this.applicationItem == null)
                this.applicationItem = new ApplicationItem();

            ModifyApplicationItemFromDialog(this.applicationItem);
            
            this.Close();
        }
        /// <summary>
        /// Initialize this with the information from an ApplicationItem
        /// </summary>
        /// <param name="application"></param>
        public ApplicationListItem(ApplicationItem application)
            : this()
        {
            this.ApplicationItem = application;
            this.Controls.Add(downloadErrorBox);
            AddErrorBoxes();

            downloader = new FileDownloader();
            ProxyOptions options = InstallPadApp.AppList.InstallationOptions.ProxyOptions;
            if (options != null)
                downloader.Proxy = options.ProxyFromOptions();

            downloader.ProgressChanged += new DownloadProgressHandler(downloader_ProgressChanged);
            downloader.DownloadComplete += new EventHandler(downloader_DownloadComplete);

            this.Checked = this.ApplicationItem.Options.CheckedByDefault;
            this.labelName.MouseClick += new MouseEventHandler(labelName_MouseClick);
        }
        private static string ArgumentsForSilentInstall(ApplicationItem application)
        {
            // Coding in special rules here for apps. Each of these special rules should be moved
            // to another class, or a seperate file. Make sure there is a space before the command line arguments.

            // TODO: externalize this information. Put it in a .ini or .config file accessible by users?
            // Each rule should be on its own line; first, a regex to match the application name, and next to it,
            // the installer arguments that pertain to that app

            if (application.FileName.ToLower().EndsWith(".msi"))
            {
                return "/qn";
            }else if (application.FileName.ToLower().Contains("firefox"))
                return "-ms";
            else if (application.FileName.ToLower().Contains("itunessetup"))
            {
                // Args are: /s /v"SILENT_INSTALL=1 ALLUSERS=1 /qb"
                //return "/s /v\"SILENT_INSTALL=1 ALLUSERS=1 /qb\"";

                // Above is for the older iTunes. Newer itunes is just an exe that extracts to an msi.
                return "/qn";
            }
            else if (application.FileName.ToLower().Contains("quicktimeinstaller"))
            {
                // QuickTime is just an MSI, like iTunes
                return "/qn";
            }
            else if (application.FileName.ToLower().Contains("spybot"))
            {
                return "/VERYSILENT";
            }
            else if (application.FileName.ToLower().Contains("adberdr"))
            {
                // Adobe Acrobat Reader. Argh adobe...
                return "/S /w /v\"/qb-! /norestart EULA_ACCEPT=YES\"";
            }
            else
                // This will work for most installers - /S for nullsoft installers, and -s for InstallShield
                return "/S -s";
        }