.net Windows服务程序和安装程序制作图解

转载 2011年12月20日 11:24:59

 

      一、创建window服务项目

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

 

      二、编写Window服务程序

      创建后会生成两个文件 Program.cs 和 Service1.cs ,其中 program.cs 这个文件不用动,里面已自动生成好了。我们在Service1.cs里增加所要的操作,里面有两个重写方法 OnStart 和 OnStop ,OnStart 方法表示服务启动的操作,OnStop 表示服务停止的操作,下面写了一个简单示例 :当服务启动后,调用远程一个WebService的Hello函数,并把返回的值写入到一个文件中。code如下:

代码
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->/// <summary>
        
/// 服务启动的操作
        
/// </summary>
        
/// <param name="args"></param>
        protected override void OnStart(string[] args)  
        {
            StartHello();
        }

        
/// <summary>
        
/// 服务停止的操作
        
/// </summary>
        protected override void OnStop()
        {
            
try
            {
                ThreadHello.Abort();

                Flag 
= false;

                System.Diagnostics.Trace.Write(
"线程停止");
            }
            
catch (Exception ex)
            {
                System.Diagnostics.Trace.Write(ex.Message);
            }
        }

        
private Thread ThreadHello;

        
private void StartHello()
        {
            
try
            {
                
// 标准形式
                
                
//ThreadStart NewThreadStart = new ThreadStart(VoidName);
                
//Thread NewThead = new Thread(NewThreadStart);
                
//NewThead.Start();

                ThreadHello 
= new Thread(new ThreadStart(Hello));
                ThreadHello.Start();
                System.Diagnostics.Trace.Write(
"线程任务开始");
            }
            
catch (Exception ex)
            {
                System.Diagnostics.Trace.Write(ex.Message);
                
throw ex;
            }
        }

        
private void Hello()
        {
            
while (Flag)
            {
                localhost.AdvService la 
= new WindowsService1.localhost.AdvService();
                
try
                {
                    
string helloname = la.Hello("Andy"); // 调用远程WebService中的方法
                    writeInLog(helloname, false);   // 把调用返回的数据写入到文件中
                }
                
catch (Exception ex)
                {
                    System.Diagnostics.Trace.Write(ex.Message);
                    
throw ex;
                }

                Thread.Sleep(
5000);
            }
        }

        
/// <summary>
        
/// 写入文件操作
        
/// </summary>
        
/// <param name="msg">写入内容</param>
        
/// <param name="IsAutoDelete">是否删除</param>
        private void writeInLog(string msg, bool IsAutoDelete)
        {
            
try
            {
                
string logFileName = @"E:\Sample\PG_Sample\log.txt"// 文件路径
                FileInfo fileinfo = new FileInfo(logFileName);
                
if (IsAutoDelete)
                {
                    
if (fileinfo.Exists && fileinfo.Length >= 1024)
                    {
                        fileinfo.Delete();
                    }
                }
                
using (FileStream fs = fileinfo.OpenWrite())
                {
                    StreamWriter sw 
= new StreamWriter(fs);
                    sw.BaseStream.Seek(
0, SeekOrigin.End);
                    sw.WriteLine(
"=====================================");
                    sw.Write(
"添加日期为:" + DateTime.Now.ToString() + "\r\n");
                    sw.Write(
"日志内容为:" + msg + "\r\n");
                    sw.WriteLine(
"=====================================");
                    sw.Flush();
                    sw.Close();
                }
            }
            
catch (Exception ex)
            {
                ex.ToString();
            }
        }

 

      例子很简单,方便理解,上面通过线程,每5秒执行一次操作,到这里,我们的服务以及服务实现的功能就已经写好了,下面怎么让客户端安装我们的服务呢?这里才是我写这篇文章的目的!先要增加一个安装程序类,切换到视图窗口,右击——>增加安装程序,便会增加一个程序安装类文件 ProjectInstaller.cs,如图:

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

      Window服务的安装有两个方式:

      一、命令安装

 
       通过命令窗口,执行 InstallUtil.exe 服务路径 可安装Window服务,你是不是觉得我在扯,这么长的命令怎么看?怎么记住?可以想想如果客户端是一个不懂程序的人是不可能自己完成安装的,那么能不能制作一个简单有效,点点按钮可以安装的呢,答案是肯定的 ——> 安装程序制作
       二、安装程序
       安装程序制作 :解决方案(右击)——> 增加 ——> 新建项目 ——> 项目类型选择安装和部署 ——>  模板选择安装项目   如图 :
 
     创建后,安装项目(右击) ——> 视图 ——> 文件系统 如图:
 

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

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

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

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

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

C#创建windows服务程序,并制作windows服务安装包。

首先创建一个windows服务,然后添加安装程序。点击右键,选择添加安装程序。设置服务的属性值:选择serviceInstaller1,将ServiceName值改成与自己的项目名称相同的值。将Sta...
  • tjuyyb
  • tjuyyb
  • 2015年09月01日 10:20
  • 3211

.net windows 服务创建、安装、卸载和调试

原文:http://www.cnblogs.com/hfliyi/archive/2012/08/12/2635290.html   我对例子做了小修改   windows服务应用程序是一种长期运行在...
  • angle860123
  • angle860123
  • 2013年12月17日 14:03
  • 16062

.net Windows服务程序和安装程序制作图解

最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作不成功,可能是开发环境或项目配置的不同,这里把自...
  • yw1688
  • yw1688
  • 2015年01月06日 10:00
  • 295

.net Windows服务程序和安装程序制作

.net Windows服务程序和安装程序制作       最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上...
  • wei_wu49036233
  • wei_wu49036233
  • 2014年08月25日 11:16
  • 414

详解.net制作Windows服务程序和安装程序图解

本文详细讲解在.net开发Windows服务程序与安装程序制作图解教程,本文讲解的环境配置如下:系统:WIN2003.NET环境:VS2008数据库:SQL2005      一、创建window服务...
  • ilonhoo
  • ilonhoo
  • 2010年10月20日 09:15
  • 2140

.net Windows服务程序和安装程序制作图解 (转)

.net Windows服务程序和安装程序制作      最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料...
  • ulark
  • ulark
  • 2010年01月22日 11:39
  • 296

asp.net制作windows服务并打包安装的过程

新建一个windows服务在网上可以搜到很多相关说明,最简单测试就是拖一个Timer加上安装程序; 这些在网上可以找到很多例子,这里就不作说明了,以下是记录我操作过程中遇到的问题,相信很多新手也会遇...
  • ArmyFai
  • ArmyFai
  • 2013年10月22日 18:21
  • 701

.net Windows Service安装包制作

本文主要是讲解怎么做一个Windows Service及带卸载功能的安装包,并在安装完服务后自动启动服务。 VS2010、C#、.net 4.0...
  • yeqi3000
  • yeqi3000
  • 2016年01月07日 15:50
  • 2738

C# Windows服务程序之添加安装程序图解

C# Windows服务程序之添加安装程序的前言:最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多。像后台运行不阻塞系统,不用用户登录之类。哈哈,扯...
  • deepwishly
  • deepwishly
  • 2010年12月29日 14:24
  • 1325

Windows软件安装包制作工具汇总

1 Windows Intaller 2 WinRAR 参考资料 [1]图解Windows Installer制作软件安装包 [2]用winrar制作EXE安装包...
  • Q1302182594
  • Q1302182594
  • 2016年06月09日 06:53
  • 5468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net Windows服务程序和安装程序制作图解
举报原因:
原因补充:

(最多只允许输入30个字)