1、添加WindowsService项目
2、在设计界面点击查看代码,在Server.Start()中定义执行体
2.1、Start()里面如果有无限循环体需用Thread或Timer,否则启动时会一直启动,然后启动失败,实际程序在运行,无法关闭
2.2、使用Thread,不在Stop中主动释放,Thread将继续执行,在服务停止后约30秒回收释放
2.3、使用Thread,在Stop中主动释放,Thread将在服务停止后立即停止(推荐)
2.4、使用Timer,不在Stop中主动释放,会在服务停止时回收释放,当然推荐手动释放,比较规范
3、在设计界面右键添加安装程序
4、将安装程序的验证模式改为LocalSysytem
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
5、不需要ClickOnce签名,编译
6、使用Debug中的exe程序
假设此程序的路径为 @path
7、安装服务
新建cmd脚本(无BOMUTF8编码),必须使用管理员模式运行
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "@path"
8、卸载服务
新建cmd脚本(无BOMUTF8编码),必须使用管理员模式运行
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /u "@path"