c# 编写windows 服务,并制作安装包

  对服务的认识有很多个阶段。

  第一阶段:当时还在用c++,知道在一个进程里while(True){},然后里面做很多很多事情,这就叫做服务了,界面可能当时还用Console控制台程序。

  第二阶段:知道了服务要在后台执行,一般不会有界面显示,并且开机自启动,于是隐藏Console控制台界面,并且通过使用SC CREATE 将exe变为服务,并且达到开机自启动的目的。这时候还是c++ 阶段。

  第三阶段:因项目需求接触c#,发现有个叫项目模板专门制作windows 服务,尝试了下,感觉还不错,省事了许多。通过命令行安装服务。

  第四阶段:发现了一个好东西可以制作安装包,省去了敲命令行的痛苦,对实施人员来说肯定是个福音

一,编写windwos 服务

  c# 编写windows 服务还算是相当简单的,至少比c++ 要简单。

  1,新建项目windows 服务。填写服务名称TestService

  创建成功,项目界面是这样的

  2,编写服务代码,右键TestService,查看代码 OnStart,编写启动代码 。OnStop编写停止代码

namespace TestService
{
    public partial class TestService : ServiceBase
    {
        FileStream fs = null;
        StreamWriter sw = null;
        Thread td = null;
        public TestService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            td = new Thread(WorkThread);
            td.Start();
        }
        protected void WorkThread()
        {
            fs = new FileStream(@"f://ggg.txt", FileMode.OpenOrCreate, FileAccess.Write);
            sw = new StreamWriter(fs);
            while (true)
            {

                sw.WriteLine(DateTime.Now.ToString());
                sw.Flush();

                Thread.Sleep(2000);
            }
        }

        protected override void OnStop()
        {
            if(td != null)
            {
                td.Abort();
            }
            sw.Close();
            fs.Close();

        }
    }
}

  3,双击TestService.cs,在右边空白处右键添加安装程序 ,会出现这样两个东西,点击serviceInstall1 修改服务的名字,以及启动类型。点击serviceProcessinstall1,改变Account 为LocalSystem.

  4,OK 大功告成,一个简单的服务已经完成了。接下来,我们测试该服务是否能够正常跑。右键管理员打开命令提示框,数据 installutil TestService(服务名称)  进行安装服务,顺利的话,会有下面的提示完成的字符。这时会看到F盘忽悠ggg.txt 在写文件。

  二、制作安装包

  开始制作安装包,我们不能每次把这个服务拿出去都用命令行去安装,不太友好。右键解决方案,在其他类型点击安装部署,如果发现没有安装,就先去安装这个工具,很简单,VSI_bundle.exe 只有5M大小。

  在应用程序文件夹上右键添加项目输出。

  右键工程-》视图-》添加自定义操作-》右键添加自定义操作

  这个时候,重新编译Setup 工程就会生成setup.exe,该exe 就是我们的服务安装包。到此,整个服务编写打包就已经完成。

  good luck

时间: 2024-07-29 04:37:15

c# 编写windows 服务,并制作安装包的相关文章

为自己编写的windows应用程序制作安装包

1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包. 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文件拷贝到不同的目录.那么window安装包做了什么呢? msi里面有一个table,里面是一条条的指令,windows installer会解释并执行这些指令. 它还是会把安装包里面的文件拷贝到相应的目录.关键是它除了拷贝还做了哪些事情呢? 3 安装包除了把相应的文件放到不同的目录下,还做了哪些事情

InstallShield 12 制作安装包

目  录 一.       InstallShield安装... 2 二.       InstallShield 破解... 2 三.       制作安装包... 2 (一) 打开project... 2 (二) project助手页面... 3 1.Application Information:程序信息... 4 2.Installation Architecture: 安装包结构... 4 3.Application Files:指定安装的文件默认目标路径... 5 4.Applica

java程序打包jre以及制作安装包

分享一篇文章: java程序打包jre以及制作安装包 传智&黑马咨询郑老师 java程序打包jre以及制作安装包Java的桌面程序写好以后只能在eclipse下运行是不可以的,还需要将程序拷贝到其他电脑上运行才可以,所以需要制作成其他电脑可以运行的文件,当然在安装有jdk的电脑上只需要将程序导出为jar文件就可以运行了,但是除了开发java程序人员的电脑上会安装jdk,其他人的电脑上不会有这个环境,所以还需要将java可运行的环境一同打包到程序中去,这样,在用户不安装jdk的情况下也可以运行.制

运用VS制作安装包

一.VS2005制作安装包的“系统必备”选项“系统必备”,通过该选项,可以选择部署应用程序需要预先安装的组建,包括.net fx和MDAC等.“系统必备”选项中可以不仅可以选择需要预安装的组件,而且提供了“安装源”的自由选择.打开系统项目属性,选择发布->系统必备,如下图: 在系统中我们把dotnet2.0框架打包到项目布署中,当安装软件的用户当前没有dotnet2.0框架时将自动进行dotnet2.0框架的安装,安装完框架后才继续软件系统的安装.二.制作安装布署程序的步骤1.新建项目,选择安装

Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe

VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microsoft Visual Studio 2017 Installer Projects 打开vs2017 ,选择 工具 --> 扩展和更新 --> 联机,搜索Microsoft Visual Studio 2017 Installer Projects,进行安装.安装好以后,重启vs2017 2.新建程

使用C语言编写windows服务一般框架

原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册,否则会导致服务启动失败.因近期写个服务,其中遇到一些有问题,有部分内容想和大家分享一下,请大家指正. windows服务一般框架代码如下: #include <Windows.h> #include <tchar.h> VOID WINAPI ServiceHandler(DWORD

使用Qt installer framework制作安装包(不知道是否适合Mac和Linux?)

一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很明显,可执行程序体量较大,光Qt核心库加起来就得十多兆.(2)制作安装包发布.这种方式的原理也简单,就是将可执行程序和其依赖的库文件一起打包压缩,制作成安装包发布.制作安装包的工具挺多,今天要说的是Qt官方的安装包制作框架Qt installer framework.这个框架由Qt官方出品,广泛应用

installshield 制作安装包中执行其他程序LaunchAppAndWait的简介

最近在研究用instanllshield来制作安装包,并进行数据的创建,掌握到installshield中的LaunchAppAndWait 函数该函数是在运行的时候,运行其他程序,并能传递参数以及是否静默运行的效果. 例如: szScriptPath =SUPPORTDIR+"\\CREATEORACLEUSER.SQL";    LongPathToQuote(szScriptPath, TRUE);    szCmdLine = DBUSER + "/" +

python制作安装包(setup.py)

1.制作setup.py from distutils.core import setup setup(name='Myblog', version='1.0', description='My Blog Distribution Utilities', author='lujianxing', author_email='[email protected]', url='http://blog.lujianxing.com', py_modules=['foo'] ) py_modules 定