简体   繁体   English

安装服务时InstallUtil卡住

[英]InstallUtil gets stuck while installing service

I'm trying to install my own windows service using installUtil.exe with the following command in Administrator mode. 我正在尝试在管理员模式下使用installUtil.exe和以下命令安装我自己的Windows服务。

InstallUtil C:\\Users\\Admin\\Desktop\\Subway_sync\\SubwaySync\\SubwaySync\\bin\\Debug\\SyncSQL.exe

I get the following as cmd output and installation is stuck at right there. 我得到以下命令作为cmd输出,安装卡在此处。

-----------------------------------  Installing Service.
Microsoft (R) .NET Framework Installation utility Version 4.7.2046.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Running a transacted installation.

Beginning the Install phase of the installation.
See the contents of the log file for the C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe assembly's progress.
The file is located at C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.InstallLog.
Installing assembly 'C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe'.
Affected parameters are:
   logtoconsole =
   logfile = C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.InstallLog
   assemblypath = C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe

The service is showing neither in the Services viewer nor in CLI when issued net start as an installed service. 当作为安装的服务发布net start时,该服务既不在服务查看器中也不在CLI中显示。

Following is the installer and service class code. 以下是安装程序和服务类代码。

using System.ComponentModel;
using System.ServiceProcess;

namespace SubwaySync
{
    [RunInstaller(true)]
    public partial class Installer : System.Configuration.Install.Installer
    {
        private ServiceInstaller serviceInstaller;
        private ServiceProcessInstaller processInstaller;

        public Installer()
        {
            // Instantiate installers for process and services.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller = new ServiceInstaller();

            // The services run under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

            // The services are started manually.
            serviceInstaller.StartType = ServiceStartMode.Automatic;

            // ServiceName must equal those on ServiceBase derived classes.
            serviceInstaller.ServiceName = "SyncSQL";

            // Add installers to collection.
            Installers.Add(serviceInstaller);
            Installers.Add(processInstaller);
            InitializeComponent();
        }
    }

    public partial class SubwaySync : ServiceBase
    {
        EventLog e = new EventLog();
        private System.Timers.Timer _timer;

        public SubwaySync()
        {
            InitializeComponent();

            if (!System.Diagnostics.EventLog.SourceExists("DoDyLogSourse"))
                System.Diagnostics.EventLog.CreateEventSource("DoDyLogSourse", "DoDyLog");

            e.Source = "DoDyLogSourse";
            // the event log source by which 
            //the application is registered on the computer

            e.Log = "DoDyLog";
            Thread.Sleep(60001);
        }
        protected override void OnStart(string[] args)
        {
            _timer = new System.Timers.Timer(TimeSpan.FromMinutes(1).TotalMilliseconds);  // 10 minutes expressed as milliseconds
            _timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed);
            _timer.AutoReset = true;
            _timer.Start();
        }

        protected override void OnStop()
        {
            _timer.Stop();
            _timer.Dispose();
        }

        private void OnTimerElapsed(object sender, ElapsedEventArgs e)
        {
            // Do your work here...
        }
    }
}
Thread.Sleep(60001);

服务类(SubwaySync)中的这一行引起了延迟。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM