The Microsoft .Net Framework 3.5 SP1 /2.0 SP2 Setup may fail without any error message or the setup may crash almost at the end. You can find the below error messages in the log file:

  MSI (s) (00:C8) [10:09:41:999]: Executing op: CustomActionSchedule(Action=CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8,ActionType=1025,Source=BinaryData,Target=InstallAssembly,CustomActionData=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\IEExecRemote.dll;8192)

MSI (s) (00:DC) [10:09:42:092]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI20D.tmp, Entrypoint: InstallAssembly

04/18/13 10:09:42 DDSet_Status: LANGID: 1033

04/18/13 10:09:42 DDSet_Entry: InstallAssembly started

04/18/13 10:09:42 DDSet_Status: CustomActionData: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\IEExecRemote.dll;8192

04/18/13 10:09:42 DDSet_Status: Loading mscoree.dll

04/18/13 10:09:42 DDSet_Status: Loading fusion.dll using LoadLibraryShim()

04/18/13 10:09:42 DDSet_Error: Failed to install assembly c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\IEExecRemote.dll. IAssemblyCache->InstallAssembly() returned -2147024614.

04/18/13 10:09:42 DDSet_Error: Failed to install assembly 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\IEExecRemote.dll' because of system error: The mounted file system does not support extended attributes.

 The error code -2147024614 means   ERROR_EAS_NOT_SUPPORTED # the mounted file system does not support extended attributes

 I captured a procmon trace http://technet.microsoft.com/en-in/sysinternals/bb896645.aspx and after reviewing the procmon, I found that the failure occurs when performing FSCTL_SET_REPARSE_POINT on the GAC directory for IEExecRemote.dll:

 11:03:52.4649173AM      MsiExec.exe      3888       FileSystemControl          328                C:\WINDOWS\assembly\GAC_MSIL\IEExecRemote\2.0.0.0__b03f5f7f11d50a3a EAS NOT SUPPORTED     Control: FSCTL_SET_REPARSE_POINT

The reparse points are used in hard links (and possibly directory junctions). A hard link is a directory entry that associates a name with a file on a file system. The Hard link is used between win32 assemblies in WinSxS and this particular assembly has a win32 manifest, so that could be why this is happening.  None of the previously successfully installed assemblies have win32 manifests, and I found none of them setting reparse points. So we tried to create a hard link on this drive and see if that is supported. In order to do the same I used the tool called junction.exe http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

 C:\>junction.exe c:\test1 c:\test

 Error setting junction for c:\test1:

The mounted file system does not support extended attributes.

 I also took a procmon trace while running the junction.exe and found the similar behavior like .Net Framework install 

  06:28:28.2800295 PM        junction.exe      3512       FileSystemControl           C:\test1                EAS NOT SUPPORTED     Control: FSCTL_SET_REPARSE_POINT      domain\user1                00000000:0001e183        0

 

It had the below stack:

 0              fltmgr.sys            fltmgr.sys + 0x24ca          0xf734c4ca          C:\WINDOWS\System32\Drivers\fltmgr.sys

1              fltmgr.sys            fltmgr.sys + 0x3f2a          0xf734df2a          C:\WINDOWS\System32\Drivers\fltmgr.sys

2              fltmgr.sys            fltmgr.sys + 0x48d2         0xf734e8d2         C:\WINDOWS\System32\Drivers\fltmgr.sys

3              fltmgr.sys            fltmgr.sys + 0x12693       0xf735c693          C:\WINDOWS\System32\Drivers\fltmgr.sys

4              ntoskrnl.exe      ntoskrnl.exe + 0x401d3 0x808401d3        C:\WINDOWS\system32\ntoskrnl.exe

5              ntoskrnl.exe      ntoskrnl.exe + 0x12c3f9                0x8092c3f9          C:\WINDOWS\system32\ntoskrnl.exe

6              ntoskrnl.exe      ntoskrnl.exe + 0x12c32e               0x8092c32e         C:\WINDOWS\system32\ntoskrnl.exe

7              ntoskrnl.exe      ntoskrnl.exe + 0x1397ef               0x809397ef         C:\WINDOWS\system32\ntoskrnl.exe

8              ntoskrnl.exe      ntoskrnl.exe + 0x33c3f  0x80833c3f          C:\WINDOWS\system32\ntoskrnl.exe

9              junction.exe      junction.exe + 0x294a    0x40294a             C:\1A1\Net Updates\19APR\Junction\junction.exe

 

The error message comes from STATUS_EAS_NOT_SUPPORTED => ERROR_EAS_NOT_SUPPORTED.  This is the error code returned by NTFS when you try to set a reparse point on a file that already has EAs on it.  (Reparse points and EAs cannot coexist on the same file.) Hence, I generated the list of file system filters present on the system.  So we ran the below command:

 

C:\>fltmc   filters

Filter Name                     Num Instances           Frame

------------------------------ ---------------------          ----------

EzWatch                                    1                              1

BHDrvx86                                  1                              1

eeCtrl                                       1                               1

SRTSP                                       3                               1

DfsDriver                                                      <Legacy>

SymEFA                                   3                                0

 

C:\>fltmc instances

 

Filter                         Volume Name                    Altitude                         Instance Name

--------------               ---------------------                 -------------                      -----------------------

EzWatch                        C:                                    370030                           EzWatch Instance

BHDrvx86                       C:                                    365100                              BHDrvx86

eeCtrl                             C:                                    329010                              eeCtrl

SRTSP                             C:                                    329000                              SRTSP

SRTSP             \Device\LanmanRedirector       329000                              SRTSP

SRTSP                        \Device\RdpDr                  329000                              SRTSP

SymEFA                         C:                                     260600                              SymEFA

SymEFA          \Device\LanmanRedirector       260600                              SymEFA

SymEFA                     \Device\RdpDr                  260600                              SymEFA

In the above list DfsDriver is the only filter driver which is owned by Microsoft and the remaining all are Third party filter drivers. We tried removing the filters one at a time and after each removal and tried the junction scenario until we find when it stops working. In order to remove the filter driver, I opened an Admin command prompt and ran the below commands:

 For EzWatch

sc config EzWatch  start=  disabled

 

For BHDrvx86

sc config bhdrvx86 start=  disabled

 

For eeCtrl

sc config eectrl start=  disabled

   

For SRTSP:

sc config srtsp start=  disabled

 

For SymEFA

sc config symefa start=  disabled

 

In this way I found that EzWatch was the file system filter driver which caused setting the junction though the file system was NTFS. In the same way it caused the .Net Framework Setup failure. Disabling EzWatch filter driver resolved the issue.

To re-enable them the process is similar, just use start=  system

For example: sc config bhdrvx86 start=  system  

Also we can make the above changes in the registry in this path for each driver by changing their start value from 0 (boot) or 1 (system) to 4 (disabled): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services