很多人制作成Windows服务安装包时发现明明在属性里面设置了自动启动,可在服务安装完成以后,还需要手动启动服务,我这里有一种完全实现自动启动的方法
在ProjectInstaller.cs 文件做文章就行,直接代码如下:
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
//设置安装后自动启动
this.AfterInstall += new InstallEventHandler(ProjectInstaller_AfterInstall);
}
/// <summary>
/// 设置安装后自动启动
/// serviceInstaller1 中的StartType要设置成Automatic,表示随机启动,
/// ServiceName表示服务名称,
/// Description 表示服务的描述,
/// DisplayName 表示显示名称。
/// serviceProcessInstaller1 中的Account要设置成LocalSystem,表示本地系统帐号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
string Cmdstring = "sc start JieService"; //CMD命令 JieService服务名称
p.StandardInput.WriteLine(Cmdstring);
p.StandardInput.WriteLine("exit");
}
}
注意:在代码中,“JieService”这个是服务名称。一定记得改,很容易忽略掉