C# - 窗口服务安装不登记服务(C# - windows service installer no

2019-07-30 22:01发布

我试图使用安装Windows服务,并且想避免使用InstallUtil.exe。 安装程序似乎正常(可执行文件和DLL是正确的目录)工作,但服务没有在计算机管理中出现。

这是我到目前为止已经完成:

服务类名是默认 - 服务1。

在项目安装,服务安装的服务名称相匹配的类名 - 服务1。

下的自定义动作,加入服务的主输出到安装,提交,回滚和卸载。

我使用http://support.microsoft.com/kb/816169作为参考。

有任何想法吗?

Answer 1:

请问您的服务项目有一个安装程序类? 你应该有一个看起来是这样的:

[RunInstaller(true)]
public partial class Service1Installer : Installer
{
    public Service1Installer()
    {
        InitializeComponent();
        ServiceProcessInstaller process = new ServiceProcessInstaller();
        process.Account = ServiceAccount.LocalSystem;

        ServiceInstaller serviceAdmin = new ServiceInstaller();
        serviceAdmin.StartType = ServiceStartMode.Manual;
        serviceAdmin.ServiceName = "Service1";
        serviceAdmin.DisplayName = "Service1";
        serviceAdmin.Description = "Service1";

        Installers.Add(serviceAdmin);
    }
}


Answer 2:

请确保你已经创建了一个服务项目的ServiceInstaller和ServiceProcessInstaller类。 (检查此链接获取更多信息)。

关闭计算机管理和服务窗口,再次运行安装程序,并重新打开服务窗口。

如果还是不行,请重新启动计算机。 你可能有锁定了一些文件。

不用说,你可能需要对计算机的管理权限使其正常工作。



Answer 3:

我想我已经想通了。 这可能是与设计代码中的错误,也许我错过了一步。

我觉得在设计器代码,在InitializeComponent()方法,它应该补充:

this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1});

这是不存在的,所以我说这在ProjectInstaller构造函数:

Installers.Add(serviceInstaller1);
Installers.Add(serviceProcessInstaller1);

现在在安装时,它的上市在计算机管理的服务。



文章来源: C# - windows service installer not registering service