protected internal override bool Execute() { try { // Modif JPI - Début ReadOnlyCollection <Guid?> featureIds = InstallConfiguration.FeatureIdList; if (featureIds != null && featureIds.Count > 0) { foreach (Guid?featureId in featureIds) { if (featureId != null) { SPFeature feature = FeatureActivator.ActivateOneFeature(SPWebService.AdministrationService.Features, featureId.Value, log); } } } return(true); // Modif JPI - Fin } catch (Exception ex) { throw new InstallException(ex.Message, ex); } }
/// <summary> /// Actually activate/deactivate users specified features on requested web list /// </summary> protected internal override bool Execute() { if (command == WebCommand.Activate) { log.Info(CommonUIStrings.logFeatureActivate); } else { log.Info(CommonUIStrings.logFeatureDeactivate); } ReadOnlyCollection <Guid?> featureIds = InstallConfiguration.FeatureIdList; if (featureIds == null || featureIds.Count == 0) { log.Warn(CommonUIStrings.logNoFeaturesSpecified); return(true); } if (webLocs == null || webLocs.Count == 0) { // caller responsible for giving message, depending on operation (install, upgrade,...) return(true); } try { foreach (WebLoc webLoc in webLocs) { SPSite siteCollection = null; SPWeb web = null; try { siteCollection = new SPSite(webLoc.siteInfo.SiteId); web = siteCollection.OpenWeb(webLoc.WebId); foreach (Guid?featureId in webLoc.featureList) { if (featureId == null) { continue; } if (command == WebCommand.Activate) { FeatureActivator.ActivateOneFeature(web.Features, featureId.Value, log); if (!FeatureActivator.IsFeatureActivatedOnWeb(web, featureId.Value)) { // do not add to completedLocs, b/c it didn't complete log.Warn("Activation failed on " + web.Url + " : " + GetFeatureName(featureId)); } else { completedLocs.Add(webLoc); log.Info(web.Url + " : " + GetFeatureName(featureId)); } } else { web.Features.Remove(featureId.Value, true); completedLocs.Add(webLoc); log.Info(web.Url + " : " + GetFeatureName(featureId)); } } } catch (Exception exc) { if (rollback) { // during rollback simply log errors and continue string message; if (command == WebCommand.Activate) { message = "Activating feature(s)"; } else { message = "Deactivating feature(s)"; } log.Error(message, exc); } else { throw exc; } } finally { // guarantee SPWeb is released ASAP even in face of exception if (web != null) { web.Dispose(); } // guarantee SPSite is released ASAP even in face of exception if (siteCollection != null) { siteCollection.Dispose(); } } } } catch (Exception ex) { log.Error(ex.Message, ex); } return(true); }
/// <summary> /// Actually activate/deactivate users specified features on requested site collection list /// </summary> protected internal override bool Execute() { if (command == SiteCollectionCommand.Activate) { log.Info(CommonUIStrings.logFeatureActivate); } else { log.Info(CommonUIStrings.logFeatureDeactivate); } ReadOnlyCollection <Guid?> featureIds = InstallConfiguration.FeatureIdList; if (featureIds == null || featureIds.Count == 0) { log.Warn(CommonUIStrings.logNoFeaturesSpecified); return(true); } if (siteCollectionLocs == null || siteCollectionLocs.Count == 0) { // caller responsible for giving message, depending on operation (install, upgrade,...) return(true); } try { foreach (SiteLoc siteLoc in siteCollectionLocs) { SPSite siteCollection = null; try { siteCollection = new SPSite(siteLoc.SiteId); foreach (Guid?featureId in siteLoc.featureList) { if (featureId == null) { continue; } if (command == SiteCollectionCommand.Activate) { FeatureActivator.ActivateOneFeature(siteCollection.Features, featureId.Value, log); if (!FeatureActivator.IsFeatureActivatedOnSite(siteCollection, featureId.Value)) { // do not add to completedLocs, b/c it didn't complete log.Warn("Activation failed on " + siteCollection.Url + " : " + GetFeatureName(featureId)); } else { completedLocs.Add(siteLoc); log.Info(siteCollection.Url + " : " + GetFeatureName(featureId)); } } else { siteCollection.Features.Remove(featureId.Value, true); completedLocs.Add(siteLoc); log.Info(siteCollection.Url + " : " + GetFeatureName(featureId)); } } } catch (Exception exc) { if (rollback) { // during rollback simply log errors and continue string message; if (command == SiteCollectionCommand.Activate) { message = "Activating feature(s)"; } else { message = "Deactivating feature(s)"; } log.Error(message, exc); } else { log.Error(siteCollection.Url); throw exc; } } finally { // guarantee SPSite is released ASAP even in face of exception if (siteCollection != null) { siteCollection.Dispose(); } } } return(true); } catch (Exception exc) { if (rollback) { log.Error("Error during rollback", exc); return(false); } rollback = true; // rollback work accomplished so far if (command == SiteCollectionCommand.Activate) { DeactivateSiteCollectionFeatureCommand reverseCommand = new DeactivateSiteCollectionFeatureCommand(this.Parent, completedLocs); reverseCommand.Execute(); } else { ActivateSiteCollectionFeatureCommand reverseCommand = new ActivateSiteCollectionFeatureCommand(this.Parent, completedLocs); reverseCommand.Execute(); } throw exc; } }