问题
How do I install a Windows Service programmatically without using installutil.exe?
回答1:
You can install the service by adding this code (in the program file, Program.cs) to install itself when run from the commandline using specified parameters:
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
if (System.Environment.UserInteractive)
{
if (args.Length > 0)
{
switch (args[0])
{
case "-install":
{
ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
break;
}
case "-uninstall":
{
ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
break;
}
}
}
}
else
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new MyService() };
ServiceBase.Run(ServicesToRun);
}
}
回答2:
I use the method from the following CodeProject article, and it works great.
Windows Services Can Install Themselves
回答3:
I install and uninstall my Windows Service via the command line, e.g., MyWindowsService.exe -install
and MyWindowsService.exe -uninstall
, to avoid using installutil.exe
myself. I've written a set of instructions for how to do this here.
来源:https://stackoverflow.com/questions/2072288/installing-windows-service-programmatically