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

(图1)

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

(图2)

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

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

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

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

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

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

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

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

接下来,就该配置一下安装过程,让安装程序自动给我们安装和卸载Windows服务。还是右键安装项目,选“视图”->“自定义操作”,如图11:

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

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

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

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

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

最早写windows服务的时候,不知道如何用制作安装程序来安装。通常都是用命令InstallUtil来安装卸载,但我记性不好,这个讨厌的命令总记不住,而且,用这个命令安装后,在service里面看不到所启动的服务。
    后来找了下资料,终于找到如何制作windows service安装程序,用安装程序,会自动在service里面增加该服务,可以随意停止启动,也可以用自带的删除程序来删除,使用非常方便,唯一的问题是每次打包需要很长时间。
都使用了windows service installer快两年了,还是记不住如何去使用。(人懒没办法),现在整理出来:
1.将写好的windows服务切换到设计视图,右键-添加安装程序
2. 切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Account属性设置为 LocalSystem,对serviceInstaller1的ServiceName属性设置为Server1(服务的名字),StartType属 性设置为Automatic(系统启动的时候自动启动服务)
3.建立一个新的安装项目ServerSetup(我们为刚才那个服务建立一个安装项目)
4.右键-添加-项目输出-主输出-选择Service1-确定
5.右键-视图-自定义操作-自定义操作上(安装)右键-添加自定义操作-打开应用程序文件夹-选择刚才那个主输出-确定
6.右键-视图-自定义操作-自定义操作上(卸载)右键-添加自定义操作-打开应用程序文件夹-选择刚才那个主输出-确定 -设置(arguments属性='/u' 作为卸载时并卸载服务)
7.重新生成,在安装项目下的bin或release下,可找到可执行的安装程序,里面已经包含了所有需要的类库等。
8.双击安装程序安装后,在服务管理器中(我的电脑-右键-管理-服务和应用程序-服务)找到Server1服务,启动服务

如果想要在本地快速安装,调试,在安装项目上点击右键可实现快速安装卸载。

转载于:https://www.cnblogs.com/tomkillua/archive/2009/06/26/1511366.html

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

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

    最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 白话讲山寨SOA,少一些迷惑、多一些理解,你的程序架构SOA了吗?
  2. vim 复制一行并且粘贴_Vim常用命令2之文本操作
  3. 怎么给图片降噪?WidsMob Denoise 图片降噪教程
  4. 漫步最优化三十——非精确线搜索
  5. @ModelAttribute使用详解
  6. ES6-18:class类及其继承
  7. 纯干货 | UI界面中按钮设计汉堡按钮\菜单
  8. pvid和vid区别,tag口和untag口区别
  9. postgresql 使用pg_restore时显示role root does not exist的解决办法
  10. convert for mysql_DBConvert for MySQL PostgreSQL下载|DBConvert for MySQL PostgreSQL官方下载-太平洋下载中心...
  11. NProxy——Mac和Linux平台下的Fiddler
  12. 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别
  13. 1.19 JQuery高级
  14. Android新手常见问题(一)
  15. 优秀新媒体文案的4种必备能力
  16. IE6,IE7中 按钮的宽度随着内容的增多而增长
  17. 【从零开始的机器学习】-03 一元线性回归与代价函数
  18. 区块链投资分歧:蔡文胜麦刚入局 朱啸虎张颖看衰
  19. springBoot 在过滤器中如何捕获抛出的异常并自定义返回信息
  20. DOS发包攻击软件下载(需Python环境)

热门文章

  1. spring 同时配置hibernate and jdbc 事务
  2. Roundcube Webmail信息泄露漏洞(CVE-2015-5383)
  3. C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
  4. 关于重复接收NSNotificationCenter发送的通知的问题
  5. 两条实用的 SQL 语句
  6. 设计模式 之 --- GRASP
  7. Effective C# Item23:避免返回内部类对象的引用
  8. 部署承载于 Internet 信息服务中的 WCF 服务
  9. Linux下文件的三个时间意义及用法
  10. eclipse设置自定义快捷键