예제 #1
0
        public static ActionResult PatchDatabase(Session session, Dictionary <string, DatabasePatchInfo[]> featurePatchInfos)
        {
            var version = session.GetDetectedOlderVersion();

            RunDatabaseAction(
                session,
                (featureName) =>
            {
                if (featurePatchInfos.ContainsKey(featureName))
                {
                    var featurePatchInfo = DatabasePatchInfo.Merge(featurePatchInfos[featureName], version);

                    if (featurePatchInfo != null)
                    {
                        DatabaseSetupInfo setupInfo         = DatabaseSetupInfo.CreateFromFeature(session, featureName);
                        PatchDatabaseForm patchDatabaseForm = new PatchDatabaseForm();
                        patchDatabaseForm.SetupInfo         = setupInfo;

                        var dialogResult = BaseForm.ShowAsDialog(patchDatabaseForm, session.InstallerWindowWrapper());
                        if (dialogResult == DialogResult.Cancel)
                        {
                            throw new Exception("Cancelled");
                        }
                        else
                        {
                            ExecuteDDL(featurePatchInfo.SqlScript, patchDatabaseForm.SetupInfo);
                            RunCustomMethod(featurePatchInfo.PatchAction, patchDatabaseForm.SetupInfo);
                        }
                    }
                }
            }
                );
            return(ActionResult.Success);
        }
예제 #2
0
        public static ActionResult PreDatabaseDialog(Session session)
        {
            var featureName       = session.GetPropertyValue(DatabaseSetupInfo.FeaturePropertyName);
            var databaseSetupInfo = DatabaseSetupInfo.CreateFromFeature(session, featureName);

            if (databaseSetupInfo != null)
            {
                databaseSetupInfo.CopyToCurrentDetails(session);
            }
            else
            {
                DatabaseSetupInfo.SetSuggestedPropertyValues(session, featureName);
            }
            return(ActionResult.Success);
        }
예제 #3
0
        public static ActionResult AfterInstallInitialize_DB(Session session)
        {
            RunDatabaseAction(
                session,
                (featureName) =>
            {
                DatabaseSetupInfo databaseSetupInfo = DatabaseSetupInfo.CreateFromFeature(session, featureName);
                databaseSetupInfo.CopyToCurrentDetails(session);
                DatabaseSetupInfo.AddRegistryEntries(session, featureName);
            }
                );
            var aggregatedProps = DatabaseSetupInfo.GetCustomActionData(session).ToString();

            session.SetPropertyValue("RollbackDatabase", aggregatedProps);
            session.SetPropertyValue("DeployDatabase", aggregatedProps);
            session.SetPropertyValue("RemoveDatabase", aggregatedProps);
            session.SetPropertyValue("PatchDatabase", aggregatedProps);
            return(ActionResult.Success);
        }
예제 #4
0
        public static ActionResult DeployDatabase(Session session, Dictionary <string, string> createDatabaseObjectsSql, Dictionary <string, KeyValuePair <string, string>[]> lookupDataArray, Dictionary <string, Action <SqlConnection> > customMethods = null)
        {
            customMethods = customMethods != null ? customMethods : new Dictionary <string, Action <SqlConnection> >();

            RunDatabaseAction(
                session,
                (featureName) =>
            {
                DatabaseSetupInfo databaseSetupInfo = DatabaseSetupInfo.CreateFromFeature(session, featureName);
                if (CreateDatabase(databaseSetupInfo, createDatabaseObjectsSql[featureName], lookupDataArray[featureName]))
                {
                    ExecuteDDL(createDatabaseObjectsSql[featureName], databaseSetupInfo);
                    InsertLookups(lookupDataArray[featureName], databaseSetupInfo);
                    if (customMethods.ContainsKey(featureName))
                    {
                        RunCustomMethod(customMethods[featureName], databaseSetupInfo);
                    }
                }
                CreateDatabaseUser(databaseSetupInfo, null);
            }
                );
            return(ActionResult.Success);
        }
예제 #5
0
        public static ActionResult RemoveDatabase(Session session, bool askUser)
        {
            RunDatabaseAction(
                session,
                (featureName) =>
            {
                DatabaseSetupInfo setupInfo = DatabaseSetupInfo.CreateFromFeature(session, featureName);
                if (!setupInfo.UseExistingDatabase)
                {
                    DropDatabaseForm dropDatabaseForm = new DropDatabaseForm()
                    {
                        SetupInfo = setupInfo
                    };

                    if (!askUser || BaseForm.ShowAsDialog(dropDatabaseForm, session.InstallerWindowWrapper()) == DialogResult.Yes)
                    {
                        DropDatabase(setupInfo);
                        DropDatabaseUser(setupInfo);
                    }
                }
            }
                );
            return(ActionResult.Success);
        }