示例#1
0
        Installer CreateInstaller()
        {
            var installers = new Installer[]
            {
                ConfigureServiceInstaller(),
                ConfigureServiceProcessInstaller()
            };

            string arguments = " ";

            if (_description.InstanceName.IsNotEmpty())
            {
                arguments += " -instance:{0}".FormatWith(_description.InstanceName);
            }

            if (_description.DisplayName.IsNotEmpty())
            {
                arguments += " -displayname \"{0}\"".FormatWith(_description.DisplayName);
            }

            if (_description.Name.IsNotEmpty())
            {
                arguments += " -servicename:{0}".FormatWith(_description.Name);
            }

            var installer = new HostInstaller(_description, arguments, installers);

            return(installer);
        }
示例#2
0
        public void ExecuteInternal(HostArguments args)
        {
            var serviceInstaller = new ServiceInstaller
            {
                ServiceName = args.ServiceName,
                Description = args.Description,
                DisplayName = args.DisplayName,
            };

            SetStartMode(serviceInstaller, args.StartMode);

            var serviceProcessInstaller = new ServiceProcessInstaller
            {
                Username = args.Username,
                Password = args.Password,
                Account  = args.ServiceAccount,
            };
            var installers = new Installer[]
            {
                serviceInstaller,
                serviceProcessInstaller
            };

            var arguments = string.Empty;

            if (!string.IsNullOrEmpty(args.Url))
            {
                arguments += string.Format(" --url=\"{0}\"", args.Url);
            }

            using (var hostInstaller = new HostInstaller(args, arguments, installers))
                using (var transactedInstaller = new TransactedInstaller())
                {
                    transactedInstaller.Installers.Add(hostInstaller);

                    var assembly = Assembly.GetEntryAssembly();

                    var      path        = string.Format("/assemblypath={0}", assembly.Location);
                    string[] commandLine = { path };

                    var context = new InstallContext(null, commandLine);
                    transactedInstaller.Context = context;

                    Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);

                    action(transactedInstaller);
                }
        }
        public void ExecuteInternal(HostArguments args)
        {
            var serviceInstaller = new ServiceInstaller
            {
                ServiceName = args.ServiceName,
                Description = args.Description,
                DisplayName = args.DisplayName,
            };
            SetStartMode(serviceInstaller, args.StartMode);

            var serviceProcessInstaller = new ServiceProcessInstaller
            {
                Username = args.Username,
                Password = args.Password,
                Account = args.ServiceAccount,
            };
            var installers = new Installer[]
            {
                serviceInstaller,
                serviceProcessInstaller
            };

            var arguments = String.Empty;

            if (!String.IsNullOrEmpty(args.Url))
            {
                arguments += string.Format(" --url=\"{0}\"", args.Url);
            }

            using (var hostInstaller = new HostInstaller(args, arguments, installers))
            using (var transactedInstaller = new TransactedInstaller())
            {
                transactedInstaller.Installers.Add(hostInstaller);

                var assembly = Assembly.GetEntryAssembly();

                var path = String.Format("/assemblypath={0}", assembly.Location);
                string[] commandLine = {path};

                var context = new InstallContext(null, commandLine);
                transactedInstaller.Context = context;

                Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);

                action(transactedInstaller);
            }
        }
        Installer CreateInstaller()
        {
            var installers = new Installer[]
                {
                    ConfigureServiceInstaller(),
                    ConfigureServiceProcessInstaller()
                };

            string arguments = " ";

            if (_description.InstanceName.IsNotEmpty())
                arguments += " -instance:{0}".FormatWith(_description.InstanceName);

            if (_description.DisplayName.IsNotEmpty())
                arguments += " -displayname \"{0}\"".FormatWith(_description.DisplayName);

            if (_description.Name.IsNotEmpty())
                arguments += " -servicename:{0}".FormatWith(_description.Name);

            var installer = new HostInstaller(_description, arguments, installers);

            return installer;
        }