Like many in the server trade I maintain an automated build system for testing of new / beta products and mine is based around Windows 2003 R2 for various reasons to do with it being the most current and hence wanting to know about issues clients may not be aware of as most use older versions of Windows almost invariably and when I automate it I can use the same source files to install the non R2 and R2 versions using the same serial number and upgrade the non R2 version to R2 very quickly.

To do this I have a directory structure on C: to which I copy the contents of the two R2 CD’s into their own folders called CD1 and CD2 in my case.

I also have a couple of different unattended install files called ent.txt and entr2.txt with the only difference being in the GuiRunOnce section of entr2.txt which has the following line added

Command0="cmd /c C:SourceCD2CMPNENTSR2setup2.exe /q /cs /a"

Which silently installs the additional R2 component capability during the installation.

This was not originally my idea but one I borrowed from a very respected colleague of mine that allowed me to use the R2 license key for all my installs saving me from entering it if I needed the R2 additions for an existing install.

I have some dev work to do around Exchange 2007 for one of my clients and may be doing a presentation with a friend around using ADAM in Exchange 2007′s Edge role and PowerShell administration so thought it was about time I updated to SP2 for my builds. One of the useful things for people like me using an unattended setup has been the ability to slipstream a service pack on top of a previous version so additional install of the SP and installation should be better protected as more exploits should be blocked.

Over at Windows Server 2003 Service Pack 2 Installation and Deployment Guide the instructions for producing what Microsoft refer to as an integrated installation, but many people refer to as a slipstreamed install, are basically to mirror what I have i.e. two folders called CD1 and CD2 with the relevant CD’s copied into them and the the service pack applied to the CD1 folder with a command like the following

WindowsServer2003-KB914961-SP2-XXX-LLL.exe /integrate:C:SourceCD1

Looked reasonable, gave it a go, spun up a virtual machine and when I went to install ADAM could not find the component so tried running setup2.exe by hand and was presented by the following error.

Setup cannot continue because this product disc is incompatible with the service pack installed on this computer. To complete the installation of Windows Server 2003 R2, you will need to insert the latest version of Windows Server 2003 R2 Disc 2.

The idea of the CMPNENTS folder is not new to R2 but was taken from Windows XP MCE and Tablet editions as was the idea that if you copy the CMPNENTS folder from the second CD into the same folder as i386 from the first CD then with the right license key it will be automatically installed during the setup routine. Taking this into account I then tried copying the CMPNENTS folder into the CD1 folder along with the contents of the first CD and trying the service pack integration again. Out of curiosity I used WinDiff to compare the results to the CMPNENTS in my CD2 folder – 136 files were changed by the integration of the service pack.

Acid test was spinning up a virtual machine and a while later I had a Windows 2003 R2 SP2 server up and running. just out of curiosity I moved the CMPNENTS folder back to the CD2 folder and it still worked.

My take on Microsoft’s instructions would be

  1. Connect to the network or computer where you want to create the distribution folder
  2. Create the shared folder and ensure that only system administrators have full access to this folder. (Other users should have only Read and Execute permissions.)
  3. In the shared folder, create a distribution folder for the Windows Server 2003 R2 installation files. For example, to create a distribution folder named WS2003x86, type:
    mkdir Drive:WS2003x86
  4. To verify that you have assigned appropriate permissions to users who are installing the service pack:
    1. Navigate to the appropriate folder, right-click it, and then click Properties
    2. Click the Sharing tab, and then click Share This Folder
    3. In Share Name, type a name for the folder
    4. Click Permissions, and then assign permissions that allow users to install the service pack from this folder
    5. If you are using an NTFS file system partition, click the Security tab, confirm that the permissions listed there do not conflict with those on the Sharing tab, and then click OK
  5. Insert disc 1 into the CD-ROM drive, and copy the contents to the distribution folder. For example, to copy the contents in the CD-ROM drive (D:) to the distribution folder named WS2003x86 on the E: drive, type:
    xcopy /E D:CMPNENTS E:WS2003x86CMPNENTS
  6. Remove the Windows Server 2003 R2 disc 1, and insert the SP2 CD
  7. Insert your Windows Server 2003 R2 disc 2 into the CD-ROM drive, and copy the contents to the distribution folder. For example, to copy the contents in the CD-ROM drive (D:) to the distribution folder named WS2003x86 on the E: drive, type:
    xcopy /E D: E:WS2003x86
  8. Apply the source files for the service pack to the installation files. For example, for a 32-bit version of Windows Server 2003 in the folder named WS2003x86, type:
    WindowsServer2003-KB914961-SP2-XXX-LLL.exe /integrate:Drive:WS2003x86
  9. Service pack files are extracted and then applied to the operating system files to update your shared distribution folder. You can use the files from this folder to customise Setup for Windows Server 2003 as necessary. For more information about how to customize Setup, view Help by typing i386winnt32.exe /? at the command prompt in the shared distribution folder
  10. You can now deploy the integrated version of disc 1 and the installation files for disc 2 to your computers from the shared folder in either attended or unattended Setup mode