aindrea
Member
- Joined
- Jun 5, 2018
- Messages
- 23
- Programming Experience
- 1-3
I have developed a Windows Service, and it will be incumbent on me to develop it further. Haplessly, a great obstacle for this is the fact that it does not appear in the service list after services.msc is called even though installation works quite finde with InstallUtils.exe.
The main-class looks like this:
The service has a scheduler like this:
...and there is a library class there, too, which simply writes some text into log files (this is what it is supposed to do for the time being):
The project installer file has two sets of properties: serviceInstaller1:
GenerateMember: True
Modifiers: Private
DelayedAutoStart: False
Parent: ProjectInstaller
ServiceName: Service1
ServiceDependsOn: String[]Array
StartType: Manual
... as well as serviceProseccinstaller1:
GenerateMember: True
Modifiers: Private
Account: LocalSystem
Parent: ProjectInstaller
What hack is needed to make the service appear where it should after installation?
Btw.: Is it allowed to upload zip-files with project data instead of pasting the classes into the forum editor window?
The main-class looks like this:
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
namespace WindowsService1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Scheduler()
};
ServiceBase.Run(ServicesToRun);
}
}
}
The service has a scheduler like this:
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
namespace WindowsService1
{
public partial class Scheduler : ServiceBase
{
private Timer timer1 = null;
public Scheduler()
{
InitializeComponent();
}
private void timer1_Tick(object sender,ElapsedEventArgs e)
{
Library.WriteErrorLog("Timer ticked.");
}
protected override void OnStart(string[] args)
{
timer1 = new Timer();
this.timer1.Interval = 30000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
}
protected override void OnStop()
{
timer1.Enabled = false;
Library.WriteErrorLog("WindowsService1 stopped.");
}
}
}
...and there is a library class there, too, which simply writes some text into log files (this is what it is supposed to do for the time being):
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace WindowsService1
{
public static class Library
{
public static void WriteErrorLog(Exception ex)
{
StreamWriter sw = null;
try
{
sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "\\LogFile.txt",true);
sw.WriteLine(DateTime.Now.ToString()+": "+ex.Source.ToString().Trim()+"; "+ex.Message.ToString().Trim());
sw.Flush();
sw.Close();
}catch{}
}
public static void WriteErrorLog(string Message)
{
StreamWriter sw = null;
try
{
sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "\\LogFile.txt", true);
sw.WriteLine(DateTime.Now.ToString() + ": " + Message);
sw.Flush();
sw.Close();
}
catch { }
}
}
}
The project installer file has two sets of properties: serviceInstaller1:
GenerateMember: True
Modifiers: Private
DelayedAutoStart: False
Parent: ProjectInstaller
ServiceName: Service1
ServiceDependsOn: String[]Array
StartType: Manual
... as well as serviceProseccinstaller1:
GenerateMember: True
Modifiers: Private
Account: LocalSystem
Parent: ProjectInstaller
What hack is needed to make the service appear where it should after installation?
Btw.: Is it allowed to upload zip-files with project data instead of pasting the classes into the forum editor window?