彻底解决就要从根源上找原因,“Error code 1603”是唯一的切入点,只有通过这个错误代码按图索骥才能找到引起.Net Framework 3.5安装错误的真正原因。在网上查这个代码的含义,发现msdn上这篇文章《How to locate the cause of error code 1603 in a verbose MSI log file》很有借鉴意义,有兴趣的朋友可以查看。其介绍的解决方案很简单,在当前用户的temp文件夹(XP默认是在“Document Setting/{用户名}/Local Settings/Temp”,具体可以利用命令行“echo %temp% ”查看temp文件夹是哪个目录)下找到你安装的log文件,安装的log文件名是dd_NET_Framework30_SetupXXXX.txt或dd_NET_Framework35_MSIXXXX.txt (具体取决于出错的具体原因,其中XXXX是一个四位数字),利用记事本或者是其他工具打开文件,查找“Return value 3”,找到之后,查看这之上的几行里面就有相应的错误记录。我log里面的错误是:
Error 1406.Could not write value PresentationHost.exe to key \SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ZONE_ELEVATION. System error . Verify that you have sufficient access to that key, or contact your support personnel.
根据这个提示信息可以知道,是注册表写入权限的问题导致了安装.NET Framework失败,问题的根源找到了,问题也就很好解决了。接下来就是修改注册表权限,运行“regedt32”(注意不要运行regedit,regedit不能修改注册表权限),找到“\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ZONE_ELEVATION”这个注册表key或其上一级的key:FeatureControl,右键选择“权限”,给everyone赋予完全控制权限。然后再次安装.Net Framework 3.5发现就可以安装成功了,接下来再安装VS2008一般就不会再有什么问题了。这里需要说明的是,启动VS2008安装程序毕竟比较麻烦,既然已经知道VS2008安装失败的原因是安装.Net Framework 3.5出错,就可以直接先安装.Net Framework 3.5,安装没问题后再启动VS2008安装程序。.Net Framework 3.5的安装包没有必要像网上说的那样去下载(.Net Framework 3.5下载和在线安装起来还非常麻烦),直接从VS2008安装包“\WCU\dotNetFramework”目录下拿离线安装包就可以了。
至此,安装.Net Framework 3.5出现错误而导致VS2008安装失败的问题已经可以彻底解决了。相信很多朋友安装.Net Framework 3.5时出现错误的原因和我是一样的,都是注册表权限的问题,按照本文的方法可以圆满解决。如果是其他原因引起的问题,按照本文的方法也能确定其具体原因,然后加以解决。