安装在Visual Studio中创建的Windows服务

当我在Visual Studio 2010中创建一个新的Windows服务时,我收到消息说明使用InstallUtil和net start来运行该服务。

我尝试了以下步骤:

  • 创建新项目文件 - >新建 - >项目 - > Windows服务
  • 项目名称:TestService
  • 按原样构建项目(Service1构造函数,OnStart,OnStop)
  • 打开命令提示符,运行“C: Windows Microsoft.NET Framework v4.0.30319 InstallUtil.exe”TestService.exe
  • 运行网络启动TestService
  • 第4步的输出

    运行交易安装。

    开始安装的安装阶段。

    请参阅C: Users myusername Documents Visual Studio 2010 Projects TestService TestService obj x86 Debug TestService.exe程序集的进度的日志文件的内容。

    该文件位于C: Users myusername Documents Visual Studio 2010 Projects Tes tService TestService obj x86 Debug TestService.InstallLog。

    安装程序集'C: Users myusername Documents Visual Studio 2010 Projects TestS ervice TestService obj x86 Debug TestService.exe'。

    受影响的参数是:

    logtoconsole =

    logfile = C: Users myusername Documents Visual Studio 2010 Projects TestService T estService obj x86 Debug TestService.InstallLog

    assemblypath = C: Users myusername Documents Visual Studio 2010 Projects TestServ ice TestService obj x86 Debug TestService.exe

    在C: Users myusername Documents Visual Studio 2010 Projects TestService TestSevice obj x86 Debug TestService.exe程序集中找不到具有RunInstallerAttribute.Yes属性的公用安装程序。

    安装阶段已成功完成,Commit阶段开始。

    请参阅C: Users myusername Documents Visual Studio 2010 Projects TestService TestService obj x86 Debug TestService.exe程序集的进度的日志文件的内容。

    该文件位于C: Users myusername Documents Visual Studio 2010 Projects Tes tService TestService obj x86 Debug TestService.InstallLog。

    提交程序集'C: Users myusername Documents Visual Studio 2010 Projects TestS ervice TestService obj x86 Debug TestService.exe'。

    受影响的参数是:

    logtoconsole =

    logfile = C: Users myusername Documents Visual Studio 2010 Projects TestService T estService obj x86 Debug TestService.InstallLog

    assemblypath = C: Users myusername Documents Visual Studio 2010 Projects TestServ ice TestService obj x86 Debug TestService.exe

    在C: Users myusername Documents Visual Studio 2010 Projects TestService TestSevice obj x86 Debug TestService.exe程序集中找不到具有RunInstallerAttribute.Yes属性的公用安装程序。

    删除InstallState文件,因为没有安装程序。

    承诺阶段成功完成。

    交易安装已完成。

    第5步的输出

    服务名称无效。

    通过键入NET HELPMSG 2185可获得更多帮助。


    您需要在设计器中打开Service.cs文件,右键单击它并选择菜单选项“添加安装程序”。

    它不会立即安装......您需要先创建安装程序类。

    服务安装程序的一些参考:

    如何:将安装程序添加到您的服务应用程序

    相当古老......但这就是我所说的:

    Windows服务在C#中:添加安装程序(第3部分)

    通过这样做, ProjectInstaller.cs将自动创建。 然后你可以双击这个,输入设计器,并配置组件:

  • serviceInstaller1具有服务本身的属性: DescriptionDisplayNameServiceNameStartType是最重要的。

  • serviceProcessInstaller1有这个重要的属性: Account thas是服务将运行的帐户。

  • 例如:

    this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;
    

    看着:

    在C: Users myusername Documents Visual Studio 2010 Projects TestService TestSevice obj x86 Debug TestService.exe程序集中找不到具有RunInstallerAttribute.Yes属性的公用安装程序。

    看起来您的代码中可能没有安装程序类。 这是一个继承自Installer的类,它将告诉installutil如何将您的可执行文件安装为服务。

    Ps我在这里有我自己的小自我安装/可调试Windows服务模板,您可以复制或使用代码:可调试,自行安装Windows服务


    这是制作安装程序并摆脱该错误消息的另一种方法。 此外,似乎VS2015 express没有“添加安装程序”菜单项。

    您只需创建一个类并添加下面的代码并添加参考System.Configuration.Install.dll。

    using System.Configuration.Install;
    using System.ServiceProcess;
    using System.ComponentModel;
    
    
    namespace SAS
    {
        [RunInstaller(true)]
        public class MyProjectInstaller : Installer
        {
            private ServiceInstaller serviceInstaller1;
            private ServiceProcessInstaller processInstaller;
    
            public MyProjectInstaller()
            {
                // Instantiate installer for process and service.
                processInstaller = new ServiceProcessInstaller();
                serviceInstaller1 = new ServiceInstaller();
    
                // The service runs under the system account.
                processInstaller.Account = ServiceAccount.LocalSystem;
    
                // The service is started manually.
                serviceInstaller1.StartType = ServiceStartMode.Manual;
    
                // ServiceName must equal those on ServiceBase derived classes.
                serviceInstaller1.ServiceName = "SAS Service";
    
                // Add installer to collection. Order is not important if more than one service.
                Installers.Add(serviceInstaller1);
                Installers.Add(processInstaller);
            }
        }
    }
    
    链接地址: http://www.djcxy.com/p/44213.html

    上一篇: Install Windows Service created in Visual Studio

    下一篇: Unable to copy file, Access to the path is denied