/// <summary>
        /// Registers and unregisters the component with GDS
        /// </summary>
        /// <param name="install">set to true to register, false otherwise</param>
        /// <returns>true on success</returns>
        private bool DoRegistration(bool install)
        {
            try
            {
                // register/unregister the component
                GoogleDesktopIndexingComponentRegisterClass gdsReg = new GoogleDesktopIndexingComponentRegisterClass();

                if (install)
                {
                    bool result = SimpleMessageBox(kMessengerSetupMessage, kLogginEnableMessage, true);

                    if (!result)
                    {
                        return(false);
                    }

                    try
                    {
                        // register with GDS
                        object [] componentDesc = new object[6] {
                            "Title", "MSN Chats", "Description", "Captures and indexes MSN Messenger conversations", "Icon", "no icon"
                        };
                        gdsReg.RegisterIndexingComponent(kComponentGuid, componentDesc);

                        // add the program to Run
                        RegistryKey key = Registry.CurrentUser.OpenSubKey(kWindowsRunRegKey, true);
                        key.SetValue(kMessengerSetupMessage, Directory.GetCurrentDirectory() + "\\" + Process.GetCurrentProcess().ProcessName + ".exe");

                        SimpleMessageBox(kMessengerSetupMessage, "Registration completed successfully!", false);
                    }
                    catch (COMException e)
                    {
                        // check if not already registered
                        if ((UInt32)e.ErrorCode != 0x80040006) // E_COMPONENT_ALREADY_REGISTERED
                        {
                            SimpleMessageBox("COM Exception", e.ToString(), false);
                            return(false);
                        }
                        else
                        {
                            SimpleMessageBox(kMessengerSetupMessage, "Component already registered!", false);
                        }
                    }
                }
                else
                {
                    try
                    {
                        gdsReg.UnregisterIndexingComponent(kComponentGuid);
                    }
                    catch (COMException e)
                    {
                        // check if not already unregistered
                        if ((UInt32)e.ErrorCode != 0x80040002) // E_COMPONENT_NOT_REGISTERED
                        {
                            SimpleMessageBox("COM Exception", e.ToString(), false);
                        }
                    }

                    // remove the program from Run
                    RegistryKey key = Registry.CurrentUser.OpenSubKey(kWindowsRunRegKey, true);
                    key.DeleteValue(kMessengerSetupMessage, false);

                    SimpleMessageBox(kMessengerSetupMessage, "Component unregistered successfully!", false);
                }
            }
            catch (Exception e)
            {
                SimpleMessageBox("Exception", e.ToString(), false);
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Registers and unregisters the component with GDS
        /// </summary>
        /// <param name="install">set to true to register, false otherwise</param>
        /// <returns>true on success</returns>
        private bool DoRegistration(bool install)
        {
            try
              {
            // register/unregister the component
            GoogleDesktopIndexingComponentRegisterClass gdsReg = new GoogleDesktopIndexingComponentRegisterClass();

            if (install)
            {
              bool result = SimpleMessageBox(kMessengerSetupMessage, kLogginEnableMessage, true);

              if (!result)
            return false;

              try
              {
            // register with GDS
            object [] componentDesc = new object[6] {"Title", "MSN Chats", "Description", "Captures and indexes MSN Messenger conversations", "Icon", "no icon"};
            gdsReg.RegisterIndexingComponent(kComponentGuid, componentDesc);

            // add the program to Run
            RegistryKey key = Registry.CurrentUser.OpenSubKey(kWindowsRunRegKey, true);
            key.SetValue(kMessengerSetupMessage, Directory.GetCurrentDirectory()+ "\\" + Process.GetCurrentProcess().ProcessName + ".exe");

            SimpleMessageBox(kMessengerSetupMessage, "Registration completed successfully!", false);
              }
              catch(COMException e)
              {
            // check if not already registered
            if ((UInt32)e.ErrorCode != 0x80040006)       // E_COMPONENT_ALREADY_REGISTERED
            {
              SimpleMessageBox("COM Exception", e.ToString(), false);
              return false;
            }
            else
              SimpleMessageBox(kMessengerSetupMessage, "Component already registered!", false);
              }
            }
            else
            {
              try
              {
            gdsReg.UnregisterIndexingComponent(kComponentGuid);
              }
              catch(COMException e)
              {
            // check if not already unregistered
            if ((UInt32)e.ErrorCode != 0x80040002)        // E_COMPONENT_NOT_REGISTERED
              SimpleMessageBox("COM Exception", e.ToString(), false);
              }

              // remove the program from Run
              RegistryKey key = Registry.CurrentUser.OpenSubKey(kWindowsRunRegKey, true);
              key.DeleteValue(kMessengerSetupMessage, false);

              SimpleMessageBox(kMessengerSetupMessage, "Component unregistered successfully!", false);
            }
              }
              catch (Exception e)
              {
            SimpleMessageBox("Exception", e.ToString(), false);
            return false;
              }

              return true;
        }