最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多。像后台运行不阻塞系统,不用用户登录之类。哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安装包。为什么做安装包?当然是方便了,不用每次调用InstallUtil,还有,就是看上去正规些。

不多说了,先来看看怎么做吧。首先,当然是创建一个Windows服务的项目。这个大家应该都知道怎么做(这都不明白的留言问我),然后要给服务“添加安装程序”,如图1所示:(这一步和自己用InstallUtil注册是完全一样的)

(图1)

添加后,会出来一个serviceProcessInstal1,还有serviceInstaller1,如果你一个项目里有两个服务的话,这里就会有两个serviceInstaller类,如图2:

(图2)

图3是serviceProcessInstal1的属性页,其中Account就是指用于运行服务的帐户,如果只是用于本地,可以选LocalSystem(本地系统),这是本地的最高权限,并可以选择和桌面交互功能。如果安全性考虑的话,请选择适合自己的。

(图3)

图4是serviceInstaller2的属性页,其中DisplayName就是显示在Windows服务管理器中的服务名称,Desciption是服务的说明。下面ServiceName是服务内部名称。最关键的是下面的StartType,是指服务的启动方式,是自动,手动和禁用三种。


(图4)

下面,就是今天讲的重点了,点击“文件”->“添加”->“新建项目”(如图5)

(图5)

选择“其他项目类型”->“安装和部署”里的“安装项目”(如图6)

(图6)

建好项目后,右键刚才新建的安装项目,选择“视图”->“文件系统”(如图7)

(图7)

这时,打开了文件系统属性。可以看到,屏幕左边,出现了三项文件系统的内容,因为我们是Windows服务程序,不需要在开始菜单和桌面上放置图标,所以我们直接右键“应用程序文件夹”->“添加”->“项目输出”(如图8)

(图8)

在出来的对话框中,选择“主输出”和“Release XXX”,这个由你的项目属性决定,一般选择Release Any CPU。(如图9)

(图9)

系统会自动把项目输出文件,也就是Windows服务程序的EXE文件和所有引用的类库文件都列在中间的框中。这时,为了方便安装,我们把InstallUtil.exe和两个我自己写的批处理文件一起添加进去。添加方法类似上面,只是把“项目输出”改成“文件”。
结果如图10所示:

(图10)

接下来,就该配置一下安装过程,让安装程序自动给我们安装和卸载Windows服务。

还是右键安装项目,选“视图”->“自定义操作”,如图11:

(图11)

左边的窗口换到了自定义操作的视图了,右键“安装”->“添加自定义操作”(图12),出现的对话框中,选中“应用程序文件夹”,再选中其中的InstallUtil.exe文件(图13),添加好后,会在安装操作下面多出一个InstallUtil.exe的分支。点一下它,在右边的属性页里,设置Arguments=“ 你的Windows服务文件名”,如图14(注意文件名前要留一个空格)

(图12)


(图13)


(图14)

同样,在提交和卸载处,也添加InstallUtil.exe,不过属性页中设置Arguments=“ -u 你的Windows服务文件名”,这样,安装程序就能实现自动安装注册和卸载Windows服务了。(如图15)

(图15)

接下来就该让Windows服务和安装项目同时被编译了。右键点击解决方案,选择“属性”(如图16),在出来的对话框中,勾上安装项目后面的生成。(如图17)

(图16)


(图17)

最后,右键解决方案,选择“生成解决方案”,这时vs会将两个项目都会编译出来。不过要注意一点:项目的启动顺序一定要Windows服务项目在前,安装项目在后。

以上是我个人的一点小小经验,如果有同行愿意指教或者交流,请留言联系。

转自:http://www.tz8.net/post/182.html

[图]为C# Windows服务添加安装程序相关推荐

  1. 为C# Windows服务添加安装程序

    首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留言问我),然后要给服务"添加安装程序",如图1所示:(这一步和自己用InstallUtil注册 ...

  2. 如何为windows服务添加安装程序(转)

    1.将写好的windows服务切换到设计视图,右键-添加安装程序  2.切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Accoun ...

  3. C# Windows服务自动安装与注册

    [转]http://www.cnblogs.com/jiewei915/archive/2010/11/11/1874827.html 首先,当然是创建一个Windows服务的项目.这个大家应该都知道 ...

  4. 十步完成windows服务的安装

    十步完成windows服务的安装   可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间.在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用In ...

  5. 创建一个windows服务的小程序及注意事项

    1,首先在vs中创建一个windows服务项目 会生成一个Service1.cs的文件  打开该文件 切换到代码视图  有两个方法   OnStart(string[] args)和OnStop()方 ...

  6. C#Windows 服务制作安装删除. 用户注销后,程序继续运行 (转载)

    转载自:http://www.cnblogs.com/gfwei/archive/2009/01/16/889878.html 原作者:孤峰皓月 一个程序,需要在服务器上运行,编完了以后,到服务器运行 ...

  7. Windows服务(Service)安装及启动停止方案

    目录 一.创作背景 二.问题解决 2.1 安装Windows service服务 2.2 主方法Main()主方法改写 2.3 安装service服务/卸载service服务 2.4 服务启停 2.5 ...

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

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

  9. linux dhcp 服务失败,Centos7安装及配置DHCP服务,安装程序配置服务失败

    Centos7安装及配置DHCP服务,安装程序配置服务失败 DHCP服务概述: 名称:DHCP  - Dynamic Host Configuration Protocol  动态主机配置协议. 功能 ...

最新文章

  1. CocoaPods 原理分享及遇到的问题改进
  2. 报文加解密原理_加密系统的组成与过程
  3. mysql自定义序号_MySQL数据库之在mysql中给查询的结果添加序号列
  4. c语言程序设计黄保和第二章,C语言程序设计答案(黄保和编)第6章
  5. [剑指offer]面试题28:字符串的排列
  6. ❤️《大前端—Babel》
  7. 首座生态厕所亮相兰州 生物降解“三年不臭”
  8. JavaWeb学习笔记(十三)之session的钝化和活化
  9. PAT练习集L1之四(10分题之不仔细看头铁wa题)
  10. python绘制箭头_python如何绘制坐标箭头?
  11. linux双网卡配置,静态路由表配置
  12. 从浏览器沦为系统毒瘤:无法禁用的IE背后,是几百亿的家族生意。。。
  13. OpenGL绘制三角形
  14. postman获取返回值及tests[]用法
  15. Orcal 用户权限
  16. Gvim高级操作001--对匹配关键字进行操作--数字运算结果替换
  17. 大型IT企业内部数据分析的现状和发展趋势
  18. RENIX软件RTSM基本操作_Linux——网络测试仪实操
  19. 美中嘉和赴港IPO背后:毛利率大幅下滑,杨建宇控股2家公司均亏损
  20. 如何处理前端js报错——容错处理的汇总

热门文章

  1. Wireshark非标准分析port无流量
  2. 启明星会议室系统与Office365集成说明
  3. 掌握Tiles框架 (二)-- Tiles布局和定义
  4. HDOJ HDU 2080 夹角有多大II ACM 2080 IN HDU
  5. Qomolangma实现篇(七):Qomo的接口机制
  6. c#_StringBuilder的用法总结
  7. 七天学习计划_c#_[6][7]多线程
  8. python分片是什么_python中的分片
  9. php 线条的绘制,在非常高的图像上使用PHP绘制线条,脚本停止绘制.怎么了,怎么解决?...
  10. bat 命令返回结果_bat教程[284] unzip解压