public static bool CMPServerPostinstallProcessor() { bool returnValue = true; try { if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.Uninstall)) { String currentSetupUser = String.Format(SetupConstants.UserAccountTemplate, Environment.UserDomainName, Environment.UserName); SetupInputs.Instance.EditItem(SetupInputTags.SetupUserAccountTag, currentSetupUser); SetupDatabaseHelper.CheckDatabase( InstallItemCustomDelegates.GetSQLServerInstanceNameStr(false), SetupInputs.Instance.FindItem(SetupInputTags.SqlDatabaseNameTag), false); SetupDatabaseHelper.CreateDB(false); if (SetupInputs.Instance.FindItem(SetupInputTags.RemoteDatabaseImpersonationTag)) { SetupDatabaseHelper.GrantSetupUserDBAccess(true, false); SetupInputs.Instance.EditItem(SetupInputTags.RemoteDatabaseImpersonationTag, false); PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.AfterGrantSetupUserDBAccess, true); } ServiceConfigurationHandler serviceConfigurationHandler = new ServiceConfigurationHandler(); CmpWorkerServiceHelper.ConfigureCMPWorkerService(serviceConfigurationHandler); serviceConfigurationHandler.StartService(SetupConstants.EngineServiceName); } } catch (Exception exception) { SetupLogger.LogException(exception, "CMPServerPostinstallProcessor threw an exception"); PropertyBagDictionary.Instance.SafeAdd(PropertyBagDictionary.VitalFailure, (PropertyBagDictionary.Instance.PropertyExists(PropertyBagDictionary.VitalFailure) ? (PropertyBagDictionary.Instance.GetProperty <InstallItemsInstallDataItem.InstallDataInputs> (PropertyBagDictionary.VitalFailure) | InstallItemsInstallDataItem.InstallDataInputs.PostInstallItem) : InstallItemsInstallDataItem.InstallDataInputs.PostInstallItem)); if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.FailureReason)) { PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.FailureReason, exception); } returnValue = false; } return(returnValue); }
public static bool WAPExtensionCommonPostIstallProcessor() { SetupLogger.LogInfo("WAPExtensionPostIstallProcessor: Entered."); bool returnValue = true; try { if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.Uninstall)) { String currentSetupUser = String.Format(SetupConstants.UserAccountTemplate, Environment.UserDomainName, Environment.UserName); SetupInputs.Instance.EditItem(SetupInputTags.SetupUserAccountTag, currentSetupUser); SetupDatabaseHelper.CheckDatabase( InstallItemCustomDelegates.GetSQLServerInstanceNameStr(true), SetupInputs.Instance.FindItem(SetupInputTags.WapSqlDatabaseNameTag), true); SetupDatabaseHelper.CreateDB(true); if (SetupInputs.Instance.FindItem(SetupInputTags.WapRemoteDatabaseImpersonationTag)) { SetupDatabaseHelper.GrantSetupUserDBAccess(true, true); SetupInputs.Instance.EditItem(SetupInputTags.WapRemoteDatabaseImpersonationTag, false); PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.WapAfterGrantSetupUserDBAccess, true); } SetupDatabaseHelper.DeployWAPDacpac(); } } catch (ArgumentException exception) { if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.FailureReason)) { PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.FailureReason, exception); } returnValue = false; } return(returnValue); }
public static bool CMPServerPreinstallProcessor() { bool returnValue = true; try { InstallItemsInstallDataItem virtualMachineManagerInstallItem = null; // Find the installdata item in the array foreach (InstallItemsInstallDataItem itemToInstall in PropertyBagDictionary.Instance.GetProperty <ArrayList>(PropertyBagConstants.ItemsToInstall)) { if (string.Equals(itemToInstall.ControlTitle, PropertyBagConstants.CMPServer, StringComparison.OrdinalIgnoreCase)) { virtualMachineManagerInstallItem = itemToInstall; break; } } if (virtualMachineManagerInstallItem == null) { // Item not found - throw an exception SetupLogger.LogError("PageCustomDelegates: VMMPreinstallProcessor: Install Data item not found."); throw new ArgumentException(WpfResources.WPFResourceDictionary.InvalidArgument); } // Set the Install/Uninstall state virtualMachineManagerInstallItem.ItemWeAreInstallingEnumValue = virtualMachineManagerInstallItem.ItemWeAreInstallingEnumValue | (PropertyBagDictionary.Instance.PropertyExists("uninstall") ? InstallItemsInstallDataItem.InstallDataInputs.Uninstalling : InstallItemsInstallDataItem.InstallDataInputs.Installing); // If this is not an uninstall, remove the product code. if (0 == (virtualMachineManagerInstallItem.ItemWeAreInstallingEnumValue & InstallItemsInstallDataItem.InstallDataInputs.Uninstalling)) { virtualMachineManagerInstallItem.ProductCode = string.Empty; } // Set the location of the log file virtualMachineManagerInstallItem.LogFile = SetupHelpers.SetLogFilePath(virtualMachineManagerInstallItem.LogFile); SetupHelpers.CreateEventSources(); // Adjust the command line arguments virtualMachineManagerInstallItem.Arguments += InstallItemCustomDelegates.ConfigureBasicCommandLineArguments() + InstallItemCustomDelegates.ConfigureServerCommandLineArguments(); bool isRollback = PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.RollbacksToProcess); if (PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.Uninstall)) { String currentSetupUser = String.Format(SetupConstants.UserAccountTemplate, Environment.UserDomainName, Environment.UserName); SetupInputs.Instance.EditItem(SetupInputTags.SetupUserAccountTag, currentSetupUser); if (SetupInputs.Instance.FindItem(SetupInputTags.RemoteDatabaseImpersonationTag)) { SetupDatabaseHelper.GrantSetupUserDBAccess(false, false); SetupInputs.Instance.EditItem(SetupInputTags.RemoteDatabaseImpersonationTag, false); PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.AfterGrantSetupUserDBAccess, true); } ServiceConfigurationHandler.RemoveService(SetupConstants.EngineServiceName); // Stopping the service sometimes does not end the processes and this keeps a lock on the process binaries InstallItemCustomDelegates.EndCmpWorkerServiceProcess(); bool retainDB = SetupInputs.Instance.FindItem(SetupInputTags.RetainSqlDatabaseTag) || !SetupInputs.Instance.FindItem(SetupInputTags.CreateNewSqlDatabaseTag); if (!retainDB) { SetupDatabaseHelper.RemoveDB(false); } } } catch (ArgumentException exception) { if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.FailureReason)) { PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.FailureReason, exception); } SetupLogger.LogException(exception); returnValue = false; } return(returnValue); }
public static bool WAPExtensionCommonPreinstallProcessor() { bool returnValue = true; // used to store the return value for this function try { InstallItemsInstallDataItem wapExtensionCommonInstallItem = null; // Find the installdata item in the array foreach (InstallItemsInstallDataItem itemToInstall in PropertyBagDictionary.Instance.GetProperty <ArrayList>(PropertyBagConstants.ItemsToInstall)) { if (string.Equals(itemToInstall.ControlTitle, PropertyBagConstants.WAPExtensionCommon, StringComparison.OrdinalIgnoreCase)) { wapExtensionCommonInstallItem = itemToInstall; break; } } if (wapExtensionCommonInstallItem == null) { // Item not found - throw an exception SetupLogger.LogError("PageCustomDelegates: WAPExtensionCommonPreinstallProcessor: Install Data item not found."); throw new ArgumentException(WpfResources.WPFResourceDictionary.InvalidArgument); } // Set the Install/Uninstall state wapExtensionCommonInstallItem.ItemWeAreInstallingEnumValue = wapExtensionCommonInstallItem.ItemWeAreInstallingEnumValue | (PropertyBagDictionary.Instance.PropertyExists("uninstall") ? InstallItemsInstallDataItem.InstallDataInputs.Uninstalling : InstallItemsInstallDataItem.InstallDataInputs.Installing); // If this is not an uninstall, remove the product code. if (0 == (wapExtensionCommonInstallItem.ItemWeAreInstallingEnumValue & InstallItemsInstallDataItem.InstallDataInputs.Uninstalling)) { wapExtensionCommonInstallItem.ProductCode = string.Empty; } // Set the location of the log file wapExtensionCommonInstallItem.LogFile = SetupHelpers.SetLogFilePath(wapExtensionCommonInstallItem.LogFile); // Adjust the command line arguments wapExtensionCommonInstallItem.Arguments += ConfigureBasicCommandLineArguments() + ConfigureWAPExtensionCommonCommandLineArguments(); if (PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.Uninstall)) { if (SetupInputs.Instance.FindItem(SetupInputTags.WapRemoteDatabaseImpersonationTag)) { SetupDatabaseHelper.GrantSetupUserDBAccess(false, false); SetupInputs.Instance.EditItem(SetupInputTags.WapRemoteDatabaseImpersonationTag, false); PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.WapAfterGrantSetupUserDBAccess, true); } bool retainDB = SetupInputs.Instance.FindItem(SetupInputTags.WapRetainSqlDatabaseTag) || (!SetupInputs.Instance.FindItem(SetupInputTags.WapCreateNewSqlDatabaseTag) && PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.RollbacksToProcess)); if (!retainDB) { SetupDatabaseHelper.RemoveDB(true); } } } catch (ArgumentException exception) { if (!PropertyBagDictionary.Instance.PropertyExists(PropertyBagConstants.FailureReason)) { PropertyBagDictionary.Instance.SafeAdd(PropertyBagConstants.FailureReason, exception); } returnValue = false; } // Do any other tasks that are needed. return(returnValue); }