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);
        }
Пример #2
0
        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();
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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);
        }