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();
}
} 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
c# 编写windows 服务,并制作安装包的更多相关文章
- 为自己编写的windows应用程序制作安装包
1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包. 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文 ...
- NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
前言 做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包. 应用程序的发布方式 应用程序发布的时候,具备以下 ...
- 利用WIX制作安装包(3)
原文 利用WIX制作安装包(3) 利用WIX安装服务非常简单.只需要短短几句话就可以.当我们创建好一个Windows服务之后.我们在项目中创建一个Service.wxs 文件来安装服务,并且编辑代码如 ...
- 利用WIX制作安装包(2)
原文 利用WIX制作安装包(2) 这一篇文章将为大家介绍如何使用WIX自定义UI.上一篇文章我们讲过WIX为我们提供了五种安装界面.每种安装界面都是由不同的Dialog组成.在这里我们挑选一种比较常用 ...
- 循序渐进做项目系列(5):制作安装包,谁人都可以!——VS制作安装包简明教程
一开始让我做安装包的时候,其实我是拒绝的.因为我根本就不会做安装包.查了资料之后,我很懵,很晕,很乱,因为不清晰,不简明,不直白.然而经过一番彷徨的挣扎,我终于发现:制作安装包,谁人都可以!故挥狼毫, ...
- VS 制作安装包小窥
难得忙里偷闲,看到有关VS制作安装包,按下文小试一把,还行,比不上Installshield. 首先在打开 VS2010 > 文件 >新建项目 创建一个安装项目 XXX 在“目 ...
- Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe
VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microso ...
- 利用WIX制作安装包(1)
原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...
- 使用VS2015制作安装包( 含相关的下载链接)
补充: 在看下面的教程过程中,如果在下面的步聚1中没有 " Visual Studio Installer", 则需要通过下面的链接进行安装 Visual Studio Insta ...
随机推荐
- windows每天定时执行脚本
windows每天定时执行脚本 这里说的定时器就是Windows下的任务计划,当时遇到的坑正好总结一下,因为Windows10的定时器去执行脚本当时试了好多遍,都是没有成功,后来通过自己的观察发现是 ...
- QinQ 技术解析
目录 1. 概述 2. QinQ 的产生背景 3. QinQ的作用及原理 4. QinQ 技术的优点 5. QinQ 的报文结构 6. QinQ的实现方式 (1) 基本QinQ (2) 灵活QinQ ...
- squid+stunnel搭建代理服务器
设备:需要两台服务器 一,外部服务器 属于外网 ip 为 47.106.8.100 1,安装squid软件 2,vi /etc/squid/squid.conf acl localnet src ...
- Linux中的网络管理——网络配置及命令
Linux网络配置 在Linux中配置IP地址的方法有以下这么几种: 图形界面配置IP地址(操作方式如Windows系统配置IP,但在实际生产中,我们并不建议在我们的服务器上安装Linux的图形界面, ...
- WebServer Project-02-XML解析
XML:Extensible Markup Language,可扩展标记语言,左卫门数据的一种存储格式或用于存储软件的参数,程序解析此配置文件,就可以达到不修改代码就能更改程序的目的. <?xm ...
- ArcGis基础—shapefile矢量文件与lyr图层文件之间有何区别?
shapefile (.shp) 是一种矢量数据存储格式,用于存储地理要素的位置.形状和属性. shapefile 存储在一组相关文件中,并包含一个要素类. 图层文件 (.lyr) 是存储源数据集路径 ...
- windows平板软件开机自启动+霸屏的操作方法
转载(忘了地址) 很好很强大.成功亲测 使用你自己的账号(最好是管理员权限的账号)登录Windows,然后添加一个给其他人使用的账户(假设为other),注意一定要为other设置密码. 运行 ...
- 多flavor导致的源码依赖问题-- Cannot choose between the following configurations of project :sample:
一.背景: 当我们在源码依赖的时候经常会导致一些问题. 我们的主工程有如下配置,它依赖了一个sample的本地工程 flavorDimensions "demo" productF ...
- FTPClient登录慢的问题
java上传文件到ftp上,发现特别慢,debug了一下发现链接正常,ftp.login(username, password)这个登录方法特别慢 解决方案: vi /etc/vsftpd/vsftp ...
- 错误 175: 具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算
问题描述:错误 175: 具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算 原因描述:一.首先我的系统是因为是win10 的有问题,重新装了系统. 二. ...