C# Windows服务添加安装程序

最近一直在搞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服务项目在前,安装项目在后。

 
如下为微软网站信息(我照上面没有成功,后来发如今12步有问题),按下面成功!
 

建立 Windows 服务的安装项目

此部分介绍如何建立 Windows 服务项目,以及如何安装 Windows 服务中使用已编译的安装项目。

建立 Windows 服务项目

  1. 启动 Microsoft Visual Studio。
  2. 文件 菜单上指向 新建 ,而后单击 项目
  3. 单击 项目类型 下的 Visual C# 项目 ,而后单击 模板 下的 Windows 服务

    请注意 在 Visual Studio 2005 或 Visual Studio 2008,展开 项目类型 下的 Visual C# 、 单击 Windows ,而后单击 模板 下的 Windows 服务
  4. 类型 名称 文本框而后键入 C:\ 位置 文本框中的 LogWriterService 。 单击 肯定
  5. 在解决方案资源管理器右键单击 Service1.cs ,而后单击 查看代码
  6. OnStart 事件处理程序中请使用下面的代码替换注释:
    EventLog.WriteEntry("My simple service started.");
  7. 在解决方案资源管理器中,双击 Service1.cs
  8. 在代码编辑器窗口中右键单击 设计视图 ,而后单击 属性
  9. 在属性窗格中单击 添加安装程序 连接。
  10. 在属性窗格的 ServiceInstaller 1 中, 更改 ServiceName Service 1 的属性。
  11. 在设计视图中代码编辑器窗口中,单击 ServiceProcessInstaller 1
  12. 在属性窗格中更改成 LocalSystem (</a0>- LocalService NetworkService 的值是仅在 Microsoft Windows XP 中可用) 的 账户 属性。

使用编译的安装项目安装 Windows 服务

在完成上一节来配置 Windows 服务项目中的步骤以后,请按照下列添加部署项目打包服务应用程序,以即可以安装服务应用程序的步骤操做:
  1. 将一个新项目添加到 LogWriterService 项目。 要这样作,请按下列步骤操做:
    1. 在解决方案资源管理器右键单击 解决方案 LogWriterService (1 项目) 指向 添加 ,,单击 新建项目
    2. 单击 安装和部署项目 项目类型 ,而后单击 模板 下的 安装项目
    3. 名称 文本框中,键入 ServiceSetup
    4. 类型 位置 文本中的 C:\ 框,而后单击 肯定
  2. 通知到包是部署项目。 要这样作,请按下列步骤操做:
    1. 在解决方案资源管理器右键单击 ServiceSetup ,指向 添加 ,而后单击 项目输出
    2. 添加项目输出组 对话框的在 项目 框中单击 LogWriterService
    3. 单击 主输出 ,而后单击 肯定
  3. 对于正确的安装添加仅主输出。 若要将自定义操做请按照下列步骤操做:
    1. 在解决方案资源管理器右键单击 ServiceSetup ,指向 视图 ,而后单击 自定义操做
    2. 右键单击 自定义操做 ,而后单击 添加自定义操做
    3. 单击 应用程序文件夹 ,而后单击 肯定
    4. 单击 主输出来自 LogWriterService (Active) ,而后单击 肯定

      请注意 主输出 显示在 安装 提交 回滚 卸载
  4. 默认,安装项目都不算生成配置。 若要生成解决方案,使用下面的方法:
    • 方法 1
      1. 右键单击 LogWriterService ,而后单击 生成
      2. 右键单击 ServiceSetup ,而后单击 生成
    • 方法 2
      1. 生成 菜单中上, 单击生成整个解决方案的 配置管理器
      2. 单击以选中 生成 复选框为 ServiceSetup。
      3. 按 F 7 键生成整个解决方案。 当生成解决方案时,您将能够可用于该服务的一个完整的安装程序包。
  5. 若要安装新的生成服务,右键单击 ServiceSetup ,而后单击 安装
  6. ServiceSetup 对话框单击 下一步 三次。 注意服务安装时出现进度栏。
  7. 服务安装单击 关闭

验证在工做的

  1. 在控制面板中双击 管理工具 ,并双击 服务
  2. 右键单击 Service 1 ,而后单击 开始
  3. 使用下列方法之一验证的事件日志中记录的事件:
    • 方法 1
      1. 在控制面板中双击 管理工具 ,并双击 事件查看器
      2. 单击在左的窗格中的 应用程序日志 ,而后找到您在从右窗格的服务事件日志。
    • 方法 2
      1. 在服务器资源管理) 器中展开 服务器 ComputerName事件日志 、 展开 应用程序 ,而后展开 Service 1 。 从新调用 Service 1 是类,非服务的名称自己。 所以, Service 1 用做应用程序名称。 (它是不在本文介绍如何自定义名称的范围以内。
      2. 光标移日志条目。 第二个条目从顶部应阅读"个人简单服务的启动"。
相关文章
相关标签/搜索