windows服务的编写及其如何安装到服务器上的过程

1、首先打开vs新建项目,选择windows服务,具体如下图:

 

 

2、默认会自动创建这几个文件,具体各自的作用不解释:

 

 

3、program中main函数中会实例化服务并启动,当部署后即可以自动执行了。下面我新建一个MyServiceDeal.cs类,来编写具体的服务中要实现的业务逻辑,此时的文档结构如下:

 

 

其中的业务代码可以自己实现:

 

 

为了实现调用此类的业务逻辑,则需要转到Service1.cs中的后台代码去重写OnStart方法,如下图:

 

 

至此,服务中的业务逻辑基本完成,下面是如何安装的问题,首先,返回Service1.cs的设计视图界面,右键窗体中任意处,选择“添加安装程序”:

 

 

然后会自动创建一个ProjectInstaller.cs的文件,其中包含两个组建(serviceProcessInstaller1和serviceInstaller1),如下图:

 

 

这里需要对这两个组建分别设置一下,具体的属性设置如下图:

 

 

 

选中serviceInstaller1组件,查看属性

设置ServiceName的值, 该值表示在系统服务中的名称

设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动

设置Description,添加服务描述

 

到这里,当项目编译通过后,其实已经可以进行安装了,

但此时需要根据命令进行安装(下面还会介绍一种创建一个可以安装的exe程序)。先将使用命令进行安装的方法,首先找到此项目的bin文件下的两个文件(如果项目中还引用了第三方的dll文件,也需要一并拷贝到服务器中指定的文件夹下):

 

 

然后打开要安装的服务器的cmd窗口,具体的命令如下图:

 

 

然后到服务列表中可以看到安装后的服务:

 

可以继续输入命令进行启动或关闭或删除:

net start MyService        -- 启动

net stop MyService        -- 关闭

sc delete MyService      -- 删除

dos方式2:

切换当前目录,此处需要注意的是,在C:\Windows\Microsoft.NET\Framework目录下有很多类似版本,具体去哪个目录要看项目的运行环境,例 如果是.net framework2.0则需要输入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

输入 InstallUtil.exe E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe 回车

说明

E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe表示项目生成的exe文件位置

 

注意:win7需要已管理员的身份启动,否则无法安装

 

接下来再使用exe安装包的形式进行可视化的安装操作,首先右击解决方案→选择新建项目→选择其他项目类型下的 Visual Studio Installer(VS中默认是没有这项的,需要先下载安装一下),如下图:

 

 

确定后会出现如下界面:

 

 

右击选择 Add→项目输出,然后默认点击确定:

 

 

然后再右击MyServiceSetup项目,选择 View→自定义操作:

 

然后分别设置Install和Uninstall,步骤是相同的,均需要右击文件夹,选择添加自定义操作,并做如下设置:

 

 

但需要注意的是,设置Uninstall时还需要额外增加一个设置,具体如下图:

 

 

至此,所有的设置均已完成,编辑生成后,找到debug文件夹下的文件,拷贝到服务器上,即可以双击exe文件进行安装了,十分简便:

 

 

 

好了,编写windows服务以及使用两种方法进行安装,就算都做完了。(需要注意的是:第二种安装方法,如果vs中下载安装的Visual Studio Installer中的.net framework版本可能是4.5的,而服务器上的framework是4.0的,那么此时,这种安装方式就会有问题了,安装时总会提示要下载安装framework4.5,若不想安装的话,最好使用第一种安装方式。)