使用C#安装windows服务时出错

使用C#安装windows服务时出错,c#,windows-services,C#,Windows Services,我在windows服务syncmysqldb.exe中工作,我需要该服务在setting.xml文件中给定的n个时间间隔内运行一个进程,即同步两个mysql数据库 当我安装此服务管理器时,我看到服务未处于启动状态,当我尝试通过右键单击手动运行时,会出现以下错误 当我安装服务时,它会出现以下错误 找不到源(MSInstaller)中事件ID(11001)的说明。本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息。您可以使用/AUXSOURCE=标志来检索此描述;有关详细信

我在windows服务syncmysqldb.exe中工作,我需要该服务在setting.xml文件中给定的n个时间间隔内运行一个进程,即同步两个mysql数据库

当我安装此服务管理器时,我看到服务未处于启动状态,当我尝试通过右键单击手动运行时,会出现以下错误

当我安装服务时,它会出现以下错误 找不到源(MSInstaller)中事件ID(11001)的说明。本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息。您可以使用/AUXSOURCE=标志来检索此描述;有关详细信息,请参阅帮助和支持。以下信息是事件的一部分:Product:SetupSynMysqldb——错误1001。错误1001。在安装的提交阶段发生异常。此异常将被忽略,安装将继续。但是,安装完成后,应用程序可能无法正常运行。-->savedState字典包含不一致的数据,可能已损坏。,(NULL),(NULL),(NULL),(NULL)

当我在服务管理器中运行服务时,会出现以下错误 由于以下错误,SyncMysqlDb服务无法启动: 系统找不到指定的文件

C#代码

 protected override void OnStart(string[] args)
            {
                try
                {
                    //add this line to text file during start of service

                    EventLog.WriteEntry("SyncMysqlDb in OnStart. at " + DateTime.Now);
                    //handle Elapsed event
                    tmrSync.Elapsed += new ElapsedEventHandler(OnElapsedTime);



                    tmrSync.Interval = GetIntervals();

                    //enabling the timer
                    tmrSync.Enabled = true;
                    //TraceService(" tmrSync.Interval =" + tmrSync.Interval + " at " + DateTime.Now);
                    ThreadPool.QueueUserWorkItem(new WaitCallback(ServiceWorkerThread));
                }
                catch (Exception ex)
                {

                    EventLog.WriteEntry("Service failed to start.", EventLogEntryType.Error, (int)Service1EventIds.Start_InitializationFailure, ex);
                }
            }
private void ServiceWorkerThread(object state)
        {
            // Periodically check if the service is stopping.
            while (!this.stopping)
            {
                // Perform main service function here...

                Thread.Sleep(2000);  // Simulate some lengthy operations.
            }

            // Signal the stopped event.
            this.stoppedEvent.Set();
        }
        protected override void OnStop()
        {
            tmrSync.Enabled = false;
            //TraceService("stopping service" + DateTime.Now);
            EventLog.WriteEntry("SyncMysqlDb in OnStop. at " + DateTime.Now);
            this.stopping = true;
            this.stoppedEvent.WaitOne();
        }
        private void OnElapsedTime(object source, ElapsedEventArgs e)
        {

            try
            {
                EventLog.WriteEntry(@"Executing C:\SyncMysqlDbRepository\task.bat at " + DateTime.Now);
                Process.Start(@"C:\SyncMysqlDbRepository\task.bat");
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("Service failed to start.at " + DateTime.Now, EventLogEntryType.Error, (int)Service1EventIds.Start_InitializationFailure, ex);

            }
           // TraceService("syncing db at " + DateTime.Now);
        }
        protected int GetIntervals()
        {
            var dt = new DataTable();
            try
            {

                dt.ReadXmlSchema(@"C:\SyncMysqlDbRepository\SettingsDs.xml");
                dt.ReadXml(@"C:\SyncMysqlDbRepository\Settings.xml");

            }
            catch (Exception ex)
            {

                 EventLog.WriteEntry("GetIntervals  failed at " + DateTime.Now, EventLogEntryType.Error, (int)Service1EventIds.Start_InitializationFailure, ex);
                return 0;
            }
            return Convert.ToInt16(dt.Rows[0].ItemArray[2]); //Intervals from settings.xml
        }

你不是说运行吗?你试过以管理员的身份执行.exe吗?是的,我试过了所有的方法,但不安全issue@skhurams你可能想看看我很久以前写的关于制作服务安装程序的帖子。如果你的服务还可以,那么你安装程序的过程可能是个问题:谢谢,让我读一下,如果我需要帮助,我会告诉你