您的位置:首页 > 其它

Window 服务程序和安装、卸载、启动、停止等操作

2013-04-17 17:17 483 查看
最近项目中用到window服务程序,以前没接触过,比较陌生,花了一天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作不成功,可能是开发环境或项目配置的不同,这里把自己成功制作的方式贴出来,一方面留给自己,一方面也希望能给遇到同样问题绝望中不能自拔、以致失去灵魂的路人甲,路人乙一还魂丹 . . .

一、创建window服务项目

首先我们建一个window服务项目 :解决方案(右击)——> 添加 ——> 新建项目——>项目类型选择Windows——>Windows服务 ,如图: 


      

二、编写Window服务程序

创建后会生成两个文件 Program.cs 和 Service1.cs ,其中 program.cs 这个文件不用动,里面已自动生成好了。我们在Service1.cs里增加所要的操作,里面有两个重写方法 OnStart 和 OnStop ,OnStart 方法表示服务启动的操作,OnStop 表示服务停止的操作,下面写了一个简单示例 :当服务启动后,每一秒中向一个记事本文件记录信息,code如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Threading;

namespace WindowsService2010
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
System.Timers.Timer time2 = new System.Timers.Timer(1000);

protected override void OnStart(string[] args)
{
time2.Elapsed += new System.Timers.ElapsedEventHandler(Timers_Elapsed);
time2.Enabled = true;
}

protected override void OnStop()
{
time2.Enabled = false;
}

private void Timers_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
string path="d:\\TextFile.txt";
StreamWriter  sw;
if (!File.Exists(path))
{
sw = File.CreateText(path);
}
else    sw = File.AppendText(path);
sw.WriteLine("=====================================");
sw.Write("添加日期为:" + DateTime.Now.ToString() + "\r\n");
sw.Write("日志内容为:" + "测试服务" + "\r\n");
sw.WriteLine("=====================================");
sw.Flush();
sw.Close();
}
}
}


到这里,我们的服务以及服务实现的功能就已经写好了,下面怎么让客户端安装我们的服务呢?先要增加一个安装程序类,切换到视图窗口,右击——>添加安装程序,便会增加一个程序安装类文件 ProjectInstaller.cs,如图:



这里serviceProcessInstaller1 和 serviceInstaller1 有几个重要属性要设置,serviceInstaller1 中的StartType要设置成Automatic,表示随机启动,ServiceName表示服务名称,Description 表示服务的描述, DisplayName 表示显示名称。

serviceProcessInstaller1 中的Account(运行此服务的帐号类型)要设置成LocalSystem,表示本地系统帐号,这样无论是哪个用户登录的系统,服务总会启动。

三. Window服务的安装

1. 使用命令符操作:我的电脑-附件-命令提示符-右击已管理员身份运行:

1.1. 安装



[align=left] 通过命令窗口,执行 InstallUtil.exe 服务路径 可安装Window服务。[/align]
[align=left] 这命令看起来是不是很长,下面教你如何看:[/align]
[align=left] 这命令符分为三段:[/align]
[align=left]   前段:c盘上.Net Framework 4.0安装的Windows下的路径。[/align]
[align=left]   中段:一个空格。[/align]
[align=left] 后段:发布后要安装的Window服务的路径。[/align]
[align=left] 上面这些路径可以直接在电脑上打开路径后,复杂,在命令符号中直接粘贴。[/align]
[align=left] [/align]
[align=left] 1.2 卸载,启动,停止[/align]
[align=left] 可直接在命令符中输入: "SC"里面有很多语法可进行操作。[/align]
[align=left] 卸载服务:sc delete '服务名称'[/align]
[align=left] 启动服务:sc start '服务名称'[/align]
[align=left] 停止服务:sc stop '服务名称'[/align]
[align=left] [/align]
[align=left] 2. 制作安装程序[/align]
[align=left] 安装程序制作 :解决方案(右击)——> 添加 ——> 新建项目 ——> 项目类型选择安装和部署 ——> 模板选择安装项目 如图 :[/align]



[align=center] [/align]
[align=left] [/align]
[align=left] 创建后,安装项目(右击) ——> 视图 ——> 文件系统 如图:[/align]



[align=left] [/align]
由于我们是安装服务,就不需要用户桌面和程序菜单了,直接应用程序文件夹(右击)——> 添加 ——> 项目输出 入图 :



上面有两点需要注意 ,一 项目选择中选择要安装的服务, 二 项目选择下面要选择主输出,选择好后确定,这一步增加了安装程序的文件夹,下一步就是给这个安装程序增加操作,这里我们增加两个基本操作,一个是安装,一个是卸载。安装项目(右击) ——> 视图 ——> 自定义操作 如图:



上面可以看到有安装,提交,回滚,卸载等操作,我们先增加安装操作,安装(右击)——> 增加自定义操作,会弹出一个对话 如图:



选择应用程序文件夹,并选中之前增加的主输出项,确定,这样这个安装程序就增加了安装的操作,同样按照这样的方式增加卸载操作,卸载与安装唯一不同的是需要设置一个命令参数,不可少,如图:



这里 Arguments 里输入 /u 表示卸载命令相当于 InstallUtil.exe /u 服务路径 , 到这里 ,我们的安装程序就已经制作好了,生成安装程序项目,将会生成 setup.exe 和 setup.msi 安装文件,拷贝到客户端,点击setup.exe 就像安装QQ一样安装我们的服务,实际上比QQ好多了,QQ还有广告,我们可是纯绿色的!



这样就可以了,不够推荐使用第一种"命令符操作",第二种测试了一下,在安装的时候有点问题,暂时还未解决,由于项目紧急,匆匆忙忙越过,呵呵,如果有谁操作成功的可以请教一下哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