///<summary>
 /// Creates a publisher process
 ///</summary>
 public void ExecutePublisherCommand(
     String processName,
     String siteName,
     String processURL,
     String brokerURL)
 {
     lock (stateList) {
         stateList.Add(processName, ProcessState.OFFLINE);
         String  arguments = processName + " " + siteName + " " + processURL + " " + brokerURL;
         Process publisher = Process.Start(PUBLISHERFILE, arguments);
         publisher.Attach(); //DebugTools
         Thread.Sleep(1);
         try {
             IPublisherService processService = (IPublisherService)Activator.GetObject(
                 typeof(IPublisherService),
                 processURL);
             processService.ConnectToPuppetMaster(serviceURL);
             publisherTable.Add(processName, processService);
         }
         catch (Exception)
         {
             throw;
         }
         stateList[processName] = ProcessState.UNFROZEN;
     }
 }