【发布时间】:2015-08-06 21:55:45
【问题描述】:
考虑一个带有安装项目的windows服务,现在我如何在安装完成后强制windows服务启动?
我尝试添加项目安装程序并在提交时甚至启动了该服务,但这只有在我使用 InstallUtil 时才有效,我正在寻找一种在使用安装项目时制作它的方法...
有什么想法吗?
【问题讨论】:
标签: c# wcf windows-services
考虑一个带有安装项目的windows服务,现在我如何在安装完成后强制windows服务启动?
我尝试添加项目安装程序并在提交时甚至启动了该服务,但这只有在我使用 InstallUtil 时才有效,我正在寻找一种在使用安装项目时制作它的方法...
有什么想法吗?
【问题讨论】:
标签: c# wcf windows-services
您可以创建一个新的自定义操作,该操作将使用 ServiceController 类来启动您新创建的服务。
【讨论】:
为了让您的服务在安装后立即启动,您可以添加以下几行代码。通过订阅 Committed 事件,您可以确保它在安装后启动服务。还要注意service.StartType = ServiceStartMode.Automatic; 行,它又负责在自动启动属性打开的情况下安装服务,这使得服务在系统重新启动时自动启动。
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller service;
public ProjectInstaller()
{
process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
service = new ServiceInstaller();
service.ServiceName = "MyWCFServer";
service.StartType = ServiceStartMode.Automatic;
Installers.Add(process);
Installers.Add(service);
service.Committed += new InstallEventHandler(serviceInstaller_Committed);
}
void serviceInstaller_Committed(object sender, InstallEventArgs e)
{
ServiceController controller = new ServiceController(service.ServiceName);
controller.Start();
controller.WaitForStatus(ServiceControllerStatus.Running);
}
}
【讨论】:
正如约翰·布莱斯建议的那样;首先添加一个部署项目并在“安装”选项卡和“提交”选项卡中添加自定义操作在这些选项卡中执行您需要的操作,这意味着启动服务。
【讨论】: