public bool SendCommandLineToPreviousInstance(string[] args) { try { TcpChannel channel = new TcpChannel(); ChannelServices.RegisterChannel(channel); object instance = Activator.GetObject(typeof(ApplicationInstanceManager), _url); ApplicationInstanceManager aim = instance as ApplicationInstanceManager; if (aim != null) { try { aim.Run(args); } catch (System.Exception systemException) { System.Diagnostics.Trace.WriteLine(systemException); // MessageBox.Show(null, systemException.ToString()); } } ChannelServices.UnregisterChannel(channel); return(true); } catch (System.Exception systemException) { System.Diagnostics.Trace.WriteLine(systemException); // MessageBox.Show(null, systemException.ToString()); } return(false); }
/// <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(); }