Windows 8 and AppFabric Installation Pain

I’m getting a sense of déjà vu, I’ve just built a new Windows 8 virtual machine and spent a couple of hours fighting with the Windows Server AppFabric 1.1 install. I’m pretty sure this is at least the second time I’ve been on this merry dance so I’ll document it this time.

So let’s start of with a quick summary of the problem and solution: when attempting to install Windows Server AppFabric 1.1 (service hosting) on Windows 8 the installer fails with a MSI 1603 error. Searching the web for this error suggests the following:

1. Check the PSModulePath environment variable to ensure it is not corrupted, e.g. has a stray “ character in it. http://social.msdn.microsoft.com/Forums/vstudio/en-US/561f3ad4-14ef-4d26-b79a-bef8e1376d64/msi-error-1603-installing-appfabric-11-win7-x64

2. Add C:\Windows\System32\WindowsPowerShell\v1.0 to the PSModulePath

These two approaches didn’t resolve my install issues so I dug through the installer logs, more on that shortly. Cutting to the chase I needed to perform the following steps:

1. Check the local machine security groups and remove the AS_Administrators or AS_Observers groups if they had been left behind from a previous failed AppFabric installation attempt.

2. Ensure that the Windows Process Activation Service as well as WCF activation options have been installed.

image

image

 

Diagnosis Walkthrough…

The path to enlightenment was not straight and started with the logging created by the installation process, found in C:\Users\Stef Sewell\AppData\Local\Temp.

image

Three log files and an error log was produced for each failed install attempt. The most interesting files are the AppServerSetup1_1_CustomActions(…).log as they contained the various errors.

The earliest log file listed the following failure:

19/07/2013 9:19:06 p.m. EXEPATH=c:\Windows\system32\\icacls.exe PARAMS=c:\Windows\SysWOW64\\inetsrv\config /grant AS_Observers:(OI)(CI)(R) LOGFILE=C:\Users\Stef\AppData\Local\Temp\AppServerSetup1_1_CustomActions(2013-07-19 21-18-47).log
Error: c:\Windows\SysWOW64\\inetsrv\config: The system cannot find the file specified.
Output: Successfully processed 0 files; Failed processing 1 files
ExitCode=2

Seeing this error, I added in the missing folder config folder to C:\Windows\SysWOW64\inetsrv  but then I got the following error on the next attempt:

20/07/2013 6:49:09 p.m. EXEPATH=C:\Windows\system32\\net.exe PARAMS=localgroup AS_Observers /comment:”Members of this group can observe AppFabric.” /add LOGFILE=C:\Users\Stef\AppData\Local\Temp\AppServerSetup1_1_CustomActions(2013-07-20 18-48-50).log
Error: System error 1379 has occurred.
Error: The specified local group already exists.
ExitCode=2

Looking the in local groups on the machine, I could see the AS_Observers group was present and had not been removed by the previous failed install. I removed the group. Re-running the installer and I now get:

20/07/2013 7:09:38 p.m. EXEPATH=C:\Program Files\AppFabric 1.1 for Windows Server\ase40gc.exe PARAMS=/i administration LOGFILE=C:\Users\Stef\AppData\Local\Temp\AppServerSetup1_1_CustomActions(2013-07-20 19-09-23).log
Output: Microsoft (R) AppFabric 1.1 for Windows Server Setup Utility. Version 1.1.2106.32
Output: Copyright (C) Microsoft Corporation. All rights reserved.
Output: Workstation [Version 6.2.9200]
Output: OS Edition 0x30: Professional
Output: Load XML resource: (id=101, size=2868)
Output: Load XML resource: (id=101, size=2868)
Output: Load XML resource: (id=102, size=8696)
Output: Load XML resource: (id=102, size=8696)
Output: Load XML resource: (id=103, size=511)
Output: Load XML resource: (id=104, size=546)
Output: Load XML resource: (id=105, size=6759)
Output: Load XML resource: (id=103, size=511)
Output: [ServicingContext]
Output: INSTALLER_WINNING_COMPONENT_IDENTITY=
Output: INSTALLER_WINNING_COMPONENT_PAYLOAD=
Output: INSTALLER_WINNING_COMPONENT_MANIFEST=
Output: INSTALLER_WINNING_COMPONENT_VERSION=
Output: INSTALLER_SHADOWED_COMPONENT_IDENTITY=
Output: INSTALLER_SHADOWED_COMPONENT_PAYLOAD=
Output: INSTALLER_SHADOWED_COMPONENT_MANIFEST=
Output: INSTALLER_SHADOWED_COMPONENT_VERSION=
Output: Servicing type is None.
Output: [RunInstaller]
Output: Attempt 1 of 3: SuppressErrors=False
Output: [Initialize]
Output: Info: Initializing for update to administration.config…
Output: Installer ERROR: 0x80040154 Class not registered
Output: (Waiting 5 seconds)
Output: Attempt 2 of 3: SuppressErrors=False
Output: [Initialize]
Output: Info: Initializing for update to administration.config…
Output: Installer ERROR: 0x80040154 Class not registered
Output: (Waiting 10 seconds)
Output: Attempt 3 of 3: SuppressErrors=False
Output: [Initialize]
Output: Info: Initializing for update to administration.config…
Output: Installer ERROR: 0x80040154 Class not registered
Output: ERROR: _com_error: 0x80040154
Output: Exit code: 0x80040154 Class not registered

