一、创建 Windows 服务程序

  1、文件 → 新建 → 项目 → 选择 Windows 服务模板,创建 WinService 项目;

  选择这个服务的属性,可以打开属性对话框。可配置如下值:

  [1] AutoLog 指定把启动和停止服务的事件自动写到事件日志中;

  [2] CanPauseAndContinue、CanShutdown 和 CanStop 指定服务可以处理暂停、继续、关闭和停止服务的请求;

  [3] ServiceName 是写到注册表中的服务的名称,使用这个名称可以控制服务;

  [4] CanHandleSessionChangeEvent 确定服务是否能处理终端服务器会话中的改变事件;

  [5] CanHandlePowerEvent 选项对运行在笔记本电脑或移动设备上的服务有效。如果启用这个选项,服务就可以响应低电源事件,并相应的改变服务的行为。

  注意:在服务开发的初始阶段,一定要在属性窗口把服务的名称改为比较适当的名称。

  

二、添加服务安装程序

  切换到服务程序设计试图,右键 → 添加安装程序,给服务添加安装程序。使用 “ 添加安装程序 ”选项时,新建一个 ProjectInstaller 类、一个ServiceInstaller 实例 和 一个 ServiceProcessInstaller 实例。

  1、安装程序类

  ProjectInstaller 类派生自 System.Configuration.Install.Installer,后者是所有自定义安装程序的基类。

  2、ServiceProcessInstaller 类 和 ServiceInstaller 类

  在 InitializeComponent() 方法的实现代码中,创建了 ServiceProcessInstaller 类 和 ServiceInstaller 类的实例。这两个类都派生于 ComponentInstaller 类本身派生于 Installer 类。

  注意:一个服务进程可以包括多个服务。ServiceProcessInstaller 类用于配置进程,为这个进程中的所有服务定义值,而 ServiceInstaller 类用于服务的配置,因为每个进程都需要 ServiceInstaller 类的一个实例。如果进程中有3个服务,则必须添加3个 ServiceInstaller 对象。

  3、ServiceInstallerDialog 类

  System.ServiceProcess.Design 名称空间中的另一个安装程序类是 ServiceInstallerDialog。在安装过程中,如果希望系统管理员输入该服务应使用的账户(具体方法是指用户名和密码),就可以使用这个类。

  4、安装 和 卸载服务

  (一)安装命令安装

  使用 installutil.exe 实用程序:

  [1] 安装命令:installUitl 服务名.exe,如下:

  

  [2] 卸载命令:installUitl /u 服务名.exe

  

  (二)安装程序安装

  1、添加安装程序:解决方案(右击)→ 添加 → 新建项目 → 其他项目类型 → 安装和部署 → Visual Stadio Installer → 安装项目   如图 :

  

 
     2、创建后,安装项目(右击) → 视图 → 文件系统 如图:
  
 

3、由于我们是安装服务,就不需要用户桌面和程序菜单了,直接 应用程序文件夹(右击)→ 添加 → 项目输出 入图 :

  

  注意:

  [1] 项目选择中选择要安装的服务;[2] 项目选择下面要选择主输出。选择好后确定,这一步增加了安装程序的文件夹,下一步就是给这个安装程序增加操作。

  4、这里增加两个基本操作,一个是安装,一个是卸载。安装项目(右击) → 视图 → 自定义操作 如图:

  

  上面可以看到有安装,提交,回滚,卸载等操作,我们先增加安装操作,安装(右击)→ 添加自定义操作, 如图:

  

选择应用程序文件夹,并选中之前增加的主输出项,确定,这样这个安装程序就增加了安装的操作,同样按照这样的方式增加卸载操作,卸载与安装唯一不同的是需要设置一个命令参数,不可少,如图:

  

这里 Arguments 里输入 /u  表示卸载命令相当于 InstallUtil.exe /u 服务路径  , 到这里 ,安装程序就制作好了,生成安装程序项目,将会生成 setup.exe 和 setup.msi 安装文件,拷贝到客户端,点击setup.exe 就像安装QQ一样安装我们的服务。

Windows Service 之 详解(二)的更多相关文章

  1. NetCore Selfhost,IIShost,Windows Service Host详解(自宿主、宿主在IIS,宿主在Windows Service中)

    第一部分.自托管 一.依赖.Net Core环境 修改 project.json 文件内容,增加发布时需要包含文件的配置内容(NetCore2.0版本不需要任何设置,NetCore2.0开始彻底放弃p ...

  2. Windows Service 之 详解(一)

    一.Windows 服务简介 Windows 服务是可以在系统启动时自动打开的(不需要任何人登录计算机)的程序. 1.适合创建Windows 服务的场景: [1] 在没有用户交互操作的情况下运行程序: ...

  3. windows socket函数详解

    windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...

  4. Python调用windows下DLL详解

    Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...

  5. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  6. 重装Windows系统 入门详解 - 基础教程

    重装Windows系统 入门详解 - 基础教程 JERRY_Z. ~ 2020 / 10 / 13 转载请注明出处!️ 目录 重装Windows系统 入门详解 - 基础教程 一.说明 二.具体步骤 ( ...

  7. windows 安装Git详解

    windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...

  8. Shiro 安全框架详解二(概念+权限案例实现)

    Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...

  9. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

随机推荐

  1. CSS:7个你可能不认识的单位

    原文:7 CSS Units You Might Not Know About 众所周知,当使用CSS技术的时候,很容被一些奇异问题给困住.而当我们面对新的问题时,这会让我们处于非常不利的位置. 但是 ...

  2. [.NET源码学习]实例化Font,遭遇字体不存在的情况。

    实例化Font类时,当传入参数为不存在或未安装的字体时,Windows系统会用Microsoft Sans Serif字体替代该字体. Msdn: "For more information ...

  3. http和数据库sql分析与窃听技术

    用tunnel,tunnel是一种技术称谓,将其放到真正的服务器和客户端之间.调试阶段可以使用webcream运行tomcat作为模拟的真正的服务器. 具体:用apache axis及其项目中的工具t ...

  4. MVC使用Google OAuth[OWIN]注意事項

    1.前提條件,申請一個client id,頁面:https://console.developers.google.com/ 2.添加連接域名,javascript那欄位為域名即可,另一欄需要加上具體 ...

  5. 【转】使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

    本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...

  6. php-fpm占用系统资源分析

    故障检测 1.别的先不管,先top看一下cpu.ram.swap哪个比较紧张. 由上图分析,可以看出共有602个进程,其中有601个进程休眠了.这好像有点不对劲,内核进程也就80个左右,加上memca ...

  7. LCA + 二分(倍增)

    两个最近的点u和v的最近的公共的祖先称为最近公共祖先(LCA).普通的LCA算法,每算一次LCA的时间复杂度为线性o(n); 这里讲LCA + 二分的方法.首先对于任意的节点v,利用其父节点的信息,可 ...

  8. 进程控制块PCB学习

    参考这篇文章:http://blog.csdn.net/shuizhilan/article/details/6642040 PCB(process control block),进程控制块,是我们学 ...

  9. 框架学习笔记:深度解析StrangeIoC内部运行机制

    StrangeIoC的设计和RobotLegs一致,所以我的解析会对照RobotLegs来看. 整个框架使用的是MVCS的模式,关于MVCS模式大家可以点这里进行查看,这里就不谈了,既然Strange ...

  10. opennebula虚拟机启动失败

    问题1 故障现象: Wed Jan :: [DiM][I]: New VM state is ACTIVE. Wed Jan :: [LCM][I]: New VM state is PROLOG. ...