// Token: 0x06000111 RID: 273 RVA: 0x00006FE4 File Offset: 0x000051E4
 public override int Run()
 {
     ExSetupUI.exitCode = (ExitCode)base.Run();
     if (ExSetupUI.exitCode == ExitCode.Success)
     {
         bool flag = false;
         if (base.ParsedArguments.ContainsKey("mode"))
         {
             SetupOperations setupOperations = (SetupOperations)base.ParsedArguments["mode"];
             if (setupOperations == SetupOperations.Install || setupOperations == SetupOperations.Upgrade)
             {
                 flag = SetupLauncherHelper.IsRestart(base.ParsedArguments);
                 if (flag)
                 {
                     this.TryAddUpdatesParameterCopyMspFiles(SetupLauncherHelper.GetUpdatesDirFromRegistry(), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "Temp\\ExchangeSetup\\MspTemp"), Path.Combine(SetupHelper.WindowsDir, "Temp\\ExchangeSetup"));
                 }
             }
         }
         SetupWizard mainForm = new SetupWizard(this, !flag, SetupLauncherHelper.IsExchangeInstalled());
         if (ExSetupUI.exitCode == ExitCode.Success)
         {
             SplashScreen.SplashInstance.Hide();
             Application.Run(mainForm);
         }
         SplashScreen.SplashInstance.CloseSplash();
     }
     return((int)ExSetupUI.exitCode);
 }
        // Token: 0x06000168 RID: 360 RVA: 0x000081E4 File Offset: 0x000063E4
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker backgroundWorker = sender as BackgroundWorker;

            if (backgroundWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }
            SetupWizard.PopulateWizard(this.pages, this.theApp);
        }
        // Token: 0x060001CF RID: 463 RVA: 0x0000A9E0 File Offset: 0x00008BE0
        public SetupWizard(SetupBase theApp, bool updates, bool isExchangeInstalled)
        {
            base.Name = "SetupWizard";
            this.Text = Strings.SetupWizardCaption;
            this.InitializeComponent();
            base.SetBtnNextText(Strings.btnNext);
            base.SetBtnPreviousText(Strings.btnPrevious);
            base.SetCancelMessageBoxMessage(Strings.CancelMessageBoxMessage);
            base.SetPrintErrorMessageBoxMessage(Strings.SetupFailedPrintDocument);
            base.SetBrowserLaunchErrorMessage(Strings.BrowserLaunchError);
            int num = 23;

            if (num > 0)
            {
                base.SetExchangeServerLabel(Strings.MESICumulativeUpdate(Strings.MicrosoftExchangeServer, num));
            }
            else
            {
                base.SetExchangeServerLabel(Strings.MESI(Strings.MicrosoftExchangeServer));
            }
            HelpProvider.Initialize(HelpProvider.HelpAppName.Setup);
            base.HelpUrlGenerator             = this;
            SetupWizard.IsPartiallyConfigured = this.IsRolesPartiallyConfigured(isExchangeInstalled);
            if (SetupWizard.IsPartiallyConfigured && ((SetupOperations)theApp.ParsedArguments["mode"] == SetupOperations.Install || (SetupOperations)theApp.ParsedArguments["mode"] == SetupOperations.Upgrade))
            {
                SetupWizard.PopulateWizard(base.Pages, theApp);
                return;
            }
            if (theApp.ParsedArguments.ContainsKey("mode") && (((SetupOperations)theApp.ParsedArguments["mode"] == SetupOperations.Install && !isExchangeInstalled) || (SetupOperations)theApp.ParsedArguments["mode"] == SetupOperations.Upgrade))
            {
                if (updates)
                {
                    base.Pages.Add(new CheckForUpdatesPage());
                    base.Pages.Add(new UpdatesDownloadsPage(theApp));
                }
                base.Pages.Add(new CopyFilesPage(theApp));
                base.Pages.Add(new InitializingSetupPage(base.Pages, theApp));
                return;
            }
            SetupWizard.PopulateWizard(base.Pages, theApp);
        }
        // Token: 0x060001D3 RID: 467 RVA: 0x0000ABC4 File Offset: 0x00008DC4
        internal static void PopulateWizard(IList <SetupWizardPage> pages, SetupBase theApp)
        {
            AssemblyResolver[] array = null;
            string             text  = string.Empty;

            try
            {
                if (SetupWizard.setupGUIAssembly == null)
                {
                    text  = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                    array = AssemblyResolver.Install(new AssemblyResolver[]
                    {
                        new FileSearchAssemblyResolver
                        {
                            SearchPaths = new string[]
                            {
                                text
                            },
                            Recursive = true
                        }
                    });
                    text = Path.Combine(text, "Microsoft.Exchange.Setup.GUI.dll");
                    object[] parameters = new object[]
                    {
                        pages,
                        theApp
                    };
                    SetupWizard.setupGUIAssembly = Assembly.LoadFile(text);
                    foreach (Type type in SetupWizard.setupGUIAssembly.GetTypes())
                    {
                        if (type.IsClass && type.FullName == "Microsoft.Exchange.Setup.GUI.SetupWizard")
                        {
                            object     obj    = Activator.CreateInstance(type);
                            MethodInfo method = type.GetMethod("Main");
                            method.Invoke(obj, parameters);
                            break;
                        }
                    }
                }
            }
            catch (FileNotFoundException e)
            {
                SetupLogger.LogError(e);
                SetupWizard.ThrowAssemblyLoadFileNotFoundException(theApp, text);
            }
            catch (Exception ex)
            {
                SetupLogger.LogError(ex);
                if (ex.InnerException != null && ex.InnerException is FileNotFoundException)
                {
                    SetupWizard.ThrowAssemblyLoadFileNotFoundException(theApp, text);
                }
                throw;
            }
            finally
            {
                if (array != null)
                {
                    AssemblyResolver.Uninstall(array);
                }
            }
        }