十步完成windows服务的安装
可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间。在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用InstallUtil.exe及其参数。事实上,既然要安装.net下制作的windows服务,肯定首先得在目标机器上安装有.net框架。因此,InstallUtil.exe也一定已经存在目标机器上了,因而利用微软的傻瓜式操作就能很好地解决windows服务安装和卸载的问题。
过一段时间估计还要狠狠地利用windows服务来完成一些功能,为了加深印象,又回过头弄了一个名叫HelloWorldService的windows服务,用最简单的demo来完成所有的操作。这个服务的功能,仅仅是在它启动的时候创建一个HelloWorld.txt文件,里边写上Hello World!这几个简单的字母而已。 1、选择Visual C#->Windows->Windows 服务,创建一个HelloWorldService项目。 2、通过ServiceName更改服务的名称为”HelloWorldService“,这是最后在安装服务成功后在服务管理面板出现的名称。 3、将Service1.cs更名为HelloWorldService.cs,在其OnStart方法中写入简单的代码,用来实现创建文件并写入“Hello World!"这几个经典字母。 4、在HelloWorldService.cs的设计界面点右键,在弹出菜单中选择”添加安装程序“。 点击后出来的设计界面上添加了两个控件——ServiceProcessInstall和ServiceInstaller。
ServiceProcessInstall安装一个可执行文件,该文件包含扩展 ServiceBase 的类。该类由安装实用工具(如 InstallUtil.exe)在安装服务应用程序时调用。在这里主要是修改其Account属性。ServiceAccount指定服务的安全上下文,安全上下文定义其登录类型。
LocalService 充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。 ServiceInstaller安装一个类,该类扩展 ServiceBase 来实现服务。在安装服务应用程序时由安装实用工具调用该类。在这里主要修改其StartType属性。此值指定了服务的启动模式。 Automatic 指示服务在系统启动时将由(或已由)操作系统启动。如果某个自动启动的服务依赖于某个手动启动的服务,则手动启动的服务也会在系统启动时自动启动。 5、上面这些都是安装包最终要安装/卸载的对象。下面就来看看如何用.net制作安装包。 6、添加工程后,在默认的视图界面右键点击”应用程序文件夹“,选择”添加“->”项目输出“。 在弹出的窗口中选择”主输出“,点击”确定“。
7、上面的步骤定义了最后在应用程序文件夹中包含的内容。下面来定义其他方面的内容。在项目上点右键,选择 视图->自定义操作。
8、出来如下的界面,然后在”自定义操作“上点右键,选择”添加自定义操作“。
在弹出的窗口中双击”应用程序文件夹“。 然后选择”主输出来自HelloWorldService(活动)“,点击”确定“。 选择之后会发现所有的操作下边都添加了刚才选定的项。做到这一步,就能使安装程序卸载时不仅把程序卸载下来,也能把服务卸载下来。 9、接下来在安装项目上点右键,选择”生成“,就能使安装程序正常发布了,成功后会生成两个文件。 把这两个文件拷到目标机器上,双击HelloWorldSetup.msi文件,就可以开始安装服务的征途了。
安装成功后,就可以从服务管理面板中欣喜地看到我们梦寐以求的服务程序了。
不过在我点启动的时候,还出现了一段小插曲——系统报错了。错误如下图: 不过不用急,这种错误可以在系统的”事件查看器“中的”应用程序“选项中查看具体的错误信息。 呵呵,原来是由于服务对于文件系统的操作权限问题所引起的。跑回去一看,发现在第5步中对ServiceProcessInstaller的Account设置成了LocalService,于是乎改成了LocalSystem。然后重新发布安装程序,再重新安装服务,再启动,呵呵,一切正常! 10、最后,一起来欣赏这个windows 服务的成果: 总结:遇到问题的时候一定要冷静,由浅入深系统地了解当前事务,而不要急于求成,这样的效率反而会比较低下 |
最近写了几个Windows后台服务,总要用命令安装,然后又得跑到服务管理里面找出服务,Start,Stop…… 实在是受不了,就写了个脚本,放上来大家有用的话就拿去用吧!
安装服务的脚本: (.bat)
@echo off
echo 开始安装程序
echo ......
if exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe -i %cd%\要安装的服务.exe
if not exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe
echo 请安装.Net Framework v1.1.4322
echo 安装 要安装的服务.exe 程序结束
echo ……
pause
卸载的脚本: 中国网管联盟www_bitscn_com
@echo off
echo 卸载程序开始
echo 开始卸载 要安装的服务.exe
echo ……
%windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe -u %cd%\要安装的服务.exe
echo 卸载要安装的服务.exe 完成
echo ……
pause
启动服务:
54ne.com
net start "服务名称"
关闭服务: 54com.cn
net stop "服务名称"
feedom.net
转载于:https://www.cnblogs.com/dudu837/archive/2009/08/20/1550821.html
十步完成windows服务的安装相关推荐
- [图]为C# Windows服务添加安装程序
最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...
- 为C# Windows服务添加安装程序
首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留言问我),然后要给服务"添加安装程序",如图1所示:(这一步和自己用InstallUtil注册 ...
- C# Windows服务自动安装与注册
[转]http://www.cnblogs.com/jiewei915/archive/2010/11/11/1874827.html 首先,当然是创建一个Windows服务的项目.这个大家应该都知道 ...
- MongoDB作为windows服务来安装-2
首先区官网下载对应版本的安装文件,我本地的环境是win7 bit64 我下载的版本是: mongodb-win32-x86_64-2.4.6 ok, 文件下载后,开始安装,这里要说一下,如果直接启动 ...
- windows服务,安装、启动、停止,配置,一个批处理文件搞定
相对而言,还是比较通用的吧,如果哪位仁兄有更好的实现方式,或者发现有不足之处,还请多多指教. @echo off echo.------------------------------------- ...
- 如何为windows服务添加安装程序(转)
1.将写好的windows服务切换到设计视图,右键-添加安装程序 2.切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Accoun ...
- Windows服务(Service)安装及启动停止方案
目录 一.创作背景 二.问题解决 2.1 安装Windows service服务 2.2 主方法Main()主方法改写 2.3 安装service服务/卸载service服务 2.4 服务启停 2.5 ...
- C#Windows 服务制作安装删除. 用户注销后,程序继续运行 (转载)
转载自:http://www.cnblogs.com/gfwei/archive/2009/01/16/889878.html 原作者:孤峰皓月 一个程序,需要在服务器上运行,编完了以后,到服务器运行 ...
- Windows服务的安装,启动,停止和卸载
直接贴代码如下 public class RunServices{/// <summary>/// 安装并启动服务/// </summary>/// <param nam ...
最新文章
- Spring 数据源配置与应用
- 【转载】应读者强烈要求给出《超容易的Linux系统管理入门书》一书的主要知识点...
- 通过docker搭建zabbix监控系统
- linux 为开发板添加板级文件config.h
- Tool之Git:Git的简介、安装、使用方法之详细攻略
- 【MM模块】 Goods Receipt 收货 4
- 查看MySQL服务端版本
- iOS iphone屏幕分析(岂止而大)
- 关于xfce中桌面没法显示回收站以及thunar中无法进行卷管理的解决办法
- StakeDAO新增Sushiswap流动性奖励计划
- 5G 来了,需要更换 SIM 卡吗?
- Java 高级数据结构 —— Properties
- 外表加载oracle,opengauss外部表插件——oracle_fdw
- 性能测试二八原则,响应时间2/5/8原则
- 三次hermite插值多项式例题_分段三次Hermite插值及其与三次样条的比较
- Python题目:个人所得税计算
- sw2014计算机配置,SolidWorks 2014电脑配置要求
- paypal php 退款,PayPal的Restful-API方式退款、WEB支付、回调
- 台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
- 在html中ex是什么单位,前端用到的那些单位