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; } }