[转].Net Windows服务安装完成后自动启动

本文转自:http://www.cnblogs.com/hb_cattle/archive/2011/12/04/2275319.html

考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包。在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便。查阅了网上的一些资料,发现有一种方法是在安装完成事件里面调用命令行的方式启动服务,这种方式虽可行,但觉得不够完美。好了,下面来看看如何更好地做到服务自动启动。

1、重写ProjectInstaller的Commit方法

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.ServiceProcess;

namespace CleanExpiredSessionSeivice
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
        }

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            //Auot start service after the installation is completed
            ServiceController sc = new ServiceController("CleanExpiredSessionSeivice");
            if (sc.Status.Equals(ServiceControllerStatus.Stopped))
            {
                sc.Start();
            }
        }
    }
}

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

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

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

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

时间: 2024-10-14 13:01:42

[转].Net Windows服务安装完成后自动启动的相关文章

C#编写的windows服务安装后启动提示“服务启动后又停止了”

使用C#编写的windows服务安装到服务器上行后进行启动时,总是提示“服务启动后又停止了”. 检查了服务逻辑是没问题,安装在开发本地也是正常,网上查了资料说是可能是服务没有注册,我检查了服务是正常注册,相对应的方法试很多了,但是都没有解决.后来无意中看了一个帖子说可以在windows的本地服务日志里边看报错信息.看到这个,我的问题就有办法处理了,查了一下保存信息,提示找不到“E:\\”,看到这里我就明白是怎么回事了,我的开发机有E盘,服务器上没有E盘,而我的日志文件默认写在E盘,所以服务启动后

将MongoDB安装为Windows服务---安装MongoDB服务

MongoDB是目前非常流行的一种NoSQL数据库,其灵活的存储方式备受开发人员青睐.本文就介绍一下如何安装并设置成Windows服务的方法.目前为止,我们每次启动MongoDB数据库服务都需要通过CMD输入指令mongod来开启服务,较为麻烦,所以本节介绍下如何将将mongo安装为Windows服务 配置完毕后的启动方式: Win+R 输入 services.msc找到Mongo_Service(这是上面 --serviceName 你填写的服务名称),然后属性,点击启动,然后就好了. 注意:

windows服务安装及卸载

1)安装脚本Install.bat%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe JobSchedule.exeNet Start ServiceOAsc config ServiceOA start= auto 2)卸载脚本Uninstall.bat%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u JobSchedule.exe w

Windows服务安装与控制

Windows服务安装与控制 1.建立服务 (1)定义一个ServiceInstaller using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowService { [System.ComponentModel.RunInstaller(true)] public class ServiceInstaller : System.Configurat

2.Windows服务-->安装卸载服务

1.使用vs组件“VS2012开发人员命令提示” 工具,进行安装卸载服务(必须以“管理员身份运行") 安装和卸载的时候选择合适的安装程序工具地址,例如: 安装服务:C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe 服务路径 卸载服务:C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u 服务路径 例如: C:\Windows\Microsoft.N

Zookeeper以Windows服务安装运行

1.下载的Zookeeper是.cmd的批处理命令运行的,默认没有提供以windows服务的方式运行的方案 下载地址:http://zookeeper.apache.org/ 2.下载prunsrv 下载地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/ 3.解压后复制文件 64位机器用amd64/prunsrv.exe  a. 复制 commons-daemon-1.0.15-bin-windows/amd64/

C# Windows服务安装出现System.Security.SecurityException异常解决办法

我把注册windows服务所用的安装及启用服务命令写到了bat可执行文件(名称为install.bat)中,如下所示: %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe CableAnti.Service.exeNet Start CheckOnlineServicesc config CheckOnlineService start= auto 然后我在Windows Server 2008R2上双击此bat文件后,

C#版Windows服务安装卸载小工具-附源码

前言 在我们的工作中,经常遇到Windows服务的安装和卸载,在之前公司也普写过一个WinForm程序选择安装路径,这次再来个小巧灵活的控制台程序,不用再选择,只需放到需要安装服务的目录中运行就可以实现安装或卸载. 开发思路 1.由于系统的权限限制,在运行程序时需要以管理员身份运行 2.因为需要实现安装和卸载两个功能,在程序运行时提示本次操作是安装还是卸载  需要输入 1 或 2 3.接下来程序会查找当前目录中的可执行文件并过滤程序本身和有时我们复制进来的带有vhost的文件,并列出列表让操作者

C#开发的Windows服务安装时需要“设置服务登录”

C#开发的Windows服务在安装的过程中会弹出一个"设置服务登录"对话框,要求输入用户名和密码.此时用户名和密码的形式必须以域用户的形式输入,如果没有加入域,用户名要用.\username 的格式,否则会提示错误. 注:需要设置服务登录,是因为serviceProcessInstaller的Account设置为User了,修改为LocalService安装Windows服务就不需要设置账号密码了.