Ejemplo n.º 1
0
        ///////////////////////////////////////////////////////////////////////

        #region Application Exit Event Handler
        private static void ApplicationExit(
            object sender,
            EventArgs e
            )
        {
            Configuration configuration;

            lock (syncRoot)
            {
                configuration = savedConfiguration;
            }

            TraceOps.Trace(configuration, "Exiting.", TraceCategory);

            string error = null;

            if (!FileOps.DeleteInUse(configuration, ref error))
            {
                Fail(configuration, assembly, error, TraceCategory);
            }
        }
Ejemplo n.º 2
0
        [STAThread] /* WinForms */
        private static int Main(
            string[] args
            )
        {
            Configuration configuration = null;
            string        error         = null;

            if (Configuration.TryCreate(
                    assembly, ref configuration, ref error) &&
                Configuration.FromFile(
                    null, true, ref configuration, ref error) &&
                Configuration.FromArgs(
                    args, true, ref configuration, ref error) &&
                Configuration.Process(
                    args, configuration, false, ref error))
            {
#if DEBUG
                TraceOps.Trace(configuration,
                               "WARNING: This is a DEBUG build and is intended only " +
                               "for development and in-house testing.", TraceCategory);
#endif

#if MONO
                TraceOps.Trace(configuration,
                               "WARNING: This is a Mono build, some features will be " +
                               "unavailable, including some features used to enhance " +
                               "security.", TraceCategory);
#endif

                if (!configuration.IsValid)
                {
                    error = "Invalid configuration.";
                    goto error;
                }

                if (!configuration.IsSigned)
                {
                    error = "Self-check failed, cannot continue.";
                    goto error;
                }

                try
                {
                    using (Mutex.OpenExisting(configuration.MutexName,
                                              MutexRights.Synchronize))
                    {
                        error = "Detected that an instance of Eagle is " +
                                "running, please close it and try again.";
                    }
                }
                catch (WaitHandleCannotBeOpenedException)
                {
                    try
                    {
                        lock (syncRoot)
                        {
                            savedConfiguration = configuration;
                        }

                        Application.ApplicationExit += ApplicationExit;
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);

                        using (UpdateForm form = UpdateForm.Create(
                                   configuration, ref error))
                        {
                            if (form != null)
                            {
                                Application.Run(form);
                                return(0); /* SUCCESS */
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        TraceOps.Trace(configuration, e, TraceCategory);

                        error = "User interface failed.";
                    }
                }
                catch (Exception e)
                {
                    TraceOps.Trace(configuration, e, TraceCategory);

                    error = "Running instance detection failed.";
                }
            }

error:
            Fail(configuration, assembly, error, TraceCategory);
            return(1); /* NOT REACHED */
        }