簡體   English   中英

安裝服務時InstallUtil卡住

[英]InstallUtil gets stuck while installing service

我正在嘗試在管理員模式下使用installUtil.exe和以下命令安裝我自己的Windows服務。

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

我得到以下命令作為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

當作為安裝的服務發布net start時,該服務既不在服務查看器中也不在CLI中顯示。

以下是安裝程序和服務類代碼。

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