internal static bool HasServiceParams()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@SN")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@DN")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@IN")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@SD")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@I")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@U")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@S")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@T")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@P")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@C")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@E")
             {
                 return(true);
             }
             if (keyValuePair.Key.ToUpper() == "@SP")
             {
                 return(true);
             }
         }
         return(false);
     }
 }
        internal static ChoShellExtensionActionMode?GetShellExtensionActionMode()
        {
            using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
            {
                parser.Parse();

                string mode = null;
                foreach (KeyValuePair <string, string> keyValuePair in parser)
                {
                    if (keyValuePair.Key.ToUpper() == "#SE")
                    {
                        mode = keyValuePair.Value;
                        break;
                    }
                }

                ChoShellExtensionActionMode seMode;
                if (!mode.IsNullOrWhiteSpace())
                {
                    if (Enum.TryParse <ChoShellExtensionActionMode>(mode, out seMode))
                    {
                        return(seMode);
                    }
                }

                foreach (string pos in parser.PosArgs)
                {
                    if (!pos.IsNullOrWhiteSpace())
                    {
                        if (Enum.TryParse <ChoShellExtensionActionMode>(pos, out seMode))
                        {
                            return(seMode);
                        }
                    }
                }

                return(null);
            }
        }
        internal static ChoApplicationMode?GetApplicationMode()
        {
            using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
            {
                parser.Parse();

                ChoValidApplicationMode validApplicationMode;
                foreach (KeyValuePair <string, string> keyValuePair in parser)
                {
                    if (keyValuePair.Key.ToUpper() == "#AM")
                    {
                        if (Enum.TryParse <ChoValidApplicationMode>(keyValuePair.Value, out validApplicationMode))
                        {
                            return((ChoApplicationMode)Enum.Parse(typeof(ChoApplicationMode), validApplicationMode.ToString()));
                        }
                        break;
                    }
                }
            }

            return(null);
        }
 public static string GetServiceDescription()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@SD")
             {
                 if (!keyValuePair.Value.IsNullOrWhiteSpace())
                 {
                     return(keyValuePair.Value);
                 }
                 else
                 {
                     break;
                 }
             }
         }
         return(ChoServiceInstallerSettings.Me.Description.IsNullOrWhiteSpace() ? null : ChoServiceInstallerSettings.Me.Description);
     }
 }
 public static string GetDisplayName()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@DN")
             {
                 if (!keyValuePair.Value.IsNullOrWhiteSpace())
                 {
                     return(keyValuePair.Value);
                 }
                 else
                 {
                     break;
                 }
             }
         }
         return(GetServiceName());
     }
 }
 private static string GetInstanceName()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@IN")
             {
                 if (!keyValuePair.Value.IsNullOrWhiteSpace())
                 {
                     return(keyValuePair.Value);
                 }
                 else
                 {
                     break;
                 }
             }
         }
         return(null);
     }
 }
 private static string GetServiceNameInternal()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@SN")
             {
                 if (!keyValuePair.Value.IsNullOrWhiteSpace())
                 {
                     return(keyValuePair.Value);
                 }
                 else
                 {
                     break;
                 }
             }
         }
         return(ChoServiceInstallerSettings.Me.ServiceName.IsNullOrWhiteSpace() ? ChoGlobalApplicationSettings.Me.ApplicationNameWithoutExtension : ChoServiceInstallerSettings.Me.ServiceName);
     }
 }
 public static string GetServiceParams()
 {
     using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser(false))
     {
         parser.Parse();
         foreach (KeyValuePair <string, string> keyValuePair in parser)
         {
             if (keyValuePair.Key.ToUpper() == "@SP")
             {
                 if (!keyValuePair.Value.IsNullOrWhiteSpace())
                 {
                     return(keyValuePair.Value);
                 }
                 else
                 {
                     break;
                 }
             }
         }
         return(ChoServiceInstallerSettings.Me.ServiceParams == null || ChoServiceInstallerSettings.Me.ServiceParams.Value.IsNullOrWhiteSpace() ?
                String.Empty : ChoServiceInstallerSettings.Me.ServiceParams.Value);
     }
 }
        internal static void OverrideFrxParams(ChoGlobalApplicationSettings gas)
        {
            if (gas == null)
            {
                return;
            }

            string serviceName = null;

            using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
            {
                parser.Parse();
                foreach (KeyValuePair <string, string> keyValuePair in parser)
                {
                    if (keyValuePair.Key.ToUpper() == "@SN")
                    {
                        if (!keyValuePair.Value.IsNullOrWhiteSpace())
                        {
                            serviceName = gas.LogSettings.LogFolder = keyValuePair.Value.Trim();
                        }
                    }
                }
            }

            string command = null;

            using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
            {
                parser.Parse();
                foreach (KeyValuePair <string, string> keyValuePair in parser)
                {
                    if (keyValuePair.Key.ToUpper() == "@I")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "InstallService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@U")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "UninstallService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@S")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "StartService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@T")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "StopService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@P")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "PauseService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@C")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "ContinueService";
                        break;
                    }
                    else if (keyValuePair.Key.ToUpper() == "@E")
                    {
                        ChoApplication.ServiceInstallation = true;
                        command = "ExecuteCommand";
                        break;
                    }
                }
                if (ChoApplication.ServiceInstallation)
                {
                    gas.ApplicationBehaviourSettings.HideWindow        = false;
                    gas.ApplicationBehaviourSettings.SingleInstanceApp = true;
                    gas.ApplicationName         = "{0}.{1}".FormatString(gas.ApplicationNameWithoutExtension, command);
                    gas.EventLogSourceName      = "{0}.{1}".FormatString(gas.EventLogSourceName, command);
                    gas.LogSettings.LogFileName = "{0}.{1}".FormatString(GetLogFileName(serviceName, gas.LogSettings.LogFileName), command);
                    gas.LogSettings.LogFolder   = serviceName.IsNullOrWhiteSpace() ? command : Path.Combine(command, serviceName);
                    gas.LogSettings.DoAppendProcessIdToLogDir = false;
                }
            }
        }