ExitCode=-2147221164

Three attempts to perform the step involving as40gc.exe failed so back to scouring the web, which turned up http://stackoverflow.com/questions/15415616/how-can-i-get-microsofts-appfabric-1-1-installed-on-windows-server-2012-os

Now I was getting somewhere, I was missing certain Windows features, in particular the Windows Process Activation Service and the WCF HTTP and non-HTTP activation features. Unfortunately the PowerShell servermanager module is not available on Windows 8 so I installed them via the ‘Program and Features’ control panel.

image

image

With these features in place, the AppFabric installer was successful. It was at this point I vaguely remembered I’d been through this process 6 months ago when I last set-up a fresh Windows 8 VM, now it’s written up for next time.

Upgrading to Windows 8

For me, the brightest feature in Windows 8 right now is Hyper-V. I no longer need to dual-boot my laptop between Windows 7 and Windows Server 2008 R2 when I need to run an x64 OS in a virtual machine (Virtual PC only supported x86 VMs). As well as the convenience of being able to do everything from a single host OS, I also get to reclaim 60GB of space on my boot SSD.

My cunning plan to stay productive while setting up the Windows 8 environment involved cloning my existing Windows 7 install to VHD and then run that within Hyper-V. Over time I’ll copy what I need from the drive image into the Win8 environment but for now I can still work. To clone a physical disk to VHD involved the use of Disk2VHD from Microsoft / SysInternals. This is very easy to use and within an hour I had a VHD image of my boot SSD.

The install of Windows 8 was delegated, we have an PXE boot environment set-up in the office so I let the IT guys trial their Windows 8 install on my Thinkpad. Tocks ticked and after a couple of hours the machine was back. I’ve been playing with Windows 8 in bootcamp on my aging Macbook Pro so I know enough to find my way around and configure it. Like many others, I’d love to drive this with a good touchscreen (i.e. NOT the Dell kicking around the office), but mouse and keyboard is working out OK. My first, naïve thought was that everything would play well just like Windows 7 but this is not the case. I have a dock on my desk for the Thinkpad W510 and so I docked it thinking that I would get both monitors fire up… no joy, no picture. Unplugging one of the monitors and I get a picture, both plugged in, nothing. Off to Lenovo for a new video driver, the ‘gold’ drivers aren’t available yet only beta drivers which I installed. Bad idea. This completely screwed up Windows to the point where it eventually went into recovery mode and rolled back to a restore point. A google later and I find a post matching my symptoms. Looks like I need to wait for the Windows 8 drivers to be released…

Getting my VHD to run in Hyper-V was more of an adventure than I planned on too. After setting up a new virtual machine using the VHD, I started it only to get an error stating it was not bootable. Panic. Googling for help led to: http://msmvps.com/blogs/rfennell/archive/2011/07/13/moving-a-vhd-boot-disk-to-hyper-v.aspx

This didn’t quite match my scenario but was close enough…

1. I mounted the VHD in Windows 8 via the Disk Management tool and could see three partitions: the boot partition, the Windows 7 partition and the Windows Server 2008 R2 partition. Only the Windows 7 partition was NTFS, the other showed as raw. I could map a drive to the Windows 7 partition so at least I could access the files, the panic lessened.

2. I removed the two raw partitions and then created a new NTFS partition in the space originally allocated to the boot partition and named it ‘System Reserved’.

3. I added the Windows 7 ISO as the DVD drive to the VM and set the boot order so that it would boot into the installer. When the first dialog screen popped up I hit SHIFT + F10 to get to a command prompt. Unfortunately the Windows 7 partition was mapped to D: and the boot partition mapped to C:. I needed to swap these around.

4. Following steps from TechNet, using the DISKPART tool I could:

>DISKPART

>list volume

>select volume 0

>assign letter=T

>select volume 1

>assign letter=C

>select volume 0

>assign letter=D

>exit

5. With the drive letters correct I could now create a new boot partition:

> bcdboot C:\Windows /s D:

>DISKPART

>select disk 0

>list partition

>select partition 1

>active

>exit

6. I rebooted the VM and thankfully it booted into my previous Windows 7 environment.

The VHDs I had set-up under Windows Server 2008 R2 came across into Windows 8 Hyper-V without any problems. I now have my test VMs and my previous development environment all registered and running in Hyper-V:

image

Apart from the video driver issue, I’m very happy with Windows 8 so far and I love having Hyper-V alongside all my other apps.