使用C#安装windows服务时出错
我在windows服务syncmysqldb.exe中工作,我需要该服务在setting.xml文件中给定的n个时间间隔内运行一个进程,即同步两个mysql数据库 当我安装此服务管理器时,我看到服务未处于启动状态,当我尝试通过右键单击手动运行时,会出现以下错误 当我安装服务时,它会出现以下错误 找不到源(MSInstaller)中事件ID(11001)的说明。本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息。您可以使用/AUXSOURCE=标志来检索此描述;有关详细信息,请参阅帮助和支持。以下信息是事件的一部分:Product:SetupSynMysqldb——错误1001。错误1001。在安装的提交阶段发生异常。此异常将被忽略,安装将继续。但是,安装完成后,应用程序可能无法正常运行。-->savedState字典包含不一致的数据,可能已损坏。,(NULL),(NULL),(NULL),(NULL) 当我在服务管理器中运行服务时,会出现以下错误 由于以下错误,SyncMysqlDb服务无法启动: 系统找不到指定的文件 C#代码使用C#安装windows服务时出错,c#,windows-services,C#,Windows Services,我在windows服务syncmysqldb.exe中工作,我需要该服务在setting.xml文件中给定的n个时间间隔内运行一个进程,即同步两个mysql数据库 当我安装此服务管理器时,我看到服务未处于启动状态,当我尝试通过右键单击手动运行时,会出现以下错误 当我安装服务时,它会出现以下错误 找不到源(MSInstaller)中事件ID(11001)的说明。本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息。您可以使用/AUXSOURCE=标志来检索此描述;有关详细信
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你可能想看看我很久以前写的关于制作服务安装程序的帖子。如果你的服务还可以,那么你安装程序的过程可能是个问题:谢谢,让我读一下,如果我需要帮助,我会告诉你