public Boolean CreateConfigurationXML(RegistrationInfo registrationInfo, InstallationInfo installationInfo, Boolean startPrintInspector) { // Verifica se as informações de instalação estão disponíveis if (registrationInfo == null) { return(false); } if (installationInfo == null) { return(false); } String interval = startPrintInspector ? "59000" : "599000"; // caso utilize o "Print Inspector" aumenta a frequência String xmlHash = ResourceProtector.GenerateHash(registrationInfo.ServiceUrl + registrationInfo.TenantId + interval + installationInfo.PrintLogDirectories); NameValueCollection taskParams = new NameValueCollection(); taskParams.Add("url", registrationInfo.ServiceUrl); taskParams.Add("tenantId", registrationInfo.TenantId.ToString()); taskParams.Add("interval", interval); taskParams.Add("logDirectories", installationInfo.PrintLogDirectories); taskParams.Add("copyLogDir", installationInfo.CopyLogDirectory); taskParams.Add("installationKey", ResourceProtector.GenerateHash(ResourceProtector.GetHardwareId())); taskParams.Add("xmlHash", xmlHash); // Configura os parâmetros de execução no XML FileStream fileStream = new FileStream(Path.Combine(installationInfo.TargetDirectory, "JobRouting.xml"), FileMode.Create); PrintLogContext.SetTaskParams(taskParams, fileStream); fileStream.Close(); return(true); }
protected override void OnStart(string[] args) { // Busca os parâmetros de execução NameValueCollection taskParams = PrintLogContext.GetTaskParams(); // Caso não consiga recuperar os parâmetros de execução, avisa que o XML // é inválido e para o serviço if (taskParams == null) { String stopReason = "XML inválido. Verifique se a instalação foi executada corretamente."; if (EventLog.SourceExists("Print Log Router")) { EventLog.WriteEntry("Print Log Router", "Parando o serviço... " + stopReason); } this.Stop(); return; } // Inicia a execução double interval = double.Parse(taskParams["interval"]); List <IPeriodicTask> taskList = new List <IPeriodicTask>(); taskList.Add(new DeviceDiscoverer()); taskList.Add(new PrintLogRoutingTask()); jobController = new JobController(taskList, taskParams, null, interval); jobController.Start(); // Agenda o mecanismo de reinicio do serviço para daqui a 5 horas Timer timeToLive = new Timer(17999000); timeToLive.Elapsed += new ElapsedEventHandler(KickService); timeToLive.Start(); }
private void button3_Click(object sender, EventArgs e) { // Busca os parâmetros de execução NameValueCollection taskParams = PrintLogContext.GetTaskParams(); // Executa a tarefa PrintLogRoutingTask task = new PrintLogRoutingTask(); task.InitializeTaskState(taskParams, null); task.Execute(); // PrintLogRoutingController printLogRouter = new PrintLogRoutingController(this); }
/// <summary> /// The main entry point for the application. /// </summary> static void Main(String[] args) { String serviceName = "Print Log Router"; String serviceLocation = Assembly.GetExecutingAssembly().Location; foreach (String argument in args) { if (argument.ToUpper().Contains("/RUNONCE")) { // Busca os parâmetros de execução no XML, adicionar XML ao diretório bin/Debug para depurar NameValueCollection taskParams = PrintLogContext.GetTaskParams(); double interval = 59000; List <IPeriodicTask> taskList = new List <IPeriodicTask>(); taskList.Add(new DeviceDiscoverer()); taskList.Add(new PrintLogRoutingTask()); JobController jobController = new JobController(taskList, taskParams, null, interval); jobController.Start(); Thread.Sleep(119000); return; } if (argument.ToUpper().Contains("/INSTALL")) { // Se não estiver instalado na máquina faz a instalação do serviço if (!ServiceHandler.ServiceExists(serviceName)) { ServiceHandler.InstallService(serviceLocation); } // Se não estiver em execução, inicia o serviço ServiceController serviceController = new ServiceController(serviceName); if (serviceController.Status != ServiceControllerStatus.Running) { ServiceHandler.StartService(serviceName, 33000); } return; } if (argument.ToUpper().Contains("/UNINSTALL")) { // Se não estiver instalado na máquina não é preciso fazer nada if (!ServiceHandler.ServiceExists(serviceName)) { return; } // Se estiver em execução, para o serviço ServiceController serviceController = new ServiceController(serviceName); if (serviceController.Status == ServiceControllerStatus.Running) { ServiceHandler.StopService(serviceName, 33000); } // Faz a remoção do serviço ServiceHandler.UninstallService(serviceLocation); return; } } ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new PrintLogRouting() }; ServiceBase.Run(ServicesToRun); }