现在的位置: 首页 > 综合 > 正文

Windows服务程序[解决部分智能自动的需要]

2011年10月02日 ⁄ 综合 ⁄ 共 2160字 ⁄ 字号 评论关闭

在很多应用中需要做windows服务来在后台默默的做一些操作,比如:

1、定期的数据库备份。

2、定期的发送邮件或短信。

简单说就是让系统在后台默默的定期做一些事情,可能是一直在做,也可能是每隔一段时间做一次。

 

利用VS2008我们能够在几分钟之内建立一个windows服务,非常简单。

下面说一下步骤

1、新建一个“Windows服务”类型的项目

2、重命名默认的“Service1” 为你喜欢的名称。

3、VS默认打开的是“设计视图”界面,在空白处右击选择“属性”,将“ServiceName”也换成你喜欢的名字。

       这个名字默认就是系统“服务”中的名称。

4、从工具箱的组件表当中拖动一个System.Timer对象到这个设计视图中。

       注意: 要确保是System.Timer控件,而不是System.Windows.Form.Timer控件。

       否则是无效的,服务启动了也不会有任何效果。

       默认情况下,工具箱“组件”中的Timer控件还恰恰就是System.Windows.Form.Timer,所以一定要注意。

       如果工具箱中没有System.Timer控件,那就在工具箱任何位置右击-“选择项”-找到System.Timer后添加。

5、设置Timer控件的属性“Interval”值为需要的时间,这里的单位是毫秒,1秒=1000毫秒,自己看着办。

6、然后双击这个Timer控件,VS自动切换到代码界面,在这里写需要的代码完成想做的事情。

7、下面切换到“设计视图”,在空白处右击-“添加安装程序”,系统会自动添加ProjectInstaller组件,并自动会打开该组件的设计视图,在该视图中可以看到两个控件:serviceInstaller1和serviceProcessInstaller1。

8、右击“serviceInstaller1”-“属性”,设置以下参数:

       ServiceName:默认就是我们在第3步骤中设置的服务名称,不要修改,默认应该就是对的。

       StartType:服务的启动类型,可以根据需要设置,真正部署时一般都选择自动,防止机器重启服务停止。

       DispalyName:就是服务显示的友好名称,相当于昵称,如果不设置则显示时默认就是步骤3设置的名字。

       Description:服务的详细描述,也就是该服务的详细备注说明。

9、右击“serviceProcessInstaller1”-“属性”,设置以下参数:

       Account:默认是User,但是一般不指定该服务的用户,而是设置为本地系统服务即“localSystem”。

10、OK,到了这里我们的开发工作就算完成了,下面就是如何来安装和部署这个服务。

 

11、可以直接使用“C:\Windows\Microsoft.NET\Framework\v2.0.50727\”自带的InstallUtil.exe命令。

         如:InstallUtil c:\AutoRemindService.exe (卸载就是InstallUtil c:\AutoRemindService.exe -u)

12、也可以打包成独立的安装程序,比较适合傻瓜化的安装,也是最终应该提供的方式。

         打包程序可以是新建的独立新项目,也可以直接在当前解决方案中添加打包项目,这里我们就选择后者。

         下面逐步说明。

 

1、选择VS菜单“文件”-“添加”-“新建项目”,在弹出的窗口中选择“其它项目类型”-“安装和部署”-“安装项目”,至于该项目的“名称”可以随便写,“位置”一般默认和主项目放在一起就可以了,不必单独设置。

2、右击刚刚添加的“安装项目”名称,选择“添加”-“项目输出”,在弹出的窗口中选择需要部署的项目,部署的文件一般选择“主输出”,至于“配置”默认即可。

3、还是右击刚刚添加的“安装项目”名称,选择“视图”-“自定义操作”,在打开的页面中右击“自定义操作”选择“添加自定义操作”,在弹出的窗口中选择“应用程序文件夹”里面的“主输出来自XXXXXX”后“确定”。

4、还是右击刚刚添加的“安装项目”名称,选择“视图”-“用户界面”,也就是设置安装过程中的一些参数。

       这个步骤不做也无所谓,但是如果是正规的安装程序,还是有必要设置显示一下自己的公司名称什么的。

5、右击要部署的项目“重新生成”,右击安装项目“重新生成”。

6、找到安装项目所在目录,将后缀名为msi的安装文件拷贝出来即可。

 

 

 

最后需要注意的是:

如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的。

如果路径发生了变化,要先卸载这个服务InstallUtil.exe /u参数,然后再重新安装这个服务,不能直接安装。还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些消息,你只能添加一个EventLog,通过WriteEntry()来写日志。

设置弹出窗口也会被拦截,如果设置了该服务“允许服务与桌面交互”也还是以提醒方式经允许后才显示。

实际上这本来就是后台默默运行的服务,为何还要交互呢?

如果仅是要服务给你什么信息,那么可以让服务自动在某地方写文件或发邮件给你。

 

抱歉!评论已关闭.