Beispiel #10
0
        public ChoApplicationHost()
        {
            ChoApplication.ApplyFrxParamsOverrides += ((sender, e) =>
            {
                ApplyFrxParamsOverrides(e.GlobalApplicationSettings, e.MetaDataFilePathSettings);

                using (ChoCommandLineArgParser parser = new ChoCommandLineArgParser())
                {
                    parser.Parse();
                    foreach (KeyValuePair <string, string> keyValuePair in parser)
                    {
                        if (keyValuePair.Key.ToUpper() == "I")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.InstallService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.InstallService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.InstallService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "U")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.UninstallService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.UninstallService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.UninstallService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "S")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.StartService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.StartService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.StartService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "T")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.StopService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.StopService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.StopService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "P")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.PauseService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.PauseService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.PauseService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "C")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.ContinueService".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.ContinueService".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.ContinueService".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                        else if (keyValuePair.Key.ToUpper() == "E")
                        {
                            ChoApplication.ServiceInstallation = true;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.HideWindow = false;
                            e.GlobalApplicationSettings.ApplicationBehaviourSettings.SingleInstanceApp = false;
                            e.GlobalApplicationSettings.DoAppendProcessIdToLogDir = false;
                            e.GlobalApplicationSettings.ApplicationName = "{0}.ExecuteCommand".FormatString(e.GlobalApplicationSettings.ApplicationNameWithoutExtension);
                            e.GlobalApplicationSettings.EventLogSourceName = "{0}.ExecuteCommand".FormatString(e.GlobalApplicationSettings.EventLogSourceName);
                            e.GlobalApplicationSettings.LogSettings.LogFileName = "{0}.ExecuteCommand".FormatString(e.GlobalApplicationSettings.LogSettings.LogFileName);
                            break;
                        }
                    }
                }
            });

            ChoApplication.FatalApplicationException += FatalApplicationException;

            //ChoApplication.Initialize();
            ChoGlobalApplicationSettings x = ChoGlobalApplicationSettings.Me;

            ApplyServiceInstallParamsOverrides(ChoServiceProcessInstallerSettings.Me, ChoServiceInstallerSettings.Me);
            ServiceProcessInstaller processInstaller = new ServiceProcessInstaller();

            ChoApplication.WriteToEventLog(ChoServiceProcessInstallerSettings.Me.ToString());
            processInstaller.Account  = ChoServiceProcessInstallerSettings.Me.Account;
            processInstaller.Username = ChoServiceProcessInstallerSettings.Me.UserName;
            processInstaller.Password = ChoServiceProcessInstallerSettings.Me.Password;

            ChoApplication.WriteToEventLog(ChoServiceInstallerSettings.Me.ToString());
            ServiceInstaller serviceInstaller = new ServiceInstaller();

            serviceInstaller.DisplayName = ChoServiceInstallerSettings.Me.DisplayName.IsNullOrWhiteSpace() ? ChoGlobalApplicationSettings.Me.ApplicationNameWithoutExtension : ChoServiceInstallerSettings.Me.DisplayName;
            ServiceName = serviceInstaller.ServiceName = ChoServiceInstallerSettings.Me.ServiceName.IsNullOrWhiteSpace() ? ChoGlobalApplicationSettings.Me.ApplicationNameWithoutExtension : ChoServiceInstallerSettings.Me.ServiceName;
            serviceInstaller.StartType        = ChoServiceInstallerSettings.Me.ServiceStartMode;
            serviceInstaller.DelayedAutoStart = ChoServiceInstallerSettings.Me.DelayedAutoStart;
            serviceInstaller.Description      = ChoServiceInstallerSettings.Me.Description;

            this.Installers.Add(processInstaller);
            this.Installers.Add(serviceInstaller);
        }