using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;


namespace LYFZ.WcfSystemService
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
          
        }

        private void ErpServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
        {
            System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController( LYFZ.WindowsServiceHandling.ServiceManagement.GetServiceName(LYFZ.WindowsServiceHandling.ServiceType.LYFZ_WcfSystmeService));
            SetServiceDesktopInsteract(s.ServiceName);
            if(s.Status==System.ServiceProcess.ServiceControllerStatus.Stopped){
            s.Start();//设置服务安装后立即启动
            }
            
            
        }


        #region 设置服务与桌面交互
        /// <summary>
        /// 让服务启动某个应用程序,就要修改服务的属性,勾选允许服务与桌面交互,
        /// 设置服务与桌面交互,在ErpServiceInstaller的AfterInstall事件中使用
        /// </summary>
        /// <param name="serviceName">服务名称</param>
        private void SetServiceDesktopInsteract(string serviceName)
        {
            System.Management.ManagementObject wmiService = new System.Management.ManagementObject(string.Format("Win32_Service.Name='{0}'", serviceName));
            System.Management.ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change");
            changeMethod["DesktopInteract"] = true;
            System.Management.ManagementBaseObject utParam = wmiService.InvokeMethod("Change", changeMethod,null);
        }
        #endregion
    }
}