通常在开发过程中,会遇到控制台程序需要转换为Windows服务的情况。这个时候我们只需要在控制台程序中添加Windows服务文件并进行配置,即可在服务器中进行安装,让控制台程序以服务的形式跑起来。
1、在控制台项目中新增一个Windows服务文件,我这里命名为OrderSync.cs。
2、 查看新增的Windows服务代码,将服务名称设置为自己需要的名称。
partial class OrderSync : ServiceBase
{
public OrderSync()
{
InitializeComponent();
base.ServiceName = "OrderSync";
}
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
}
3、双击打开新增的Windows服务cs文件,右键点击添加安装程序。
4、配置安装程序。
双击安装成功的安装程序ProjectInstaller.cs,会看到serviceProcessInstaller1和serviceInstaller1:
鼠标左键选中serviceProcessInstaller1,在右下角的属性中进行如下配置:
鼠标左键选中serviceInstaller1,在右下角的属性中进行如下配置:
5、修改控制台程序入口。
将控制台入口Program.cs改为如下:
class Program
{
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new OrderSync() //这里的OrderSync新增的Windows服务
};
ServiceBase.Run(ServicesToRun);
}
}
6、Windows服务安装。
重新编译生成控制台程序之后,需要在编译后的文件夹中增加三个文件
1、微软安装程序工具 (Installutil.exe),只要你电脑安装了Visual Studio,这个文件就可以在C:\Windows\Microsoft.NET\Framework\v2.0.50727(或者C:\Windows\Microsoft.NET\Framework\v4.0.30319)中找到
将 Installutil.exe文件Copy到编译完的控制台应用程序中!
2、安装执行文件和卸载执行文件bat:
setup.bat文件中编辑如下内容,OrderSyncService.exe请更名为你项目的执行文件名称:
installutil OrderSyncService.exe
unsetup.bat文件中编辑如下内容,OrderSyncService.exe请更名为你项目的执行文件名称:
installutil OrderSyncService.exe /u
3、保存成功之后点击setup.bat,微软安装程序工具 (Installutil.exe)会自动安装OrderSyncService.exe服务。现在服务就已经开始运行了。
4、如果要卸载服务,点击unsetup.bat即可。