Esempio n. 1
0
        private void InstallSampleProject()
        {
            if (lstProjectTemplates.SelectedItem != null)
            {
                this.Cursor = Cursors.WaitCursor;
                downloadDialog.Show();

                IPackage pack = lstProjectTemplates.SelectedItem as IPackage;

                var inactiveExtensions = _app.Extensions.Where(a => a.IsActive == false).ToArray();

                IEnumerable <PackageDependency> dependency = pack.Dependencies;
                if (dependency.Count() > 0)
                {
                    foreach (PackageDependency dependentPackage in dependency)
                    {
                        _app.ProgressHandler.Progress(null, 0, "Downloading Dependency " + dependentPackage.Id);
                        downloadDialog.ShowDownloadStatus(dependentPackage);
                        downloadDialog.SetProgressBarPercent(0);
                        downloadDialog.Refresh();

                        var dependentpack = packages.Install(dependentPackage.Id);
                        if (dependentpack == null)
                        {
                            string message = "We cannot download " + dependentPackage.Id + " Please make sure you are connected to the Internet.";
                            MessageBox.Show(message);
                            return;
                        }
                    }
                }

                this._app.ProgressHandler.Progress(null, 0, "Downloading " + pack.Title);
                downloadDialog.ShowDownloadStatus(pack);
                downloadDialog.SetProgressBarPercent(0);
                downloadDialog.Refresh();

                this.packages.Install(pack.Id);

                _app.ProgressHandler.Progress(null, 0, "Installing " + pack.Title);
                // Load the extension.
                _app.RefreshExtensions();
                _app.ProgressHandler.Progress(null, 50, "Installing " + pack.Title);

                // Activate the extension(s) that was installed.
                var extensions = _app.Extensions.Where(a => !inactiveExtensions.Contains(a) && a.IsActive == false);

                if (extensions.Count() > 0 && !_app.EnsureRequiredImportsAreAvailable())
                {
                    return;
                }

                foreach (var item in extensions)
                {
                    item.TryActivate();
                }
                this._app.ProgressHandler.Progress(null, 0, "Ready.");
                downloadDialog.Visible = false;

                UpdateInstalledProjectsList();
                selectDownloadedPackage(pack);
                this.Cursor = Cursors.Default;
            }
        }