/// <summary>
		/// Initializes a new instance of the WindowManager class
		/// </summary>
		public WindowManager()
		{
			_theInstance = this;
			_managedWindows = new Hashtable();
		}
		/// <summary>
		/// Initializes a new instance of the SnapInHostingEngine class
		/// </summary>
		/// <param name="additionalCommonAppDataPath">Additional path in which data common to all users will be stored. Example: "Company Name\Application Name\Version X.X.X"</param>
		/// <param name="additionalLocalUserAppDataPath">Additional path in which data particular to the current user will be stored. Example: "Company Name\Application Name\Version X.X.X"</param>
		public SnapInHostingEngine(string additionalCommonAppDataPath, string additionalLocalUserAppDataPath)
		{
			// thunk to this instance, the one and only
			_theInstance = this;

			// create a new application context
			_applicationContext = new SnapInApplicationContext();

			// create a new instance manager
			_instanceManager = new ApplicationInstanceManager();

			// combine the common app data path and the additional path to form this instance's common app data path
			_commonDataPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), additionalCommonAppDataPath);

			// combine the local user app data path and the additional path to form this instance's local user app data path
			_localUserDataPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), additionalLocalUserAppDataPath);			

			// combine the local user path with logs to form the logs path
			_logsDataPath = Path.Combine(_localUserDataPath, "Logs");
			
			// combine the log path with the file name to form the full log path						
			_logFilename = Path.Combine(_logsDataPath, "Log.txt");

			// format the common configuration filename
			_commonConfigurationFilename = Path.Combine(_commonDataPath, SnapInHostingEngine.DefaultCommonConfigurationFilename);

			// format the local user configuration filename
			_localUserConfigurationFilename = Path.Combine(_localUserDataPath, SnapInHostingEngine.DefaultLocalUserConfigurationFilename);

			// format the configuration engine's configuration filename
			_configurationEngineConfigurationFilename = Path.Combine(_commonDataPath, ConfigurationEngine.DefaultConfigurationFilename);

			// format the installation engine's configuration filename
			_installationEngineConfigurationFilename = Path.Combine(_localUserDataPath, InstallationEngine.DefaultConfigurationFilename);

			// wire up to our own snapin events so that we can catch the events first and proxy some work before anyone else gets the events
			this.SnapInInstalled += new SnapInDescriptorEventHandler(OnInternalSnapInInstalled);
			this.SnapInUninstalled += new SnapInDescriptorEventHandler(OnInternalSnapInUninstalled);

			// create new window manager
			_windowManger = new WindowManager();

			// create a new xml configuration manager
			_xmlConfigurationManager = new XmlConfigurationManager();
			_xmlConfigurationManager.EnumeratingConfigurations += new XmlConfigurationManagerEventHandler(OnConfigurationManagerEnumeratingConfigurations);

			// create a new menu item security manager
			_menuItemSecurityManager = new MenuItemSecurityManager();			
		}