传统通过vs生成windowservice然后通过service生成本地安装的服务,如果需要将程序安装客户机或者服务器上需要通过VS开发指令符,比较麻烦。
使用Topshelf替代VSinstall指令操作。
Main方法插入代码:
HostFactory.Run(
x =>
{
x.Service<DataPush>(
s =>
{
s.ConstructUsing(name => new DataPush());
//服务启动事件
s.WhenStarted(tc => tc.Start());
//服务停止后事件
s.WhenStopped(tc => tc.Stop());
//服务停止后继续运行时事件
s.WhenContinued(tc => tc.Continued());
//服务暂定事件
s.WhenPaused(tc => tc.Paused());
//服务卸载事件
s.WhenShutdown(tc => tc.Shutdown());
});
x.StartAutomatically();
x.RunAsLocalSystem();
x.SetDescription("一号站数据抽取服务!");
x.SetDisplayName("YiHaoZhanDataPush");
x.SetServiceName("YiHaoZhanDataPush");//服务名 这里用的topshelf第三方的插件建立服务,不用v4.0去安装,直接定位到当前路径DataExtraction.exe install就可以
}
);
DataPush类自定义需要实现启动、停止、继续、暂停和shutdown这些方法。
生成程序,在程序根目录添加一个BAT文件,写入:
BHNE.YiHaoZhanDataPush.exe install
pause
发布安装程序,安装后直接运行bat文件就可以安装服务。
卸载:
BHNE.YiHaoZhanDataPush.exe uninstall
pause