/[AnywhereTS-MSSQL]/trunk/TSAdminTool/ATSAmdin.Installer.cs
ViewVC logotype

Diff of /trunk/TSAdminTool/ATSAmdin.Installer.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/TSAdminTool/ATSAmdin.Installer.cs	2012/07/15 13:35:48	155
+++ trunk/TSAdminTool/ATSAmdin.Installer.cs	2012/07/15 15:18:55	157
@@ -8,6 +8,8 @@
 using System.Threading;
 using System.Windows.Forms;
 using System.Drawing;
+using AnywhereTS.DBSupport;
+using System.Data.SqlClient;
 
 
 namespace AnywhereTS
@@ -21,14 +23,14 @@
         {
             InitializeComponent();
         }
+        #region Install Members
         DatabaseInstallerWaitDialog dlg;
         public void InstallDatabaseWaitMessage()
         {
             dlg = new DatabaseInstallerWaitDialog("", string.Format(@"Please Wait... Installing database: {2} to {0}\{1}", DBServer, DBInstance, ATSGlobals.strDatabaseName));
             dlg.ForeColor = Color.Black;
             dlg.ShowDialog();            
-        }
-
+        }        
         private void InstallDatabase()
         {
             // install the database 
@@ -143,5 +145,112 @@
                 }
             }
         }
+        #endregion
+
+        public override void Uninstall(IDictionary savedState)
+        {
+            using (log4net.NDC.Push("Logged from ATSAdmin.Installer"))
+            {
+                try
+                {
+                    string path = this.Context.Parameters["targetdir"];
+                    Logging.ATSAdminInstallerLog.DebugFormat("Install Dir: {0}", path);
+                    Logging.UpdateLogPath(string.Format(@"{0}\logs", path));
+                    Logging.ATSAdminInstallerLog.DebugFormat("Showing uninstall dialog");
+                    UninstallDialog udlg = new UninstallDialog();
+                    DialogResult result = udlg.ShowDialog();
+                    if (result == DialogResult.Cancel)
+                    {
+                        Logging.ATSAdminInstallerLog.DebugFormat("user aborted uninstall");
+                        MessageBox.Show("Uninstall canceled ... nothing was uninstalled", "Uinstall was canceled by user", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                        return;
+                    }
+                    base.Uninstall(savedState);
+                    using (log4net.NDC.Push(string.Format("KeepDatabase={0} KeepApplicationSettings={1} KeepClientImages={2}", udlg.KeepDatabase, udlg.KeepApplicationSettings, udlg.KeepClientImages)))
+                    {
+                        Logging.ATSAdminInstallerLog.DebugFormat("Unistall options");
+                    }
+                    string server = ATSGlobals.GetATSRegValueString(ProSupport.strRegDatabaseServer);
+                    string instance = ATSGlobals.GetATSRegValueString(ProSupport.strRegDatabaseInstance);
+                    string database = ATSGlobals.strDatabaseName;
+                    if (!udlg.KeepDatabase)
+                    {
+                        Exception ErrorInfo = null;
+                        // delete database
+                        using (MsSqlConnector conn = new MsSqlConnector(server, instance, "master"))
+                        {
+                            try
+                            {
+                                conn.CreateConnection(out ErrorInfo);
+                                conn.OpenConnection(out ErrorInfo);
+                                SqlConnection sqlCon;
+                                conn.GetConnectionClone(out sqlCon, out ErrorInfo);
+                                SqlCommand sqlCmd = new SqlCommand();
+                                sqlCmd.Connection = sqlCon;
+                                Logging.ATSAdminInstallerLog.DebugFormat("Removing database: {0}", database);
+                                sqlCmd.CommandText = string.Format("DROP DATABASE {0};",database);
+                                sqlCmd.ExecuteNonQuery();
+                                Logging.ATSAdminInstallerLog.DebugFormat("Successfully removed database: {0}", database);
+                            }
+                            catch (Exception ex)
+                            {
+                                Logging.ATSAdminInstallerLog.DebugFormat("Failed to remove database: {0}", database);
+                                ErrorInfo = ex;
+                            }
+                        }
+                        if (ErrorInfo != null)
+                            throw ErrorInfo;
+                    }
+                    if (!udlg.KeepApplicationSettings)
+                    {
+                        // delete registry settings
+                        try
+                        {
+                            Logging.ATSAdminInstallerLog.DebugFormat("Removing AnywhereTS Registry settings");
+                            Microsoft.Win32.RegistryKey key = null;
+                            if (IntPtr.Size == 8)
+                            {   // 64 bit OS
+                                //string t = @"SOFTWARE\Wow6432Node\" + ATSGlobals.ApplicationName + @"\ts-config";
+                                key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\", true);
+                                key.DeleteSubKey("TFTPD32", false);
+                                key.DeleteSubKey(ATSGlobals.ApplicationName, false);
+                            }
+                            else
+                            {   // 32 bit OS
+                                //strATSregRoot = @"SOFTWARE\" + ATSGlobals.ApplicationName + @"\ts-config";
+                                key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software", true);
+                                key.DeleteSubKey("TFTPD32", false);
+                                key.DeleteSubKey(ATSGlobals.ApplicationName, false);
+                            }
+                            Logging.ATSAdminInstallerLog.DebugFormat("Successfully removed AnywhereTS Registry settings");
+                        }
+                        catch (Exception ex)
+                        {
+                            Logging.ATSAdminInstallerLog.DebugFormat("Failed to remove AnywhereTS Registry settings");
+                            throw ex;
+                        }
+                    }
+                    if (!udlg.KeepClientImages)
+                    {
+                        // delete client images
+                        try
+                        {
+                        }
+                        catch (Exception ex)
+                        {
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    // database install failed
+                    using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
+                    {
+                        Logging.ATSAdminInstallerLog.Error("Install() failed.");
+                    }
+                    throw ex;
+                }
+            }
+        }
     }
 }

 

  ViewVC Help
Powered by ViewVC 1.1.22