.Net实现Windows服务安装完成后自动启动的两种方法

简介: 考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包。在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便。 方法一:在安装完成事件里面调用命令行的方式启动服务 此操作之前要先设置下两个控件设置serviceProcessInstaller1控件的Account属性为...

考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包。在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便。

方法一:在安装完成事件里面调用命令行的方式启动服务

此操作之前要先设置下两个控件

设置serviceProcessInstaller1控件的Account属性为“LocalSystem
设置serviceInstaller1控件的StartType属性为"Automatic"
 
在服务器上添加安装程序,在private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)事件中,添加以下代码:
 
[csharp]   view plain copy
  1. /// <summary>  
  2.     /// 安装后自动启动服务  
  3.     /// </summary>  
  4.     /// <param name="sender"></param>  
  5.     /// <param name="e"></param>  
  6.     private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)  
  7.     {  
  8.         Process p = new Process  
  9.         {  
  10.             StartInfo =  
  11.             {  
  12.                 FileName = "cmd.exe",  
  13.                 UseShellExecute = false,  
  14.                 RedirectStandardInput = true,  
  15.                 RedirectStandardOutput = true,  
  16.                 RedirectStandardError = true,  
  17.                 CreateNoWindow = true  
  18.             }  
  19.         };  
  20.         p.Start();  
  21.         const string cmdString = "sc start 银医通服务平台1.0"//cmd命令,银医通服务平台1.0为服务的名称  
  22.         p.StandardInput.WriteLine(cmdString);  
  23.         p.StandardInput.WriteLine("exit");  
  24.     }  


查阅了网上的一些资料,这种方式虽可行,但觉得不够完美。好了,下面来看看如何更好地做到服务自动启动。

方法二:使用ServiceController对象

1.重写ProjectInstaller的Commit方法

[csharp] view plain copy
  1. using System;  
  2. using System.Collections;  
  3. using System.Collections.Generic;  
  4. using System.ComponentModel;  
  5. using System.Configuration.Install;  
  6. using System.Linq;  
  7. using System.ServiceProcess;  
  8. namespace CleanExpiredSessionSeivice  
  9. {  
  10.     [RunInstaller(true)]  
  11.     public partial class ProjectInstaller : System.Configuration.Install.Installer  
  12.     {  
  13.         public ProjectInstaller()  
  14.         {  
  15.             InitializeComponent();  
  16.         }  
  17.   
  18.          public override void Commit(IDictionary savedState)  
  19.         {  
  20.             base.Commit(savedState);  
  21.             ServiceController sc = new ServiceController("银医通服务平台1.0");  
  22.             if(sc.Status.Equals(ServiceControllerStatus.Stopped))  
  23.             {  
  24.                 sc.Start();  
  25.             }  
  26.         }  
  27.     }  
  28. }  

2、在服务安装项目中添加名为 Commit的 Custome Action

在服务安装项目上右击,在弹出的菜单中选择View — Custom Actions

image

 

然后在Commit项上右击,选择Add Custom Action…,在弹出的列表框中选择Application Folder。最终结果如下:

image

 

需要注意的是,第二步操作是必不可少的,否则服务无法自动启动。我的个人理解是Commit Custom Action 会自动调用ProjectInstaller的Commit方法,Commit Custom Action 在这里扮演了一个调用者的角色。

目录
相关文章
|
1月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
333 116
|
1月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
528 2
|
2月前
|
人工智能 JavaScript 开发工具
极速上手!Claude Code 原生支持 Windows 免WSL安装教程
Claude Code 现已支持 Windows 原生运行,无需 WSL 配置。本文提供详细安装教程,涵盖 Node.js 环境验证、Git 安装及 Claude Code 配置步骤,助你快速上手这一强大 AI 编程工具。
1409 5
|
2月前
|
存储 虚拟化 Windows
VMware安装Windows10
本案例介绍了在Windows系统上使用VMware Workstation 17.5 Pro安装配置Windows 10虚拟机的详细步骤,包括所需设备、软件下载链接、虚拟机设置及系统安装全过程。
349 133
VMware安装Windows10
|
3月前
|
Ubuntu Unix Linux
在Windows上轻松安装和使用Ubuntu的方法详解
继续点击“Continue”按钮以继续安装流程,随后选择清理磁盘并安装操作系统的选项。 接下来,在安装过程中,你需要选择时区。为了与你的地理位置相匹配,请选择中国上海作为你的时区设置。 在安装过程中,你还需要设置计算机的名称以及账号密码。请务必牢记这些信息,因为它们将作为你登录系统的凭证。
|
1月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
137 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
1月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
574 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
2月前
|
安全 数据安全/隐私保护 Windows
ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
ZyperWin++是一款仅5MB的开源免费Windows优化工具,支持快速优化、自定义设置与垃圾清理,兼具系统加速、隐私保护、Office安装等功能,轻便无广告,小白也能轻松上手,是提升电脑性能的全能管家。
967 0

热门文章

最新文章