Blog Post

Exchange Team Blog
2 MIN READ

Phases of Exchange 2007 setup

The_Exchange_Team's avatar
Apr 27, 2007

Starting off a series of posts dealing with Exchange 2007 setup, we wanted to talk about setup phases and what they do.

Setup BootStrap process

Setup.exe is a wrapper for additional executables and libraries. Setup.exe calls in to the boot strapper process which consists of a core set of software prerequisites including:

  • Microsoft Management Console 3.0
  • Microsoft Windows PowerShell
  • Microsoft .NET Framework 2.0

The start page (also sometimes internally referred to as the "Canopener"), presents links to the Exchange Server Deployment guide as well as links to the dependency applications needed to run Exchange Server 2007.

Setup will not proceed from this page until all dependency applications have been installed. When a component is installed correctly, the item will be "grayed" out, as shown below. Once all dependencies are installed the Exchange installation can proceed.

File copy phase

  1. The core installation files are copied from the source media into '% TEMP %\ExchangeServerSetup\' directory.
  2. The BPA XML file set is copied into a culture-specific subfolder such as 'en'.

Note: If Setup is running from a local source (i.e. the DVD or a local copy) then this file copy process is skipped. The only exception is if there are .msp or .exe files in the Updates directory, in which case Setup will copy to a Temp directory as described.

Setup wizard

After the file copy process is complete the setup GUI wizard starts (ExSetupUI.exe) as pictured below:

Readiness check

Upon selecting server roles, setup will proceed to make readiness checks. These checks are based on the required configuration for common components and specific configurations for server roles. This process is handled by the Exchange Best Practices Analyzer engine.

Setup uses the task called test-setuphealth to begin the readiness checks. This cmdlet calls BPA into action. The intended server role, type of scan and installation phase is passed into the cmdlet as parameters as follows:

Test-SetupHealth -Roles <role>[,<role>] -ScanType <scan> -Server <localservername>

For example, to install the mailbox role, setup will call:

Test-SetupHealth -Roles Organization -ScanType PrecheckInstall -Server SERVERA

Test-SetupHealth -Roles Mailbox -ScanType PrecheckInstall -Server SERVERA

Exchange 2007 also uses the ExBPA engine to perform prerequisite checks for Exchange Setup. Located in the C:\ExchangeSetupLogs folder is a subfolder called PreReqs. This folder contains the prerequisite XML output from each setup run. These output files are similar to ExBPA output XML files found in %APPDATA%\Microsoft\ExBPA.

Once set up has passed the readiness check phase setup will delete the temporary files used for setup and move to the core setup or installation phase.

The following diagram summarizes the setup phases:

We will continue this series with a look into different logs that setup creates and how to use them when troubleshooting problems.

- Jon Bradley, Nagesh Mahadev, also thanks to Malvin M. Seale

Updated Jul 01, 2019
Version 2.0
  • I have to say that the Exchange team really seems to have some of the best focus on technology accessibility.  Excellent technical converage on the blog, kept up to date with multiple team participants, exchange tips in the powershell, very useful helps for every exchange command in the EMS.

    This is the gold standard that the rest of the product teams need to be paying attention to for Longhorn, ISA, etc.
  • what exactly is happening during the "Organization Preparation" part of setup?  I pass all the readiness check just fine, but once it starts org prep i get "active directory operation failed on dc1.domain.local.  The object 'CN=Public Folders,CN=All Address Lists,CN=Address Lists Container,CN=DOMAIN,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=local" already exists.

    The object exists."

    Why does setup attempt to do org prep again even though I already have a functioning exchange 2007 server?
  • Pesos, I am suspecting the purported search for the public folder was changed from the default.

    Go to CN= Configuration | CN=Microsoft Exchange | CN= Your Org | CN= Address Lists Container | CN = All Address Lists. On the right you should see CN=Public Folders.

    Take a look at the purported search property on the public folders address list. It should look like (& (mailnickname=*) (| (objectCategory=publicFolder) )). If its anything different you might run into this error.
  • I am having a closely related issue...

    Active Directory operation failed on dc1.mycorp.com. The object
    'CN=Default Global Address List,CN=All Global Address Lists,CN=Address Lists Co
    ntainer,CN=domain,CN=Microsoft Exchange,CN=Services,CN=Configurati
    on,DC=healthforcepartners,DC=com' already exists.
  • I was trying to add the ClientAccess role to Exchange 2007. However, got the following error. Anyone knows how to change the mode of IIS from 32-bit to 64 bit?

    Thanks


    D:Exchange2007>Setup.com /role:ClientAccess /Mode:install

    Welcome to Microsoft Exchange Server 2007 Unattended Setup

    Preparing Exchange Setup

    The following server roles will be installed
       Client Access Role

    Performing Microsoft Exchange Server Prerequisite Check

       Client Access Role Checks        ......................... FAILED
        The Microsoft Internet Information Service is in 32-bit mode and this is a
    64-bit computer. The mode must be changed before Setup can continue.


    The Exchange Server setup operation did not complete. Visit http://support.micro
    soft.com and enter the Error ID to find more information.

    Exchange Server setup encountered an error.

    D:Exchange2007>
  • I am having athis problem
    The Exchange organization name is invalid. Message: '{335A1087-5131-4D45-BE3E-3C6C7F76F5EC} is not a valid value for Organization Name. The value must not contain any of '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '{', '}', '[', ']', '|', '', ':', ';', '"', ''', '<', '>', ',', '.', '?', '/'.'
    How do I correct this ?