Console Application Code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.SharePoint;
using System.Configuration;
using Microsoft.SharePoint.Administration;
namespace FeatureActivation
{
class Program
{
private static StreamWriter logWriter;
private static Guid FeatureGUID;
static void Main(string[] args)
{
logWriter = new StreamWriter("FeatureActivationLog.txt");
string strWebApplicationName = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["WebApplicationName"]);
FeatureGUID = new Guid(Convert.ToString(ConfigurationManager.AppSettings["FeatureID"]));
string strDeploymentType = Convert.ToString(ConfigurationManager.AppSettings["DeploymentType"]);
string strFeatureType = Convert.ToString(ConfigurationManager.AppSettings["FeatureType"]);
int siteCollectionCount = 0;
int siteCount = 0;
int webCount = 0;
DateTime startTime;
DateTime endTime;
if (string.IsNullOrEmpty(strWebApplicationName))
{
Console.WriteLine("Configuration Error");
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}
else
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if (strDeploymentType.ToLower() == "deploy")
{
if (!IsFeatureInstall())
{
Console.WriteLine("Feature is not installed");
logWriter.WriteLine("Feature is not installed");
logWriter.WriteLine("==========================================================================");
return;
}
}
if (strFeatureType.ToLower() == "site")
{
using (SPSite objSite = new SPSite(strWebApplicationName))
{
SPSiteCollection objSiteCollection = objSite.WebApplication.Sites;
if (objSiteCollection != null && objSiteCollection.Count > 0)
{
startTime = DateTime.Now;
foreach (SPSite objTempSite in objSiteCollection)
{
siteCollectionCount++;
try
{
if (strDeploymentType.ToLower() == "deploy")
{
ActivateSiteFeature(objTempSite);
Console.WriteLine("Activate feature for " + objTempSite.Url);
logWriter.WriteLine("Activate feature for " + objTempSite.Url);
logWriter.WriteLine("==========================================================================");
}
else if (strDeploymentType.ToLower() == "rollback")
{
DeactivateSiteFeature(objTempSite);
Console.WriteLine("Deactivate feature for " + objTempSite.Url);
logWriter.WriteLine("Deactivate feature for " + objTempSite.Url);
logWriter.WriteLine("==========================================================================");
}
else
{
logWriter.WriteLine("Unknown Deployment Type");
logWriter.WriteLine("==========================================================================");
Console.WriteLine("Unknown Deployment Type");
}
}
catch (Exception ex)
{
Console.WriteLine("Error : Resetting feature for " + objTempSite.Url);
logWriter.WriteLine("Error : Resetting feature for " + objTempSite.Url + " Error Message is " + ex.StackTrace, ex.Message, ex.InnerException, ex.Source);
logWriter.WriteLine("==========================================================================");
}
objTempSite.Close();
}
endTime = DateTime.Now;
logWriter.WriteLine("**********************SUMMARY*****************************");
Console.WriteLine("Total Number Of SiteCollection for " + strWebApplicationName + " is " + siteCollectionCount);
logWriter.WriteLine("Total Number Of SiteCollection for " + strWebApplicationName + " is " + siteCollectionCount);
Console.WriteLine("Start Time Of " + strWebApplicationName + " is " + startTime.ToString());
logWriter.WriteLine("Start Time Of " + strWebApplicationName + " is " + startTime.ToString());
Console.WriteLine("End Time Of " + strWebApplicationName + " is " + endTime.ToString());
logWriter.WriteLine("End Time Of " + strWebApplicationName + " is " + endTime.ToString());
logWriter.Close();
}
}
}
else if (strFeatureType.ToLower() == "web")
{
using (SPSite objSite = new SPSite(strWebApplicationName))
{
SPSiteCollection objSiteCollection = objSite.WebApplication.Sites;
if (objSiteCollection != null && objSiteCollection.Count > 0)
{
startTime = DateTime.Now;
foreach (SPSite objTempSite in objSiteCollection)
{
siteCollectionCount++;
foreach (SPWeb objTempWeb in objTempSite.AllWebs)
{
webCount++;
try
{
if (strDeploymentType.ToLower() == "deploy")
{
ActivateWebFeature(objTempWeb);
Console.WriteLine("Activate feature for " + objTempWeb.Url);
logWriter.WriteLine("Activate feature for " + objTempWeb.Url);
logWriter.WriteLine("==========================================================================");
}
else if (strDeploymentType.ToLower() == "rollback")
{
DeactivateWebFeature(objTempWeb);
Console.WriteLine("Deactivate feature for " + objTempWeb.Url);
logWriter.WriteLine("Deactivate feature for " + objTempWeb.Url);
logWriter.WriteLine("==========================================================================");
}
else
{
logWriter.WriteLine("Unknown Deployment Type");
logWriter.WriteLine("==========================================================================");
Console.WriteLine("Unknown Deployment Type");
}
}
catch (Exception ex)
{
Console.WriteLine("Error : Resetting feature for " + objTempWeb.Url);
logWriter.WriteLine("Error : Resetting feature for " + objTempWeb.Url + " Error Message is " + ex.StackTrace, ex.Message, ex.InnerException, ex.Source);
logWriter.WriteLine("==========================================================================");
}
objTempWeb.Close();
}
objTempSite.Close();
}
endTime = DateTime.Now;
logWriter.WriteLine("**********************SUMMARY*****************************");
Console.WriteLine("Total Number Of SiteCollection for " + strWebApplicationName + " is " + siteCollectionCount);
logWriter.WriteLine("Total Number Of SiteCollection for " + strWebApplicationName + " is " + siteCollectionCount);
Console.WriteLine("Total Number Of Web for " + strWebApplicationName + " is " + webCount);
logWriter.WriteLine("Total Number Of Web for " + strWebApplicationName + " is " + webCount);
Console.WriteLine("Start Time Of " + strWebApplicationName + " is " + startTime.ToString());
logWriter.WriteLine("Start Time Of " + strWebApplicationName + " is " + startTime.ToString());
Console.WriteLine("End Time Of " + strWebApplicationName + " is " + endTime.ToString());
logWriter.WriteLine("End Time Of " + strWebApplicationName + " is " + endTime.ToString());
logWriter.Close();
}
}
}
else
{
logWriter.WriteLine("Unknown Feature Type");
logWriter.WriteLine("==========================================================================");
Console.WriteLine("Unknown Feature Type");
}
});
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}
}
private static bool IsFeatureInstall()
{
bool bFound = false;
//Finds the feature definition.
foreach (SPFeatureDefinition featureDef in SPFarm.Local.FeatureDefinitions)
{
try
{
if (featureDef.Id.Equals(FeatureGUID))
{
bFound = true;
break;
}
}
catch (Exception ex)
{
//This is failing if feature is installed and feature file is not there
//we have to ignore this exception
}
}
return bFound;
}
private static void ActivateSiteFeature(SPSite objSite)
{
bool bActive = false;
//Checks whether the user is activated already.
foreach (SPFeature feature in objSite.Features)
{
if (feature.DefinitionId.Equals(FeatureGUID))
{
bActive = true;
break;
}
}
if (!bActive)
{
objSite.Features.Add(FeatureGUID);
}
}
private static void DeactivateSiteFeature(SPSite objSite)
{
bool bActive = false;
//Checks whether the user is activated already.
foreach (SPFeature feature in objSite.Features)
{
if (feature.DefinitionId.Equals(FeatureGUID))
{
bActive = true;
break;
}
}
if (bActive)
{
objSite.Features.Remove(FeatureGUID);
}
}
private static void ActivateWebFeature(SPWeb objWeb)
{
bool bActive = false;
//Checks whether the user is activated already.
foreach (SPFeature feature in objWeb.Features)
{
if (feature.DefinitionId.Equals(FeatureGUID))
{
bActive = true;
break;
}
}
if (!bActive)
{
objWeb.Features.Add(FeatureGUID);
}
}
private static void DeactivateWebFeature(SPWeb objWeb)
{
bool bActive = false;
//Checks whether the user is activated already.
foreach (SPFeature feature in objWeb.Features)
{
if (feature.DefinitionId.Equals(FeatureGUID))
{
bActive = true;
break;
}
}
if (bActive)
{
objWeb.Features.Remove(FeatureGUID);
}
}
}
}
No comments:
Post a Comment