using System.ComponentModel;
using System.ServiceProcess;

namespace CncCollector
{
    /// <summary>
    /// Windows Service 安装器。
    /// 支持 InstallUtil.exe 和 sc.exe 两种安装方式。
    /// 提供 InstallUtil 所需的 ServiceInstaller 和 ServiceProcessInstaller 配置。
    /// </summary>
    [RunInstaller(true)]
    public class ProjectInstaller : System.Configuration.Install.Installer
    {
        private ServiceProcessInstaller _processInstaller;
        private ServiceInstaller _serviceInstaller;

        /// <summary>
        /// 初始化安装器，配置服务安装参数
        /// </summary>
        public ProjectInstaller()
        {
            // 服务进程安装器：以 LocalSystem 账户运行
            _processInstaller = new ServiceProcessInstaller
            {
                Account = ServiceAccount.LocalSystem,
                Username = null,
                Password = null
            };

            // 服务安装器：配置服务名称、显示名称、描述和启动类型
            _serviceInstaller = new ServiceInstaller
            {
                ServiceName = CncCollectorService.ServiceNameConst,
                DisplayName = "CNC 机床数据采集服务",
                Description = "CNC机床HTTP采集、数据解析、产量跟踪和日终汇总",
                StartType = ServiceStartMode.Automatic
            };

            // 注册失败时的恢复策略：第一次失败后1分钟重启，第二次失败后1分钟重启，后续每5分钟重启
            _serviceInstaller.DelayedAutoStart = true;

            Installers.Add(_serviceInstaller);
            Installers.Add(_processInstaller);
        }
    }
}
